Bacharelado em Ciência da Computação

ATENÇÃO: Este conteúdo foi publicado há 8 anos. Eu talvez nem concorde mais com ele. Se é um post sobre tecnologia, talvez não faça mais sentido. Mantenho neste blog o que escrevo desde os 14 anos por motivos históricos. Leia levando isso em conta.

Em primeiro lugar quero afirmar aos desavisados que o curso de Ciência da Computação hoje é, na maioria dos lugares, não mais do que o estereótipo indica: um curso de viciados em jogos. Até aí tudo bem; afinal cada um faz o que bem entende nos seus momentos de lazer.

Porém, eu acho que esse fato colaborou para esse bacharelado se transformar num reduto de usuários de computador, pessoas que leram “Computação” no nome e pensaram: “Eu gosto de mexer no computador, acho que este é o meu curso”.

Our new mobile lab
Creative Commons License photo credit: Christy Tvarok Green

Se já sabemos que funciona, pra que provar?

A realidade que percebo nas turmas, tanto na UFSC quanto no IME-USP, é decepcionante. Quando um professor dá um curso mais forte e teórico, vários alunos se espantam e reclamam que o curso não está formando para a prática. Pior: em muitas universidades o curso está mudando de cara pra satisfazer estes estudantes e não o contrário, como deveria ser. O IME-USP ainda tem um curso excelente, mas advinhe o que os alunos da minha turma aprenderam na primeira matéria do curso (chamada de Introdução à Computação)? Java e programação orientada a objetos. Eles aprendem classes e métodos antes de aprenderem operadores lógicos e laços. Na única aula que fui da disciplina, o professor falava bem do Java porque as classes e métodos podem ter acentos!!!

A situação é tão desanimadora que às vezes penso que o nome do meu curso deveria mudar para não pegar desavisados que não procuram o que é antes de entrar. Deveria ser algo como Bacharelado em Ciência dos Algoritmos, Bacharelado em Matemática Discreta, que tal? Não sei. Mas é obviamente uma besteira: o que precisa mudar são as pessoas. Tanto as que entram no curso, quanto as pessoas em geral, que pedem favores pra cientistas da computação pensando que eles são técnicos de informática. As pessoas precisam entender o que é o curso antes de entrar nele, precisam saber que Ciência da Computação é um ramo da matemática que existe desde muito antes da criação dos computadores digitais.

O primeiro parágrafo do texto da Wikipedia em português sobre Ciência da computação diz (e juro que não fui eu que editei!):

Ciência da computação é o estudo dos algoritmos e suas aplicações, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. Desempenha por isso um papel importante na área de ciência da computação a formalização matemática de algoritmos, como forma de representar problemas decidíveis, i.e., os que são suscetíveis de redução a operações elementares básicas, capazes de serem reproduzidas através de um qualquer dispositivo mecânico/eletrônico capaz de armazenar e manipular dados. Um destes dispositivos é o computador digital, de uso generalizado, nos dias de hoje, pelo custo reduzido dos componentes eletrônicos que formam o seu hardware.

Se o Java já tem um heap implementado para que reinventar a roda?

Edsger Dijkstra, um dos grandes cientistas da computação de nossa história, disse certa vez:

Ciência da Computação está tão relacionada aos computadores quanto a Astronomia aos telescópios, Biologia aos microscópios, ou Química aos tubos de ensaio. A Ciência não estuda ferramentas. Ela estuda como nós as utilizamos, e o que descobrimos com elas.

Precision knob?
Creative Commons License photo credit: gogoninja

É por tudo isso que abandono a sala ao ouvir que hoje em dia classes são mais importantes do que laços e nomear corretamente funções é mais importante do que conhecer algoritmos. (Sim, já ouvi isso de um professor dentro da universidade.)

Declaro-me a favor de um curso de Ciência da Computação onde os computadores sejam tratados apenas como ferramentas. Há outros cursos (técnicos) para quem não pensa assim e entra na universidade buscando uma formação sobre desenvolvimento ágil e produtividade. Não estou criticando quem busca isto. Porém, na minha opinião, estes definitivamente não deveriam entrar num curso chamado Bacharelado em Ciência da Computação.

30 comentários sobre “Bacharelado em Ciência da Computação

  1. Por sorte quando eu entrei no IME-USP a primeira linguagem ainda costumava ser C (embora digam que um professor chegou a dar Introdução a Computação em LISP).

    E eu sou um dos que acha absurdo a pessoa fazer Ciência da Computação por achar que é “mexer com computadô” e reclama de ter matemática. Uma amiga contou certa vez que, ao mencionar que fazia BCC pra alguém, o alguém perguntou “você faz website ?” -_-

    Na época do vestibular eu optei por Ciência da Computação justamente por saber que era Matemática e também fazia uso de computadores. (e eu sempre gostei de matemática, desde pequeno).

  2. Aqui na UFRJ a primeira linguagem é C, mas parece que estão começando a pensar em mudar pra Python…

    Eu apóio a idéia, porque uma linguagem de nível maior abstrai bastante coisa e permite que o professor ensine “programação”, e não passe um tempão explicando como compila, dizendo pros alunos que metade das coisas que tão escritas ali eles devem aceitar por enquanto porque tem que ser assim, obrigar os alunos a usar debuggers pra ver onde é a porra do segfault, essas coisas do C. Mais tarde, em outra matéria, eles aprendem essas coisas todas; agora é hora de aprender a resolver problemas.

    Confesso que me sinto um pouco desconfortável em provar tudo, mas sei que o curso que eu escolhi exige isso e tento me acostumar com a ideia.

  3. Também me sentia meio frustrado com o andar da carruagem no IME. As pessoas dizendo que o curso deveria ser mais voltado ao mercado, mais direcionado a prática. Pô, a prática só se aprende na prática. Um cara que sabe provar a corretude de um algoritmo aprende a programar em .Net com as duas mãos amarradas e vendado. Esses anos de faculdade tem q ser aproveitados pra aprender BEM a teoria.

    Por coincidência Tiago, esses dias escrevi um post-revolta mais ou menos tocando nesses pontos, mas voltado pro mercado de tecnologia:
    http://tisimples.wordpress.com/2009/03/29/computacao-x-tecnologia-da-informacao/

    (morrendo de curiosidade de saber quem foi o professor que acha legal o Java por ter acentos…)

    1. Concordo plenamente.
      Sobre o IME: se servir de consolo, nos outros cursos de Ciência da Computação que conheço o enfoque é ainda mais “Sistemas de informação”, e aqui ainda há um grupo de otimização combinatória fantástico…

  4. Concordo contigo, Tiago. Aqui na Federal do Ceará também senti muito disso no começo do curso (e tive a mesma frustração), mas depois percebi que esse pensamento é mais coisa dos alunos. Pelo menos os professores daqui ainda valorizam muito a teoria.

    belo post, parabéns

  5. Tiago, muito bom o desabafo,
    pra complementar o que tu falou, deixo
    uma frase que eu repito muitas vezes:
    “Eu gosto de Computação e de Computadores”
    Fica bem claro a diferença. =D

  6. Sobre linguagens… Acho que esse não é nem realmente o ponto, mas há um professor da UFPR que, numa discussão sobre a primeira linguagem de um BCC (numa aula equivalente a “Introdução a Computação”), defendeu o Pascal.

    A idéia dele é simples: o Pascal é uma linguagem que o aluno nunca vai usar (na vida real) e por isso vai se focar nos algoritmos e vai aprender realmente a programar, além de ser forçado a depois escolher e estudar uma linguagem por conta própria, sem a influência dos professores.

    De fato muita gente que começa aprendendo Java não aprende mais nada a vida inteira.

    Não é interessante?

  7. Excelente definição do que seria realmente a ciência da computação.Gostei bastante quando você falou que algumas universidades modificam o curso para ficar “a cara do aluno”. Nenhuma grade curricular deve estar dependente da boa vontade dos alunos de fazê-la. Gostou do curso, faça-o; não gostou, procure outro. :)

  8. Bom…não li todos os comentários mas gostaria de relatar (IMHO) que um dos principais problemas da alta desistência no curso de CC é a falta de conhecimento de quem entra. E para isso a SBC deveria agir e fazer uma campanha de informação do que é o curso do CC, SI ou Eng. da C. para alunos de ensino médio e sociedade em geral.

  9. Eu antes de escolher meu curso, li o material fornecido pela faculdade sobre cada curso como: Ciência da computação, Engenharia da computação e Sistemas de Informação.

    Com esse negócio de progressão continuada, cota e fraude em concurso público, o que temos são verdadeiros zumbis, onde nem sequer vontade de ler possuem.

    Quando o professor foi explicar sobre o sistema binário, uma garota disse ao professor que não estava entendendo nada, o professor pediu para especificar o que exatamente não estava entendendo. E adivinha o que ela não sabia? Potenciação.

  10. Excelente comentario, estou no 2 semestre do curso bacharelado em Ciencia da Computaçao, e meu cunhado que fez um cursinho de delphi e programa a 5 anos, um dia me perguntou o que eu tinha aprendido sobre programação, quando respondi varios assuntos relacionado a matematica, o mesmo me disse que é perda de tempo porque não usaria isso no trabalho, ele disse que uma amiga dele estava no 3 semestre de Ciencia da Computação e ainda não sabia nada de programação. Estão confundindo essa coisa linda chamada “Ciencia da Computação” com um “cursinho” de linguagem feito em 40 horas

  11. Tiago, eu estava vasculhando na internet a respeito de algoritmos e encontrei seu site de algoritmos, por sinal muito bom, mas tem algumas páginas que estão fora dor ar. Mas, não estou aqui para falar do seu site de algoritmos, eu venho aqui elogia-lo pelo brilhante texto sobre o nosso curso de Ciência da Computação, sou estudante do curso pela UFT(Universidade Federal do Tocantins) e realmente tudo que você expôs é a mais pura verdade, a maioria despreza o poder do C, a maioria acha que é besteira estudar cálculo 1, 2… geometria, ninguém ver que tudo parte de uma teoria e para se chegar na teoria tem que ter o conhecimento, e pra mim, o despertar do conhecimento está na matemática!

  12. Concordo com você, acho que para fazer ciência da computação tem que gostar de todo um conjunto, não é realmente ‘eu gosto de computador, vou fazer ciência da computação’, é muito mais do que isso…é matemática, é raciocio fácil…é algo interligado, acho que tem que ser apaioxonada por esse mundo. Aqui em Brasília tem a facudade IESB, e lá só tem fera, e o melhor, o curso da ciência da computação do IESB é considerado excelente pelo MEC, nota 5…a faculdade é muito boa e isso reflete no perfil dos alunos. Tem que ser apaixonado por isso e ter um ensino de qualidade, fato!

  13. A ciência da computação não é para qualquer um não, tem que saber pelo menos dominar a matematica e outras coisas que não são tão simples, e a cada dia que passa os cursos estão mais multidisciplinares, e é realmente o caso da faculdade IESB, que fica em Brasília…eles ganharam conceito 5 pelo mec, a nota máxima…isso num é para qualquer faculdade não, a qualidade dessa instituição é de dar inveja em todos os sentidos…eu vou me mudar em brasília para terminar meu curso lá, é mais credibilidade. =) Grande abraço, ótimo blog

  14. A Ciência da Computação é umas das áreas mais promissas para o futuro, e é muito bom ter interações assim, através de blogs, seminários e etc. Outra questão fundamental é fazer o curso em uma instituição de referência, eu indico o IESB, conheço gente formada por lá e que se sente muito feliz e realizado.

  15. Eu até complementaria que Eng. da Computação é um curso um tanto superior a CC, porque aprende-se a parte hardware e software, enquanto que CC só software. É como se fosse comparar pisiquiatria(pos de medicina, corpo+ a mente) e pisicologia(apenas a mente).

    ”Se nós já sabemos que funciona, pra que provar?”
    Algumas vezes é melhor saber de menos do que saber de mais, por falta de tempo.O exemplo é o livro de Spivak, que alem de ser desnecessario no curso perda-se muito tempo.

    Enquanto a matematica discreta, existem bons livros como:
    -Titu Andreescu, Zuming Feng – A Path to Combinatorics for Undergraduates. Counting Strategies
    -Titu Andreescu, Zuming Feng – Combinatorial Problems
    -Challenging Problems in Combinatorial Analysis
    -Counting_and_configurations._Problems_in_combinatorics,_arithmetic,_and_geometry

    São livros de grau insano de dificuldade, mais ao mesmo tempo não exige matematica rebuscada apenas criatividade, tempo e paciencia.
    Enquanto o ultimo é exelente pois tem teoria e pratica, e a pessoa vai adiquirindo conhecimento tecnico bastante aprofundado gradativamente.
    É da AMS(American Math Society) e Dover Publisher.

    1. Cara, vc falou bobagem… um bacharel em CC tem sim q conhecer de hardware. A EC eh basicamente BCC com materias de engenharia para o cidadão poder ter o CREA ao final do curso –‘

  16. A liguagem é vital no processo. Isso ficou claro. A tecnologia tem evoluído muito. Os campos de trabalho estão cada vez mais amplos e com isso conseguimos verificar a evolução da profissão e a demanda por profissionais competentes. Para acompanhar a evolução do mercado é necessário também que as pessoas busquem qualificação de referência. Uma bela dica é a graduação oferecida pelo IESB em Brasília, Ciência da Computação mesmo, é muito bem avaliada pelo MEC. Vale a pena conferir.

  17. Parabéns pelo blog!

    É difícil encontrar quem comente os assuntos do curso de Bacharelado em Ciências da Computação da forma como se deve.

    Esse texto que você postou me fez lembrar de quando fiz graduação numa Universidade particular de Belém do Pará.

    No primeiro dia de aula, numa reunião com o coordenador, ele estava explicando a turma ingressante o que era o curso.
    Então, ele comentou sobre as linguagens de programação, algoritmos…

    Eis que um aluno pediu a palavra e disse já sabia sobre windows, word e Excel e que ele achava que seria fácil, pois pensou ser um curso avançado das ferramentas básicas que ele disse conhecer.

    O coordenador respondeu a ele que passava longe disso e se ele não tinha habilidade com os conceitos fundamentais da computação e nem com matemática, era melhor ele desistir no começo.

    O rapaz desapareceu da turma…

    Enfim, isso é só o retrato da confusão que muita gente faz com o curso.

    Att,
    Michelle.

  18. Caro Thiago só para te informar que engenharia, apesar de computação, não é TI e sim infraestrutura, e a comparação com ciência da computação só vem reforçar ainda mais o grande problema da falta de informação que temos no Brasil, inclusive de pessoas que deveriam ser obrigadas a te-las.
    O cientista da computação trabalha num nível de abstração muito mais elevado utilizando matemática pura, já o engenheiro utiliza mais a matemática aplicada e não tem que ser um especialista em algoritmo.
    Só para você não esquecer:
    TI: Ciência da Computação, Sistemas de Informação
    Infra: Engenharias

  19. Caro Thiago só para te informar que engenharia, apesar de computação, não é TI e sim infraestrutura, e a comparação com ciência da computação só vem reforçar ainda mais o grande problema da falta de informação que temos no Brasil, inclusive de pessoas que deveriam ser obrigadas a te-las.
    O cientista da computação trabalha num nível de abstração muito mais elevado utilizando matemática pura, já o engenheiro utiliza mais a matemática aplicada e não tem que ser um especialista em algoritmo.
    Só para você não esquecer:
    TI: Ciência da Computação, Sistemas de Informação
    Infra: Engenharias

Deixe uma resposta