Sugestões para Melhoria do Currículo da Engenharia da Computação

De wikITA

Tabela de conteúdo

Situação do Currículo (2011)

Grade Curricular

Grade Curricular da COMP

Ementas

Ementas das matérias do ITA

Laboratórios

Laboratórios da COMP

Carga Horária

Sugestões Gerais

Sugestões Específicas para Disciplinas

CES-63 - Sistemas Embarcados

???

CTC-10 - Logica Matematica

Os seguinte tópicos importantes para Ciências da Computação poderiam ser adicionados à ementa: lógica intuicionista, natural deduction, curry-howard isomorphism, introdução a type theory, sequent calculus... Para compensar, outros tópicos menos importantes ou menos relacionados a lógica (e.g. lógica modal, teoria de números, grupos) poderiam ser retirados da ementa.

Natural Deduction (um proof system para deduçoes de teoremas) e type theory é o básico da teoria que está por trás de ferramentas de métodos formais como interactive theorem provers, usados para verificação de software.

Alem disso, atraves do curry-howard isomorphism, existe uma correspondencia entre provas em Natural Deduction e programas em simply-typed lambda calculus (que é a base teórica de linguagens de programacao funcional tipadas).

Natural Deduction, sem a adição de principios clássicos como excluded middle e double negation elimination, é um proof system para lógica intuicionista. Entao, pelos motivos acima (entre outros), é importante que um computeiro de concepção tenha alguma noção das diferencas entre logica intuicionista e clássica. A adiçao de principios classicos a natural deduction corresponde (atraves de extensoes do curry-howard isomorphism) a principios de programacao como continuations (e.g. Scheme's call/cc) e exceptions, por exemplo.

Sequent Calculus possui várias propriedades interessantes (cut-elimination, sub-formula property) que o torna versátil e adequado (ou ao menos mais adequado que Natural Deduction) para provar teoremas (proof-search) em diversas lógicas de forma automática.

Ir a fundo em todos esses tópicos seria demais para uma disciplina só, mas é importante dar-se uma noção de cada. Com a adição desses tópicos, talvez convenha em mudar o nome de "Lógica Matemática" para "Lógica Computacional".

CTC-15 - Inteligencia Artificial

Lisp poderia ser substituida por alguma outra linguagem funcional mais usada atualmente (e.g. Scala, Haskell, OCaml).

Topicos relacionados a engenharia de ferramentas de deducao automatica (sat-solvers, SMT-solvers, resolution theorem provers, interactive theorem provers (Coq, Isabelle) ) poderiam ser adicionados, substituindo topicos como regras de producao, redes semanticas e frames...


CES-22 - Programacao Orientada a Objetos

A ementa poderia ser atualizada de forma a levar em conta a tendência de integrar programação orientada a objetos com programação funcional. Considerando o espírito de vanguarda em tecnologia do ITA, é importante que os engenheiros formados estejam cientes dessa tendência e que até mesmo participem ativamente do desenvolvimento dela.

Um exemplo de linguagem que segue essa tendência é Scala, que é compatível com Java (roda em JVM e permite uso de APIs nativas de Java), mas introduz varios conceitos relativamente novos: imutabilidade, pattern matching, traits, actors, type parameters e type variance, implicits, closures...

O seguinte link apresenta exemplos de uso de Scala na indústria: http://en.wikipedia.org/wiki/Scala_%28programming_language%29#Software_using_Scala.


AEITA Europa

Ferramentas pessoais