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.