Lógica para Computação
Introdução: Origem, Revisão Matemática (Indução e Recursão); Lógica Proposicional e de Predicados: Linguagem, Semântica, Sistemas Dedutivos; Teoremas Principais: Corretude, Completude, Substituição, Forma Normal de Fórmulas; Decidibilidade e Complexidade; Aplicações à Computação.
Introdução a Probabilidade e Estatística
Probabilidade; Variáveis Aleatórias; Distribuições de Probabilidade: Binomial, Hipergeométrica, Poisson e Normal. Noções sobre Amostragem e Distribuições Amostrais. Estimação. Testes de Hipóteses. Regressão e Correlação.
Algoritmos e Estrutura de Dados II
Desenvolvimento e análise de algoritmos gulosos e baseados em programação dinâmica. Estruturas de dicionário em memória secundária. Tabelas Hash e suas aplicações. Tries e suas aplicações. Implementações e algoritmos de grafos.
Arquitetura de Computadores
Evolução e desempenho do computador, funções de um computador, memórias, dispositivos de entrada e saída, estrutura e função de um processador, conjunto de instruções : características, funções e modos de endereçamento.
Técnicas de Programação I
Conceitos básicos de orientação a objetos (OO): classe, objeto, atributo, método, instanciação, encapsulamento, herança, polimorfismo, sobrecarga, sobrescrita, ligação precoce (early binding), ligação tardia (late binding) e interfaces. Prática de programação em uma linguagem OO. Princípios de projeto OO: acoplamento, coesão e S.O.L.I.D. Entrada/saída. Tratamento de exceção.