Dicas
This course follows a typical computer science degree from the first program to machine learning. It starts with programming fundamentals e discrete mathematics, then builds up: object-oriented design, data structures and algorithms, computer architecture, operating systems, databases and networks. Later parts cover algorithm design, the theory of computation and compilers, software engineering, and AI and machine learning.
Two habits matter more than any language. First, write and run code every week: reading a solution is not the same as producing one. Second, reason about cost. A university answer must say how the running time grows with the input, written as Big-O, and why the algorithm is correct, not only that it worked on one test.
Discrete maths can feel separate from programming. It is not. Prova por indução is how you show a recursive function is right, and graphs are behind maps, networks and compilers.
-
1
Fundamentos de Programação
- 1.1 O que este curso é e como usá-lo
- 1.1 Valores, tipos e entrada/saída
- 1.2 Seleção: escolher entre caminhos
- 1.3 Iteração: fazendo novamente
- 1.4 Funções: nomeando um trabalho uma vez
- 1.5 Coleções: listas, dicionários, tuplas, conjuntos
- 1.6 Arquivos e erros
- 1.7 Decomposição, teste e depuração
Carregando…
-
2
Matemática Discreta
- 2.1 Lógica e provas
- 2.2 Conjuntos, funções e relações
- 2.3 Indução e recursão
- 2.4 Contagem e combinatoria
- 2.5 Grafos e árvores
- 2.6 Probabilidade discreta
Carregando…
-
3
Fundamentos de Sistemas Computacionais
- 3.1 Codificação binária e de dados
- 3.2 Portas lógicas e blocos digitais
- 3.3 Visão geral de processador e memória
- 3.4 Instruções de máquina
- 3.5 Interface do sistema operacional
- 3.6 Caminho de compilação e execução
Carregando…
-
4
Programação Orientada a Objetos
- 4.1 Objetos e classes
- 4.2 Encapsulamento
- 4.3 Composição e herança
- 4.4 Interfaces e polimorfismo
- 4.5 Exceções e tratamento de erros
- 4.6 Testes e qualidade de projeto
Carregando…
-
5
Estruturas de Dados e Algoritmos
- 5.1 Análise assintótica
- 5.2 Listas, pilhas e filas
- 5.3 Hashing
- 5.4 Árvores e montículos
- 5.5 Grafos e travessia
- 5.6 Ordenação
- 5.7 Busca
Carregando…
-
6
Arquitetura de Computadores
- 6.1 Arquitetura do conjunto de instruções
- 6.2 Caminho de dados e controle
- 6.3 Pipeline
- 6.4 Hierarquia de memória
- 6.5 Entrada/saída
- 6.6 Paralelismo e desempenho
Carregando…
-
7
Sistemas Operacionais
- 7.1 Processos e threads
- 7.2 Escalonamento
- 7.3 Sincronização
- 7.4 Memória virtual
- 7.5 Sistemas de arquivos
- 7.6 Proteção e segurança
Carregando…
-
8
Bancos de Dados
- 8.1 Modelagem relacional
- 8.2 Álgebra relacional e SQL
- 8.3 Normalização
- 8.4 Índices e planos de consulta
- 8.5 Transações e concorrência
- 8.6 Segurança e governança de dados
Carregando…
-
9
Redes de computadores
- 9.1 Camadas e arquitetura
- 9.2 Camada de enlace e IP
- 9.3 Rotear
- 9.4 Transporte (TCP/UDP)
- 9.5 Protocolos de aplicação
- 9.6 Segurança de rede
- 9.7 Fundamentos de sistemas distribuídos
Carregando…
-
10
Projeto e Análise de Algoritmos
- 10.1 Recorrências e ferramentas de análise
- 10.2 Dividir para conquerar
- 10.3 Algoritmos gananciosos
- 10.4 Programação dinâmica
- 10.5 Otimização de grafos
- 10.6 Reduções e NP-completude
Carregando…
-
11
Teoria da Computação e Compiladores
- 11.1 Autômatos e linguagens regulares
- 11.2 Linguagens livres de contexto e teoria de análise
- 11.3 Computabilidade
- 11.4 Análise léxica
- 11.5 Análise sintática
- 11.6 Análise semântica e geração de código
Carregando…
-
12
Engenharia de Software
- 12.1 Requisitos
- 12.2 Arquitetura e projeto
- 12.3 Interação Humano-Computador e acessibilidade
- 12.4 Controle de versão e trabalho em equipe
- 12.5 Testes e integração contínua
- 12.6 Segurança e ética profissional
- 12.7 Projeto em equipe
Carregando…
-
13
Inteligência Artificial e Aprendizado de Máquina
- 13.1 Pesquisar
- 13.2 Conhecimento e raciocínio
- 13.3 Modelos probabilísticos
- 13.4 Regressão e classificação
- 13.5 Otimização e aprendizado
- 13.6 Avaliação e vazamento
- 13.7 Equidade e limitações
Carregando…