Bem-vindo ao repositório criado para acompanhar as aulas e registrar os exercícios desenvolvidos durante o curso "Tópicos de Programação"(Técnicas Sistemáticas de Desenvolvimento de Programas).
O curso aborda técnicas sistemáticas para o desenvolvimento de programas, focando nos seguintes tópicos:
- Complexidade de algoritmos.
- Introdução a finitude e corretude de algoritmos
- Algoritmos recursivos.
- Fundamentos de Estruturas de Dados.
- Algoritmos de busca (busca linear e binária).
- Algoritmos de ordenação.(selectionsort, insertionsort, bubblesort, mergesort)
- Arvores
- Introdução a teoria dos Grafos
- Algoritmos em Grafos
- Computação Quântica - Uma Breve Introdução
- Primeiro ano completo de graduação em Ciências Exatas.
- Conclusão de um curso de Introdução à Programação.
- Conhecimento de uma linguagem de programação estruturada (C, Java ou Python).
- Estudantes interessados em pós-graduação em Ciência da Computação.
- Alunos ou programadores que desejam aprofundar seus conhecimentos em algoritmos e técnicas de programação.
- Carga Horária: 60 horas
- Horário: Segunda a Sexta-feira, das 19:00 às 21:00
- Período do Curso: 06/01/2025 a 14/02/2025
Este repositório será utilizado para armazenar os exercícios e códigos desenvolvidos ao longo do curso. A estrutura inicial está organizada da seguinte forma:
/curso_algoritmos
├── README.md
├── 01-Semana
│ ├── Introducao
│ ├── Nocoes de complexidade
| ├── Provas-matematicas
│ └── exercios
├── 02-Semana
│ ├── Sobre Invariantes
│ ├── Sobre Finitude e Corretude de Algoritimos
| ├── Algoritimos de busca sequencial versus binária
| ├── Ordenação por inserção - finitude, corretude e complexidade
| ├── Fundamentos de Estruturas de Dados Parte 1(apartir do slide 9)
| ├── Fundamentos de Estruturas de Dados Parte 2 - Listas Encadeadas
| ├── Fundamentos de Estruturas de Dados Parte 3 - Listas Duplamente Encadeadas(a partir do slide 10)
| ├── Fundamentos de Estruturas de Dados Parte 4 - Pilhas e Filas
│ └── exercios
| └── Finitude-Corretude&Complexidade(artigo e testes das implementações)
├── 03-Semana
| ├── Prova-Primeira-Avaliacao
│ ├── Aulas 11 e 12 - Fundamentos de Estruturas de Dados Part 5 - Grafos(Slides 1 a 26)
│ ├── Aula 13 - Fundamentos de Estruturas de Dados Parte 6 - Grafos e Arvores(A partir da página 6, Seção 1.2)
| ├── Intro teoria dos Grafos
| ├── Busca em profundidade (“Depth First Search”, DFS)
| ├── Busca em Largura (“Breadth First Search”, BFS)
| ├── Passeios em árvores binárias, pré-ordem
| ├── Passeios em árvores binárias, in-ordem
| └── Passeios em árvores binárias, pás-ordem
|
├── 04-Semana
│ ├── Introducao-Recursividade
│ ├── Recursividade
│ ├── Resolucao de recorrências, Método da Árvore de Recursão
│ ├── Resolucao de recorrências, Teorema Mestre
│ ├── Resolucao de recorrências, Método da Subistituição
│ └── exercios
├── 05-Semana
│ ├── Arvores e formas de de percorrer uma árvore
| ├── Aula 19 - Algoritmos em Grafos - Árvore Geradora Mínima(A partir do slide 20.)
│ ├── Aula 20 e 21 - Algoritmos em Grafos - Caminhos Mínimos
| ├── Aula 22 - Sobre a Computação Quântica - Uma Breve Introdução
| ├── Caminho Euleriano
| ├── Caminho mínimo
| ├── Algoritmo de Dijkstra
| ├── Algoritmo de Bellman-Ford
| ├── Arvore geradora mínima
| ├── Algoritmo de Kruskal
| ├── Algoritmo de Prim
│ └── exercios
├── Livros Usados Para Consulta
│ ├── ALGORITHMS - ROBERT SEDGEWICK - 1983
│ ├── AN INTRODUCTION TO THE ANALYSIS OF ALGORITHMS - Robert Sedgewick, Philippe Flajolet - 1946
└── Projetos
As linguagens utilizadas durante o curso serão C, Java ou Python. Para um melhor aproveitamento, recomendo as seguintes ferramentas:
- Compilador para C (GCC ou similar).
- Ambiente para Java (JDK 8 ou superior).
- Interpretador para Python (versão 3.8 ou superior).
- IDE ou editor de texto de sua preferência (Visual Studio Code, IntelliJ IDEA, PyCharm, etc..).
- Visualização de algoritmos e Estruturas de Dados(VisualAlgo https://visualgo.net/en).