- Professor: Hugo Nobrega
- Monitor: A definir
- Grupo de discussões no Discord
- Pasta no Google Drive contendo todo o material produzido nas aulas (para acessar, você deve ser estar inscrito/a na disciplina e preencher este formulário)
Funcionamento da disciplina
O meio primário de comunicação entre os alunos, monitores e professores será pelo Discord, no grupo acima.
As aulas serão realizadas em modo síncrono, com aulas às terças e quintas de 10:00 às 12:00. Esses encontros serão gravados e disponibilizados para todos os alunos que queiram acompanhar em modo assíncrono. A escolha entre modo síncrono e/ou assíncrono é completamente livre para cada aluno, mas recomendamos que os alunos participem das aulas ao vivo sempre que possível.
Bibliografia
Faremos nossas próprias notas de aula, mas o material será principalmente baseado em:
- J. DeNero, Composing Programs (em inglês), disponível em http://www.composingprograms.com e também em formato PDF.
- PythonUFRJ (Python 3.7)
Listas de Exercícios e Trabalho Final
Lista | Data Limite de Entrega |
---|---|
Lista 1 | 3/12 às 18:00 |
Lista 2 | 14/12 às 18:00 |
Lista 3 | 21/12 às 18:00 |
Lista 4 | 7/1 às 18:00 |
Lista 5 | 18/1 às 18:00 |
Lista 6 | 28/1 às 18:00 |
Lista 7 | 4/2 às 18:00 |
Lista 8 | 11/2 às 18:00 |
Trabalho Final | 11/3 às 18:00 |
Cronograma planejado/registro de atividades
Data | Aula | Conteúdo | Links |
---|---|---|---|
ter 16 nov | sem aula | ||
qui 18 nov | Aula 0 | Parte 1: Apresentação da disciplina; Parte 2: Filosofia da disciplina; abstração; instalação do Python | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
ter 23 nov | Aula 01 Teórica | Parte 1: Calculando expressões aritméticas simples; variáveis; Parte 2: Funções | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
qui 25 nov | Aula 01 Prática | Parte 1: Definições de funções; Expressões; Avaliação de expressões | Quadro, Vídeo, Chat, Código |
ter 30 nov | Aula 02 Teórica | Parte 1: Dúvidas da Lista 01; Parte 2: Mais sobre definições de nomes (variáveis e funções); atribuições simultâneas; Parte 3: Escopos de nomes (globais/locais) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 2 dez | Aula 02 Prática | Parte 1: Discussão sobre a Questão 7 da Lista 1; Parte 2: Módulos (import); dados booleanos; comandos condicionais (if/else) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
ter 7 dez | Aula 03 Teórica | Parte 1: Comandos condicionais if/elif/else; Parte 2: Exemplos de funções com condicionais; ’else implícito' | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
qui 9 dez | Aula 03 Prática | Parte 1: Laço de repetição condicional (while); exemplo com sorteios aleatórios; Parte 2: Sequência de Fibonacci; primeiro Fibonacci maior que um número dado | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
ter 14 dez | Aula 04 Teórica | Parte 1: Controlando a execução de um laço (continue e break); exemplo com médias; Parte 2: Mais do exemplo com médias, máximos e mínimos; abstraindo para função de alta ordem | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
qui 16 dez | Aula 04 Prática | Parte 1: Dúvidas da lista 3; Parte 2: Strings (concatenação, repetição); função print; Parte 3: Exemplo (simulador de jogo de vôlei) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
ter 21 dez | Aula 05 Teórica | Parte 1: Dúvidas da lista 03; Parte 2: Comando de repetição sequencial (for); sequências (strings e ranges); Parte 3: Mais sobre sequências (len, in, indexação, fatiamento) | Quadro, Vídeo 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 23 dez | sem aula | Recesso de fim de ano | |
ter 28 dez | sem aula | Recesso de fim de ano | |
qui 30 dez | sem aula | Recesso de fim de ano | |
ter 4 jan | Aula 06 Teórica | Parte 1: Recapitulação de for, strings, range; Parte 2: Imutabilidade de strings; tuplas; Parte 3: Listas; mutabilidade de listas | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 6 jan | Aula 06 Prática | Parte 1: Recap de mutabilidade; funções de listas; Parte 2: Exercícios usando listas; list comprehensions (definição de lista por compreensão) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
ter 11 jan | Aula 07 Teórica | Parte 1: Mais sobre mutabilidade (listas dentro de tuplas); Parte 2: Exercícios de listas (mediana); Parte 3: Funções entre strings e listas; formatação de strings (f-strings) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 13 jan | Aula 07 Prática | Parte 1: Dúvidas da Lista 05; Parte 2: Mais detalhes sobre f-strings e exemplos; Parte 3: Exemplos de listas e f-strings: imprimindo matrizes na tela | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
ter 18 jan | Aula 08 Teórica | Parte 1: Recebendo dados do usuário (input); exemplo (jogo de dados); Parte 2: Exemplo de input (receber matriz); Parte 3: Exemplo de input (jogo da forca) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 20 jan | sem aula | Feriado | |
ter 25 jan | Aula 09 Teórica | Parte 1: Dúvidas da Lista 06; Dicionários em python; exemplo (contador de frequências); Parte 2: Definição de hasheabilidade; conjuntos em python (introdução); exemplo (sorteios até repetido) | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
qui 27 jan | Aula 09 Prática | Parte 1: Definições de dicionários e conjuntos por compreensão; funções de conjuntos; Parte 2: Exemplo: crivo de Eratóstenes (gerar o conjunto de primos de 2 até n) | Quadro, Vídeo 1, Chat, Vídeo 2, Código |
ter 1 fev | Aula 10 Teórica | Parte 1: Definições recursivas ’legais’ e ‘ilegais’; exemplos (Fibonacci recursivo); Memoização do Fibonacci recursivo; Parte 2: Exemplo de algoritmo recursivo: quicksort; quicksort aleatório; Parte 3: Exemplo de algoritmo recursivo: torres de Hanói | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código |
qui 3 fev | Aula 10 Prática | Parte 1: Analisando a execução de algoritmos recursivos; Parte 2: Definição recursiva de hasheabilidade; algoritmo recursivo para cópias profundas de listas | Quadro, Vídeo 1, Chat, Vídeo 2, Código |
ter 8 fev | sem aula | Aula cancelada | |
qui 10 fev | Aula 11 Teórica | Parte 1: Funções de Alta Ordem (HOF); exemplos; notação lambda; Parte 2: Usando HOF para ordenar sequências; encontrando elemento mais frequente em uma lista; análise de Dom Casmurro | Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código |
ter 15 fev | aula assíncrona | ||
qui 17 fev | sem aula | SIAc | |
ter 22 fev | (apenas caso haja demanda) | ||
qui 24 fev | (apenas caso haja demanda) | ||
ter 1 mar | sem aula | Carnaval | |
qui 3 mar | sem aula | Carnaval | |
ter 8 mar | Aula Dúvidas | Dúvidas sobre o trabalho final | Quadro, Vídeo |
qui 10 mar | sem aula |
Método de avaliação
Diversas listas de exercícios e (pelo menos) um trabalho de maior porte. As listas contarão 70% da nota final. A monitoria fará a correção das listas, sob supervisão e responsabilidade do professor.