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)
, getch
e cabeçalhos de gosto conio.h
e 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!
Respostas:
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
system
chamadas? 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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
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.
fonte
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,
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.h
código de outras pessoas - e é bom saber o que ele faz.fonte