# Plano de Ensino - CEFET-MG

**MINISTÉRIO DA EDUCAÇÃO** **CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS** **DIRETORIA DE GRADUAÇÃO** **CAMPUS TIMÓTEO**

## 📘 Identificação da Disciplina

| Campo | Descrição | 
| ----- | ----- | 
| **Disciplina** | Tópicos Especiais em Fundamentos de Engenharia de Computação: Técnicas de Programação | 
| **Código** | GT07FEC005.1 | 
| **Início** | 08/2023 | 
| **Carga Horária Total** | 60 horas-aula | 
| **Semanal** | 04 aulas | 
| **Créditos** | 04 | 
| **Natureza** | Prática | 
| **Área de Formação** | Profissionalizante | 
| **Competências/Habilidades** | C06, C08, C09 | 
| **Departamento** | DECOMTM | 

### Aplicabilidade

* **Curso:** Engenharia de Computação
* **Período:** 5º
* **Eixo:** Fundamentos de Engenharia de Computação
* **Optativa:** Sim (X)

## 📝 Ementa

Estudo e aplicação de técnicas avançadas para análise e desenvolvimento de algoritmos eficientes. Abordagem sistemática de paradigmas algorítmicos com foco na otimização de recursos computacionais (memória, CPU e disco) e na resolução de problemas complexos.

## 🎯 Objetivos

A disciplina deverá possibilitar ao estudante:

1. Aplicar os fundamentos teóricos da análise de algoritmos.
2. Desenvolver algoritmos eficientes para problemas computacionais.
3. Implementar e avaliar diferentes estratégias algorítmicas.
4. Analisar e comparar algoritmos em termos de eficiência.
5. Resolver problemas práticos utilizando técnicas algorítmicas avançadas.

**Pré-requisitos:** Algoritmos e Estrutura de Dados I, Laboratório de Algoritmos e Estrutura de Dados I.

## 📑 Unidades de Ensino

| Unidade | Conteúdo | Carga Horária | 
| ----- | ----- | ----- | 
| **1** | **FUNDAMENTOS DA ANÁLISE DE ALGORITMOS**: Estudo dos limites reais de execução como uso de memória, CPU, disco e restrições de tempo, memória e I/O em ambientes computacionais. | 08h | 
| **2** | **TÉCNICAS DE PROJETO DE ALGORITMOS I**: Recursividade, Tentativa e erro (Backtracking), Divisão e conquista. | 08h | 
| **3** | **TÉCNICAS DE PROJETO DE ALGORITMOS I**: Programação dinâmica. | 08h | 
| **4** | **TÉCNICAS DE PROJETO DE ALGORITMOS II**: Algoritmos gulosos, Backtracking. | 08h | 
| **5** | **MATEMÁTICA COMPUTACIONAL**: Aritmética e álgebra; Análise combinatória; Teoria dos números. | 08h | 
| **6** | **ALGORITMOS EM GRAFOS**: Ordenação Topológica, Fluxo em redes e Árvores Segmentadas. | 12h | 
| **7** | **GEOMETRIA COMPUTACIONAL**: Conceitos fundamentais; Algoritmos geométricos básicos. | 08h | 
| **Total** |  | **60h** | 

## 📚 Bibliografia

### Bibliografia Básica

1. **CORMEN, Thomas H. et al.** *Algoritmos: teoria e prática*. 3. ed. Rio de Janeiro: Elsevier, 2012.
2. **ZIVIANI, Nivio.** *Projeto de algoritmos: com implementação em Java e C++*. São Paulo: Thomson Learning, 2007.
3. **FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico.** *Lógica de programação: a construção de algoritmos e estruturas de dados*. 3. ed. São Paulo: Pearson Prentice Hall, 2005.

### Bibliografia Complementar

1. **SEDGEWICK, Robert.** *Algorithms in C: parts 1-4: fundamentals, data structures, sorting, searching*. 3rd ed. Boston: Addison-Wesley, 1998.
2. **SEDGEWICK, Robert.** *Algorithms in C++: parts 1-4: fundamentals, data structures, sorting, searching*. 3. ed. Boston: Addison-Wesley, 1998.
3. **KNUTH, Donald Erwin.** *The art of computer programming: introduction to combinatorial algorithms and boolean functions*. Upper Saddle River, N.J.: Addison-Wesley, 2008.
4. **HOROWITZ, Ellis; SAHNI, Sartaj.** *Fundamentos de estruturas de dados*. Rio de Janeiro: Campus, 1987.
5. **MANBER, Udi.** *Introduction to algorithms: a creative approach*. Massachusetts: Addison-Wesley, 1989.