Universidade ensina C ++ no estilo DOS, como lidar com isso [fechado]

19

Eu vinha programando há muitos anos, mas queria um diploma para me tornar mais empregável. Como já havia passado pela universidade, não escolhi um curso completo de ciência da computação por cinco anos, mas um programa de engenharia de software mais curto e mais orientado para a prática .

Eu esperava que pudesse se concentrar mais em habilidades concretas do que em teoria, mas ainda tinha a ideia de que universidades e professores gostam que as coisas sejam corretas, formais e acadêmicas. Ainda é ciência, certo? Errado - fiquei surpreso com o quão desleixados eram muitos cursos de TI.

Em um curso introdutório sobre C ++, fomos testados em clichês como "por que os globais são ruins" e "por que as constantes são boas", depois de escrevermos apenas 1-2 programas. Anedotas aleatórias sem contexto apropriado. Folhetos contido system(pause/cls), getche cabeçalhos de gosto conio.he iodos.h. Uma das tarefas era imprimir "caracteres ASCII" de 32 a 255 , com uma captura de tela mostrando uma tabela impressa usando a página de código do Windows-1252, mas sem mencionar a codificação.

Pergunta : quando um professor / universidade parece estar usando ferramentas e métodos inferiores e / ou desatualizados, e o conteúdo ensinado é limítrofe incorreto, como você lida com ele de forma construtiva e respeitosa, se é que existe?

Algumas respostas apontam que você deve olhar além da programação, pois é apenas uma ferramenta para aprender sobre tópicos como estruturas de dados e algoritmos. Eu concordo com essa idéia, mas neste caso não havia realmente nenhum plano por trás do estilo pobre. A maioria dos cursos ensinaria simplesmente outra "ferramenta" sem muita teoria de base ou qualquer "grande quadro". Muitas vezes parecia que eles foram rapidamente reunidos apenas para oferecer esse curso.


Eu fiquei com ele e finalmente me formei. A qualidade permaneceu bastante baixa por toda parte (com algumas ótimas exceções), e vários outros estudantes têm se queixado disso. Como esperado, aprendi muito mais com projetos pessoais e empregos de meio período do que com a escola, no entanto , o processo de conclusão da escola e o rótulo "estudante de software" parecem misteriosamente úteis em si mesmos!

Toerndev
fonte
2
Com base em minha própria experiência, você aprenderá melhor, mais rápido e mais barato estudando programação por conta própria e recebendo ajuda de fóruns. Não é incomum que o currículo da universidade esteja desatualizado. Na Rússia, Pascal ainda é ensinado em algumas universidades (embora eu goste do idioma e não veja isso como algo totalmente ruim).
WKS
@WKS: Eu acho que Pascal é uma linguagem de ensino muito boa para aprender sobre princípios (de programação processual) que não estão desatualizados. Os cursos universitários não devem perder tempo ensinando uma linguagem de programação específica, mas sim paradigmas de ensino (processuais, orientados a objetos, funcionais, lógicos etc.).
Giorgio
Sim, é claro que @Giorgio, a linguagem de programação escolhida como ferramenta de ensino não importa, no entanto, é de se esperar que as práticas de programação apresentadas sejam sólidas e atualizadas.
glampert
A maioria das universidades ensina estudantes de graduação com o objetivo de permitir que sejam bem-sucedidos na obtenção de um mestrado. A maioria dos programas de mestrado ensina estudantes de mestrado com o objetivo de permitir que sejam bem-sucedidos na obtenção de um doutorado. A maioria dos programas de doutorado visa ajudá-lo a se tornar um pesquisador de sucesso.
Rob P.
@ glampert: A programação procedural não mudou após a introdução do Pascal. Melhor ainda, o Pascal foi projetado como uma linguagem de ensino, por isso não possui muitos hacks que podem ser úteis na prática, mas são uma grande distração ao aprender coisas novas. Portanto, Pascal está atualizado no que diz respeito ao ensino de programação imperativa. Claro, pode-se querer ensinar outros paradigmas como orientada a objetos, funcional, lógica: então você tem que olhar para outras línguas, por exemplo, Python, Java, Haskell, Scheme, Prolog, ...
Giorgio

Respostas:

34

Matemática e programação são coisas totalmente diferentes. Matemática é ciência, programação é técnica. No mundo acadêmico, a programação é algo que você precisa saber para lidar com as coisas reais, a que é realmente interessante e importante - algoritmos.

Quem se importa se o compilador é antigo e você usa systemchamadas? Quem se importa se você tem Linux e não Windows? Bem, os professores não, isso é certo. E eles não deveriam, realmente. Não espere se tornar um programador profissional de cursos na instituição acadêmica. Não é para isso que você vai lá.

É verdade que o compilador que ele espera que você use seja antigo, e a suposição sobre o sistema operacional é anacrônica e problemática. Você pode aumentá-lo e talvez isso seja resolvido. Mas não porque o curso seja incompatível com a indústria, mas porque causa uma dificuldade imediata para os alunos. Vá encontrar o compilador antigo agora e instale-o no seu MacBook ...

Em geral, os estudos acadêmicos não devem ser desperdiçados ao aprender C ++ e Android; você deve aprender o material real de Ciência da Computação lá. Você não terá outra chance para isso. Android? Faça o download do Eclipse com o ADT e comece a trabalhar em casa, como eu. Não precisa de escola para isso.

Eu acho que não é bom esperar o desenvolvimento de técnicas das universidades. Especialmente as universidades de pesquisa. Você pode dizer que um lugar que oferece apenas bacharéis deve ser mais voltado para o setor, mas universidades de pesquisa - querem pesquisadores. Os professores estão procurando futuros alunos de pós-graduação e doutorados, não excelentes programadores. Então, acho que você deve definir seu nível de expectativas de acordo.

littleadv
fonte
3
Eu tenho um problema com sua resposta: "Em geral, os estudos acadêmicos não devem ser desperdiçados ao aprender C ++ e Android, você deve aprender o material real de Ciência da Computação lá". - Sem conhecer pelo menos o básico de uma linguagem de programação, o material CS não faz sentido e é muito fácil de aplicar da maneira errada.
Izkata
4
@ Martin e Izkata - programar no DOS em C ++ usando o compilador do século anterior não significa que você não conhece programação. Significa apenas que você está usando ferramentas desatualizadas - mas se precisar implementar árvores RB - quem se importa? Está desatualizado para a indústria, mas os programas são executados e fazem o que deveriam - isso é bom o suficiente.
Littleadv
3
@littleadv - o OP escreveu "que parece antigo de acordo com o que eu li". o que me sugere que ele precisou procurar em outros lugares além dos folhetos relevantes para descobrir que isso é obsoleto e não portátil. Claro, muitos, se não todos os compiladores, têm bibliotecas extras não padronizadas, mas se você lhes ensina sem que sejam informados de que não são padrão, acho que isso é ruim - e isso vale para coisas novas e antigas, e até para C ++ 11, uma vez que, no momento, o C ++ 03 é o mais recente e amplamente suportado padrão.
precisa saber é o seguinte
3
@littleadv - Bem, talvez tenhamos que concordar em discordar. Embora eu achasse que um cientista da computação precisa ser um pedante sobre os detalhes, e os poucos segundos necessários para apontar que algo não é padrão são consistentes com isso e de nenhuma maneira uma grande dificuldade. Como você se sentiria se um professor de computação gráfica usasse suas próprias anotações ad-hoc misturadas com a matemática e não apontasse isso? Afinal, é outro aspecto do mesmo problema - se outros cientistas da computação conseguem entender você. O código é lido pelas pessoas e pelos compiladores.
precisa saber é o seguinte
4
@littleadv - Eu nunca afirmei que o OP foi informado como conio.h é padrão - sugeri que ele pode não ter sido informado de que não era padrão e, mesmo assim, disse: "Se eles deixarem claro quais são os truques não portáteis, provavelmente ESTÁ BEM.". A maneira como fui ensinado até a ciência básica é que você usa termos padrão ou, se deve usar termos não-padrão, define o que eles significam. Nas minhas aulas de ciências da escola, mesmo usando centímetros era contra as regras - elas não são unidades de SI. Usar bibliotecas não-padrão parece, para mim, não ser diferente. O significado do código na ciência da computação deve ser inequívoco.
Steve314
19

Ciência da computação é programar o que é física para carpintaria.

Se você quer se tornar um carpinteiro, estudar física não fará com que isso aconteça. Ele ensinará muitas coisas interessantes, que você poderá aplicar ao seu trabalho, mas não ensinará como ser um bom carpinteiro. Para isso, você terá que aprender o ofício da carpintaria.

Da mesma forma, se você quiser se tornar um bom programador, terá que aprender o ofício da programação . Infelizmente, não há instituição para emitir qualquer tipo de certificação. Então, basicamente, isso é algo que você terá que fazer por conta própria, com qualquer ajuda que você possa encontrar. Para você, isso significa repetição e reflexão. Escreva muito código e volte a vê-lo. Também reserve um tempo para ler o código de outras pessoas. Considere participar de projetos de código aberto.

As universidades não se importam muito com a programação e muito menos com os detalhes que mudarão nos próximos anos. O que você vê na sua escola é que eles escolheram algum ambiente de programação (um ruim, mas isso não é tão importante) e agora o mostram, para que eles tenham um quadro de referência no qual possam ensinar várias técnicas de programação. Pode-se argumentar que o quadro de referência é ruim e que mesmo a linguagem é uma escolha estranha. Da perspectiva deles, isso provavelmente não importa, porque é escolhido arbitrariamente.

back2dos
fonte
2
Que tal Física é para Engenharia? Os programadores devem entender os princípios de CS para aplicá-los ao projetar programas da maneira que um engenheiro precisa para entender a física para projetar edifícios, aviões e processos químicos.
Jay Elston
3
@ JayElston: Física é engenharia, o que é ciência da computação é engenharia de software, que inclui análise, design, planejamento, implementação, controle de qualidade, etc. A programação em si é realmente mais a arte de fazer o material fazer o que você quer, enquanto a engenharia começa a descobrir o que você realmente deseja fazer.
back2dos
Ainda gosto de uma das citações de meus professores "Engenharia é a arte de aplicar a ciência para resolver problemas".
Chris O
1
@ Chris: Talvez, então, a ciência seja a arte de criar novos problemas.
JasonTrue
@JasonTrue: Bem, pode-se argumentar que a ciência é a arte de criar melhores problemas;)
back2dos
9

Não há nada de errado em aprender 'estilo DOS'. Tenho certeza de que muitos dos veteranos aqui começaram no DOS, ou mesmo com sistemas operacionais anteriores, escrevendo programas baseados em linhas, e se ajustaram perfeitamente. O mundo da computação muda tão rapidamente que eu não me prendia a detalhes específicos, como qual biblioteca foi usada para quê.

Na verdade, suspeito que tenhamos um mundo cheio de programadores que possam lhe dizer o que é injeção de dependência , mas que lutam para responder ao FizzBuzz , porque muitos programadores não passam muito tempo nesse nível básico.

Parece que esta é uma introdução à programação, portanto, essencialmente, não se preocupe. Aprenda o básico e você se sairá bem. Se você estiver interessado em outras plataformas, explore-as por conta própria. Isso é o melhor da programação.

GrandmasterB
fonte
5

Como você pode lidar com isso? Faça o download de e-books de programação ou transmita vídeos, tente os exemplos por si mesmo. Não dependa de seus professores. A programação é altamente aprendida por conta própria.

LEMUEL ADANE
fonte
1
Programar é como tocar piano. Você precisa de um mestre para ensinar como fazer as coisas e muita prática para fazê-las bem. Acredito que existem muito poucos pianistas famosos de autodidata.
7
Que analogia estranha, certamente existem muitos programadores de autodidata altamente qualificados.
Ocho
@ Slomojo True, e eu conheci alguns deles. Eles são uma raça estranha, excelente no que sabem. A dificuldade reside na amplitude dos problemas que encontram. Ocasionalmente, um problema tem um caminho muito mais curto para a solução quando você conhece algum canto da Ciência da Computação e, no entanto, essas pessoas talentosas tendem a continuar martelando na única maneira que conhecem, que eventualmente parece força bruta. Um exemplo, um problema que era "difícil de resolver" para um autodidata foi resolvido por um DFA em dois dias, com testes (no TCL / TK para inicializar!). Duas semanas depois, eles ainda não entendiam, com explicações.
Edwin Buck
4

Bem, muitas universidades têm professores de programação ruins. Fui a uma das melhores escolas de pós-graduação do meu país e aprendi bastante agachamento em programação. Eu acho que a maioria das universidades é assim, porque os programadores realmente bons optam por melhores empregos remunerados (não ensinando). Você deve pegar um projeto pequeno e tentar codificá-lo. Você pode obter dicas de vários fóruns como este. Essa pode ser a melhor maneira de aprender a longo prazo.

Jan S
fonte
Bons conselhos, é claro, concordo totalmente. É apenas o diploma ... :)
Toerndev
@gaidal: Yup! Isso é o que eu saí da escola grad - o nome da marca: P (embora eu esperava muito mais quando me juntei)
Jan S
2
A universidade não é aprender a programar, mas aprender os conceitos de linguagens de programação e, mais em geral, de ciência da computação. Quando eu tive que fazer meu projeto de sistemas operacionais na universidade, disseram-me: será em C, o livro está na biblioteca, pegue o livro e aprenda. A programação é sobre prática e não é tarefa da universidade ensinar isso a você.
Giorgio
1
Sobre empregos mais bem pagos, isso é verdade. Um amigo meu que leciona na universidade certa vez reclamou: "Nós ensinamos a eles como programar e depois eles ganham mais do que nós, deve ser o contrário!"
Giorgio
3

Penso que a Universidade deve ensinar conceitos abstratos de linguagens de programação, algoritmos, etc., e não deve ser o lugar onde você aprende programação: a programação é uma atividade muito prática e você só pode aprender fazendo.

Durante meu estudo, aprendi o básico da programação em Pascal, depois tive um projeto em C (tivemos que aprender a linguagem sozinhos) e depois fiz um curso sobre conceitos de linguagem de programação (procedural, orientada a objetos, funcional, lógica) . O folclore era que no MSDOS você tem ponteiros conio.h ou far, que você não possui em um sistema UNIX. Isso era o que os alunos discutiam sobre uma cerveja, não era algo que se discutia durante as aulas porque não era tão importante. O ensino universitário concentra-se no resumo, conhecimento geral e evita entrar nos detalhes: exemplos e detalhes são apresentados apenas para ilustrar o material geral.

O exemplo que você deu sobre ASCII versus Unicode e a biblioteca condos.h do MSDOS significa apenas que todo ambiente de programação tem sua maneira particular de fazer e organizar coisas. Se você programar em C ++ no Visual Studio, precisará usar outras bibliotecas, algumas das quais não são encontradas, por exemplo, no Linux. Portanto, se o curso fosse no Windows 7 / Visual Studio, algumas pessoas poderiam reclamar que seria melhor fazê-lo no Linux / GCC. Mas, na IMO, esse não é o ponto.

Então, acho que você deve tentar não se distrair com os detalhes e se concentrar nos conceitos gerais que estão sendo abordados pelo curso. Por exemplo, que na maioria das linguagens de programação você precisará de alguma biblioteca para implementar a E / S do console e que, dado um ambiente de programação, terá que resolver seu problema com as ferramentas disponíveis. Talvez isso pareça bastante óbvio para você e você tenha a impressão de que não está realmente aprendendo alguma coisa, porque já possui algum conhecimento prévio (isso pode acontecer), mas não tive a impressão de que você está fazendo um curso ruim.

Giorgio
fonte
Obrigado, lembrarei que você não acha suficiente dizer que é um curso ruim. Em uma nota lateral, eu não quis dizer que deveria estar no Linux, apenas que ele poderia fazer um esforço para informar os alunos sobre as diferenças e que existe um padrão.
precisa saber é o seguinte
Concordo com você que seria uma boa ideia informar sobre outros sistemas. Isso também depende da experiência do professor: eles podem se sentir desconfortáveis ​​ao falar sobre um ambiente com o qual não estão familiarizados. Por exemplo, estou em casa com Windows e Linux, mas evitaria o MacOS porque, mesmo que seja um sistema operacional muito legal, nunca o usei. Talvez você possa tentar perguntar se eles podem fazer uma breve comparação entre diferentes ambientes C ++: apenas alguns exemplos para ter uma idéia do que pode ser diferente e do que permanece o mesmo. Por exemplo, você pode jogar com sizeof no MSDOS e Linux.
Giorgio
2

As universidades estão dando as fundações. Uma vez forte, você pode construir arranha-céus. Aprendi BASIC, C e C ++ durante meus dias de faculdade. Mais tarde, quando eu projetei no Visual C ++, acreditava que era um mundo totalmente diferente. Mais tarde, percebi a diferença entre Framework e Idiomas.

Escolha uma universidade certa, onde eles oferecem o desenvolvimento focado do seu campo de computação desejado. O que pode ajudá-lo mais tarde em sua carreira.

sarat
fonte
2

Impressões cheias de system("");são realmente uma coisa muito boa! Estou chocado que as pessoas não sabem nada sobre essas funções hoje em dia.

system("pause"), e você se livra de todas as dicas das funções do getX. system("cls"), e você acabou de salvar uma página de código. system("mkdir foo")e você acabou de salvar 2 páginas de alocações de buffer, divisões de caminho, _makepath_ss, 256 limites de caminho, toneladas de erros e assim por diante.

Além disso, o código é tão simples que um macaco vai entender.

 if(!system("mkdir foo"))
     //booo and exit`

A escola de perversões polimórficas é o que deveria ser proibido por lei.

PS: Além disso, com todo o respeito, estou tendo dificuldade em aceitar que as pessoas aprendam C ++ com exceções e tudo virtual como uma BOA COISA, porque ela tem mais pegadinhas e minas terrestres do que você pode imaginar, e até Bjarne Stroustrup evangeliza exceções como algo super fácil e seguro, enquanto na realidade eles são uma mina nuclear.

Veja a análise sobre Misra-C ++ e JSF-C ++. E http://blogs.msdn.com/b/oldnewthing/archive/2005/01/14/352949.aspx . Estou com preguiça de encontrar todos os artigos restantes hoje.

Com tudo isso dito, eu sou desenvolvedor de c ++ e desfruto de muitos recursos e da linguagem como um todo.

Codificador
fonte
1
Não tenho certeza eu concordo que encorajar implicitamente desenvolvedores inexperientes para saltar direto para sistema sem qualquer ideia real das armadilhas é uma boa idéia ...
deworde
@deworde: É a mesma coisa que você escreve em um console, acho que você não pode tornar as coisas menos propensas a erros e seguras.
Coder
Sim, mas quando você o escreve em um console, sabe (por exemplo) onde você está, quem está executando, que tipo de máquina você está executando e o mais importante: POR QUE ESTÁ FAZENDO. O programa não está necessariamente ciente de nada disso, e alguém executando o executável não saberá que eles precisam verificá-los antes de executá-lo.
deworde
@deworde: Não exatamente, o comando EraseFile ainda herdará as permissões do processo, por isso é igualmente fácil mexer com qualquer um dos comandos.
Codificador
1

Minha sugestão pode soar por aí, mas ouça-me ... Troque de curso.

Na minha experiência na academia, o curso de Ciência da Computação era uma análise de nível muito baixo do que faz os computadores funcionarem. Você começou com um iniciador básico em C ++ para garantir que você sabia o que era um programa e os conceitos básicos de memória e computação por trás do programa, e então aprendeu montagem, conceitos de SO, engenharia elétrica, design digital, etc. este grau e procure trabalho com NVidia ou AMD, ou Lockheed; em algum lugar em que eles estejam criando um novo hardware, que precisa de alguém que possa entender esse hardware em um nível baixo o suficiente para escrever os drivers e controlar o software.

Parece que o que você quer é um curso de estudo que, na minha universidade, foi chamado de Gerenciamento de Sistemas de Informação. Esse é o curso que segui; ensinou programação em Java, VB.NET, C # e algum PHP e outros scripts da web ao longo do caminho. Também exigia cálculo (mas não no mesmo grau que CS), contabilidade, finanças, estatísticas, comunicação comercial, OO A&D, design de banco de dados e análise de sistemas. Tive um BBA em vez de um BS e tinha as ferramentas básicas para começar a trabalhar como desenvolvedor de software para Windows ou Web.

O que o curso de "Ciência da computação" o prepara para fazer depende muito de qual universidade está oferecendo. Parece que você está no caminho inicial para obter uma visão muito anacrônica e de baixo nível de computadores que não soa como o que você procura após terminar os estudos. Peço que você dê uma olhada na universidade e encontre um curso de estudo mais focado no tipo de trabalho em computador em que você deseja entrar depois da escola.

Não importa o que aconteça, seu curso de estudo começará com a criação de programas muito básicos, no nível do console. A linguagem não importa; o que eles estão ensinando é programação processual básica; como pensar em etapas suficientemente pequenas para que o computador possa segui-lo passo a passo (porque o computador não dá nada por garantido e não pode acompanhar a maioria dos saltos na lógica de um ser humano). A partir daí, você progredirá para a programação orientada a objetos (em vez de ter uma função longa que faz tudo, é muito mais sustentável ter vários "objetos" de código menores, que representam o estado e a lógica dos objetos do mundo real) e depois para programação orientada a eventos ("Não ligue para nós, ligaremos para você"; seu programa basicamente inicia, informa ao sistema operacional para configurar sua interface gráfica inicial,

KeithS
fonte
Obrigado, sim, vou considerar isso. Se sinto que está indo na direção errada, posso mudar mais tarde, os cursos básicos devem ser compatíveis entre os universos.
Toerndev
Cuidado com essa suposição; Mudei de especialização de CS para MIS, e nenhuma das matemática que eu já havia transferido porque a escola de administração tinha uma pista de matemática completamente separada. Inglês, ciências, humanidades, sim, isso foi transferido.
8302 KeithS
1

Os cursos de Ciência da Computação não ensinam a programação. Esta é uma caminhada no parque em comparação com algumas das programações que fiz no meu curso de CS.

O problema fundamental com isso, na minha experiência, é que não há praticamente nenhum lugar que o ensine a programar em um nível equivalente, para que você não tenha escolha alguma.

DeadMG
fonte
0

Eu acho que pode haver alguma confusão sobre o que e por que você está estudando.

Parece que você está estudando um programa introdutório de ciência da computação. Isso é direcionado a pessoas com experiência mínima que estão aprendendo o básico sobre como os computadores funcionam em um nível baixo.

Parece também que você é um programador semi-sério ou profissional. Você programa há 10 anos e se sente confortável em 3 idiomas. Parece que você sabe o que está fazendo pelo menos o suficiente para trabalhar como parte de uma equipe. Você se sente deslocado neste curso? Os outros alunos têm um nível de experiência ou habilidade semelhante ao seu?

O que você pretende tirar deste curso?

Você está logo atrás desse 'pedaço de papel'? Se for esse o caso, não pare de tentar conseguir um emprego enquanto estuda. Candidate-se a empregos, diga que você é um programador competente e está estudando porque precisa do pedaço de papel para conseguir um emprego. Se eles o contratarem, considere desistir - depois de ter um emprego profissional, você realmente não precisa mais desse pedaço de papel. Aceite um salário abaixo do normal, porque é melhor ser pago para aprender (no trabalho) do que pagar para aprender na escola - e você aprenderá mais rápido também. Depois de um ou dois anos, você estará em ritmo mais acelerado e poderá pedir um aumento salarial decente ou poderá encontrar outro emprego porque terá experiência.

Ou você está tentando aprender alguma coisa? Então pare de julgar seu professor. Como um professor memorável do ensino médio costumava dizer 'Sente-se e cale-se'. É quase garantido que o professor tem imensuravelmente mais experiência e conhecimento do que você e você pode aprender muito com ele. Se ele estiver indo muito devagar para você, tente obter crédito por esses cursos introdutórios com base em seu aprendizado e experiência anteriores.

Mas você está no caminho certo? Você também pode aprender muito com o professor de literatura ou com um professor de história ... não particularmente relevante. Talvez você não queira 'ciência da computação', mas sim habilidades mais práticas e do 'mundo real'. Tente 'engenharia de software'. Veja outras instituições para um curso mais focado.

Assim como quando você inicia um novo trabalho, uma aula ou curso de estudo pode ser muito difícil de revisar de fora. Você parece estar em um curso que não está dando o que você espera. Reconsidere suas opções.

Kirk Broadhurst
fonte
Obrigado, eu pensei sobre isso e acho que você está muito certo sobre essas duas opções. O primeiro é mais verdadeiro para mim, e procurarei empregos enquanto espero para ver se os cursos ficam mais interessantes. Na verdade, é uma educação em engenharia de software que escolhi em relação à ciência da computação, pois quero acelerar o processo mais cedo e aprender trabalhando. Talvez isso explique por que eu esperava um pouco mais de "habilidades do mundo real". :)
Toerndev
Apenas algumas observações do meu passado universitário: estudei um curso em que tínhamos a "programação 101" na programação, essa parte era irritante para mim. Mas outros cursos eram interessantes (física, mecânica, ...), mesmo que uma palestra seja entediante que pode não se aplicar a todo o programa e para as outras partes, pode valer a pena passar pela dor. Mas eu desisti. Enquanto isso, eu aprendi que, às vezes, esse papel seria benéfico, mesmo que não significasse que eu seria melhor no meu trabalho (eu tenho um bom trabalho, bom salário, ... por isso não é ruim ;-))
johannes
0

Eu pensei que muitas das respostas para essa pergunta eram decepcionantes. Eles voltaram ao velho argumento cansado sobre CS vs Programação etc. Pode ser que sim, mas parece-me que o curso em que o OP está iniciando também não está ensinando.

Eu estava na situação de já ter trabalhado como programador e estudado bastante antes de estudar CS em meio período na faculdade. Eu comprei com cuidado, mas geralmente achei o currículo uma perda de tempo. Além disso, eles não me deixaram pular os cursos, apesar de já terem experiência profissional na área.

Na minha experiência, uma proporção significativa de professores é bastante preguiçosa e usa um currículo desatualizado. Honestamente, parece que você está desperdiçando seu tempo. Eu questiono até se o preenchimento do diploma o ajudará a encontrar um emprego.

Duvido que você possa fazer muito para mudar as coisas em seu curso. Você pode complementá-lo com estudo por conta própria. Ou simplesmente esqueça tudo, estude o CS de forma independente e faça algumas certificações do setor também.

Devo acrescentar que não tenho idéia do valor do diploma no mercado de trabalho do seu país. Se o diploma em si é valioso, apesar do conteúdo, talvez seja necessário aceitar um currículo que está um pouco ausente.

Antonio2011a
fonte
Não vi isso antes. Fico feliz em ver alguém dizer exatamente o que eu estava sentindo sobre algumas respostas (seu primeiro parágrafo)! Sim, o ensino é bastante inútil, eu não frequento mais as aulas, mas apenas entrego os programas que preciso escrever. Faço do meu jeito (que geralmente é muito ruim, vindo de CL para C ++), encontro muitas coisas que não estão no currículo e peço conselhos aos amigos do programador e não ao professor. Dessa forma, é realmente divertido. Ainda espero encontrar um emprego antes de me formar.
Toerndev 2/11/11
0

Eles têm que atender aos alunos. A maioria dos estudantes não pode programar. Portanto, eles não são incentivados a se tornarem técnicos lá.

Eles também têm suas próprias áreas especializadas de pesquisa, mas não estão ensinando isso. De qualquer forma, muitos pesquisadores não são bons professores, então você pode se considerar sortudo se estiver ensinando coisas que você já conhece!

De qualquer forma, você parece não saber o que é ciência da computação. Não é sobre o que é prático para a indústria.

barlop
fonte
-6

Eu pediria (e depois insistiria) para retornar suas tarefas no padrão c ++. Isso é totalmente razoável, pois você não pode concluir as tarefas de outra forma.

Quanto ao estilo ruim; inevitavelmente, haverá algo disso para começar. Aprender a usar a biblioteca io padrão corretamente requer alguns recursos avançados do c ++, em particular modelos e iteradores. Eu posso ver por que um professor o faria usar funções io muito simples para começar. Eu não teria medo de perguntar sobre isso, porém, mostra entusiasmo e um pouco de luz nos seus olhos. Seu professor deve ser capaz de tecer sua pergunta em uma palestra futura, onde você (espero) conserta seus exercícios iniciais.

Eu deixaria assim mesmo. Embora o c ++ possa ser uma linguagem independente de plataforma, frequentemente não é. Aprender algumas funções do sistema Windows não é uma coisa ruim, principalmente se você se esforçar para fazê-lo de acordo com o padrão. Em algum momento, você encontrará o conio.hcódigo de outras pessoas - e é bom saber o que ele faz.

Tom
fonte
10
não, você recebe ferramentas para fazer o trabalho e é seu trabalho usá-las. Se você tem um emprego em que tudo que você tem é um XT de 15 anos executando o CP / M, exigindo que eles aceitem que o código do Windows 7 de 64 bits também não funcione, é melhor se acostumar com isso o mais cedo possível.
Jwenting
2
@ Ramhound Uma universidade deve possibilitar a conclusão do curso sem a necessidade de comprar equipamentos caros (como o sistema operacional Windows). É prejudicial.
Tom
3
@ Tom, se eu estivesse ensinando o Photoshop, esperaria que você comprasse o Photoshop (que é muito caro) e esperaria que você comprasse livros didáticos que são caros, não vejo onde isso é diferente. E aposto que existem muitos computadores no campus que ele poderia usar para a tarefa sem comprar o Windows (que francamente qualquer um que estuda CS provavelmente deve ter os dois de qualquer maneira, você nunca sabe onde vai acabar, pessoas programando na pilha da Microsoft de produtos não tendem a usar Linux).
HLGEM
3
@ Ramhound Mesmo que o professor não tenha dito explicitamente por que está usando rotinas simplificadas de IO baseadas em dos, provavelmente podemos adivinhar corretamente. Como Tom mencionou, as rotinas io do C ++ são relativamente complexas, de modo que esconder detalhes não é irracional em um curso de introdução. A decisão de usar uma biblioteca específica da plataforma baseada no Windows em vez de uma biblioteca baseada no * nix quase certamente se resume às suposições de que a maioria dos estudantes está usando o Windows não * * nix, e que mais usuários do Windows enfrentariam dificuldades para iniciar o * nix do que vice-versa.
Dan
5
@gaidal - as regras existem por um motivo. Se você começar a trabalhar em algum lugar e decidir que, em vez da biblioteca proprietária, usará o padrão porque "os padrões existem por uma razão" - você se encontrará desempregado muito rapidamente. Faça este curso como um exercício de conformidade com os padrões de codificação. Você não vai gostar sempre disso.
Littleadv