Disciplinas

  • Complexidade de algoritmos

    Apresenta conceitos de modelos de computação e ferramentas para medida de desempenho de algoritmos. Discute técnicas de projeto eficiente de algoritmos: programação dinâmica, divisão e conquista, algoritmos gulosos, métodos de busca e ordenação e algoritmos para problemas básicos em grafos. Classes de problemas: P, NP, NP-Completa.

  • Compiladores

    Aborda técnicas, métodos e algoritmos utilizados no projeto de compiladores, incluindo a análise léxica, sintática e semântica, verificação de tipos, registros de ativação, representação intermediária, geração de código, análise de fluxo de dados, técnicas de otimização, gerenciamento de memória e compilação para linguagens de programação.

  • Autoria e Design para Internet II

    Engenharia de Construção de Sistemas Web e Engenharia de Software para sistemas Web. Plataformas para sistemas de internet (servidores de aplicação, Sistemas de bancos de dados, servidores http). Arquitetura WEB (client-server, submissões síncronas, submissões assíncronas (AJAX). Recursos (COTS) para sistemas comerciais web: gateways de pagamento, sistemas de análise de risco, CDNs, webservices em geral (correios, bancos, etc). Redes Sociais e integração com sistemas comerciais web (plataformas atuais e integração). Otimização de performance de sistemas web (render point, sequenciamento de funções, requests, load time). Marketing / Divulgação online (Google Adwords / Display Media / comparadores). Versionamento para dispositivos moveis. Engenharia Semiótica aplicada ao Design de Interfaces.

  • Linguagens de Programação

    A disciplina busca demonstrar que um mesmo problema, quando resolvido e/ou analisado por paradigmas de programação diferentes, podem gerar resultados muitas vezes irreconciliáveis. Daí a importância de se conhecer o máximo de paradigmas e linguagens possíveis, a fim de que se possa, diante de um problema, determinar o paradigma/linguagem mais apropriado, bem como os recursos básicos e avançados que cada um oferece. A disciplina busca trabalhar na prática com no mínimo uma linguagem de cada paradigma (principalmente as funcionais e lógicas - fora do cotidiano da grande maioria dos estudantes) a fim de fixar os aspectos e características de cada paradigma.