Disciplinas

Projeto e Análise de Algoritmos – Análise de Algoritmos, Paradigmas de Projetos de Algoritmos, Teoria da Complexidade de Algoritmos, Algoritmos em Grafos, Processamento de Cadeia de Caracteres, Algoritmos Paralelos e Introdução a Algoritmos de Criptografia.

Redes de Computadores – Redes de computadores, protocolos e serviços de comunicação. Meios físicos de transmissão. Arquitetura OSI. Arquitetura TCP/IP. Programação em redes, visando à comunicação de processos e transferência de dados.

Teoria da Computação – Máquinas de Estados Finitos: autômatos finitos determinísticos e não determinísticos Gramáticas e Linguagens regulares; Autômatos de pilha determinísticos e não determinísticos; Gramáticas e linguagens livres de contexto; Máquinas de Turing; gramáticas e linguagens sensíveis ao contexto; Linguagens recursivas; gramáticas irrestritas; Decidibilidade.

Banco de Dados – Conceitos Básicos; Modelagem de Dados; Linguagens; Projetos de Banco de dados; Banco de Dados de Objetos e Objeto-Relacional; Tópicos Avançados.

Computação Paralela – Fundamentos da computação paralela. Programação em memória distribuída com MPI. Programação em Memória compartilhada com processos. Programação em memória compartilhada com Pthreads. Programação em memória compartilhada com OpenMP. Programação híbrida com MPI e OpenMP. Memórias Cache e arquiteturas Multi-processador. Métricas de desempenho. Algoritmos paralelos.

Sistemas Distribuídos – Definições de sistemas distribuídos, modelos de sistemas, comunicação entre processos, comunicação em grupo, comunicação baseada em eventos, objetos distribuídos e invocação remota, sistemas peer-to-peer, segurança, ordenação de mensagens, sistemas de arquivos distribuídos, coordenação e acordo, transações distribuídas.

Computação Móvel e Ubíqua – Conceitos, caracterização e desafios. Serviços e aplicações. Comunicação sem fio. Tecnologias de comunicação sem fio. Protocolos de comunicação. Gerência de informação. Algoritmos distribuídos. Redes ad hoc. Redes de sensores sem fio. Redes Veiculares. Cidades inteligentes.

Redes Complexas – Introdução, Propriedades estruturais, Estruturas e modelos, Métricas, Comunidades e particionamento, Aplicações de redes em diferentes contextos.

Heurísticas e Metaheurísticas – Complexidade de algoritmos e complexidade de problemas. Problemas combinatórios e de otimização. Heurísticas construtivas: gulosas, aproximativas, aleatorizadas. Heurísticas de busca local: noções de vizinhança, espaço de busca e ótimo local e global. Metaheurísticas: GRASP, Busca Tabu, Simulated Annealing, Variable Neighborhood Search, Iterated Local Search, Multi start, Algoritmos Genéticos, Colônia de Formigas, Path Relinking. Heurísticas híbridas. Experimentação para heurísticas e metaheurísticas.

Aprendizado de Máquina – Sistemas de aprendizado: dados de treinamento, representação de conceitos, aproximação de funções; Aprendizado Supervisionado e não Supervisionado; Aprendizado de conceitos como busca no espaço de hipóteses; Métodos de Aprendizado: aprendizado baseado em Instâncias, árvores de decisão, redes neurais, redes Bayesianas, algoritmos genéticos, aprendizado por reforço; Aprendizado de Máquina e a Mineração de Dados: fases da mineração de dados; aplicação de aprendizado de máquina na mineração de dados.

Projeto de Sistemas de Software – Conceitos e Princípios de Projeto de Software Modular. Métodos e Estratégias de Projeto de Software. Padrões de Projeto. Estilos Arquiteturais. Arquiteturas para Família de Sistemas de Software. Verificação e Validação de Projetos de Software.

Mineração de Dados – Processo de descoberta de conhecimento. Conceitos básicos de coleta e engenharia de dados. Técnicas de mineração de dados. Tarefas em mineração de dados. Domínios de aplicação.

Processos em Ambientes de Desenvolvimento de Software – Processos de software. Processos baseados em planejamento. Processos ágeis. Confronto de processos ágeis com processos baseados em planejamento. Ambientes de engenharia de software assistidos por computador. Qualidade de software. Qualidade de software com foco em processos e em ambientes de desenvolvimento e manutenção de software.

Estágio em Docência – O Estágio de Docência visa iniciar o aluno a exercer atividades relacionadas ao ensino da Ciência da Computação.

Projeto de Dissertação – Elaboração da dissertação por meio da definição do problema e da metodologia. Orientação individual. Discussão coletiva das dissertações.

Tópicos Especiais em Sistemas de Computação – ementa variável

Tópicos Especiais em Inteligência Computacional – ementa variável

Tópicos Especiais em Sistemas de Informação – ementa variável