Tiago Madeira

Pensamentos aleatórios

Bacharelado em Ciência da Computação

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”.

Crianças usando computador (crédito: Christy Tvarok Green/Flickr)

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.

Telescópio (crédito: gogoninja/Flickr)

É 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.

Comentários

Wendel

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).

Schneider

Eu acho que você está errado Tiago. Pra fazer computação é necessário saber jogar moedinha! O resto é resto! :)

Lucas

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.

Elcio Nakashima

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…)

Tiago Madeira

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…

Paulo Victor

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

André Puel

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

Tiago Madeira

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?

Adolfo Neto (prof. UTFPR)

Sim, é uma excelente ideia e um ótimo argumento. Eu comecei com Pascal. Ainda na faculdade aprendi (ao menos um pouco) Lisp, Prolog, C. Só depois de formado aprendi Java.

equipamentosindustriais

Trabalha com computador é tudo de bom! eu trabalho com isso e amo! fernanda!

monografia

É muito legal fica na fernte do computador, sabe é ótimo falar com os amigos! e para estudar então e tudo de bom!Isabella!

Vergonha « Blog do Tiago

[…] turma é do Bacharelado em Ciência da Computação no […]

Romulo Gadelha

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. :)

Leonardo Fernandes

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.

Wellington

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.

Edivaldo Silva

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

Kristiano Bastos Fernandes

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!

Digitalmx

Artículo muy informativo, me gustan sus ideas, espero se den una vuelta a nuestro blog tambien, buscamos escribir lo mas reciente en marketing y tecnología. Saludos!

Marcus

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!

William

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

Caio

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.

Tiago

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.

Wheepy

O Tiago deste comentário aqui não é o Madeira, é?

Tiago Madeira

Claro que não :) hehe

victor

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 –’

Caio

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.

Edilson

Cara… Me amarrei no teu blog… Me esclareceu mt coisa… Smp pensei q bcc fosse baseado em computador. Mas, ja vi q me enganei.

Michelle

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.

Manopac Júnior

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

Manopac Júnior

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

Obrigado! Seu comentário foi enviado e será publicado quando for aprovado.

Infelizmente ocorreu um erro ao enviar seu comentário.