- Professores: Bernardo Freitas e Hugo Nobrega
- Monitores: Luis Miguel Carmona, Daniel Carvalho e Rodrigo Pita
- Grupo de discussões no Telegram: https://t.me/joinchat/FFqmpCisFE0wNmMx
- Pasta no Google Drive contendo todo o material produzido nas aulas: https://drive.google.com/drive/folders/1hym7bor6u_lzPGGJXh23CCGABmZvQn1d?usp=sharing
Funcionamento da disciplina
O meio primário de comunicação entre os alunos, monitores e professores será pelo Telegram, no grupo https://t.me/joinchat/FFqmpCisFE0wNmMx
As aulas serão realizadas em modo síncrono, com aulas práticas às 2as de 10:00 a 12:00 e teóricas às 4as de 10:00 a 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 (atualizada em 21/7) | 27 de julho às 23:59 |
Lista 2 | 3 de agosto às 23:59 |
Lista 3 (atualizada em 3/8) | 10 de agosto às 23:59 |
Lista 4 | 17 de agosto às 23:59 |
Lista 5 | 24 de agosto às 23:59 |
Lista 6 | 31 de agosto às 23:59 |
Lista 7 (atualizada em 3/9) | 9 de setembro às 23:59 |
Lista 8 | 21 de setembro às 23:59 |
Lista 9 | 28 de setembro às 23:59 |
Lista 10 | 5 de outubro às 23:59 |
Trabalho Final | 18 de outubro às 10:00 |
Cronograma planejado/registro de atividades
Data | Aula | Conteúdo | Links |
---|---|---|---|
seg. 12 jul. | Aula 0 | Apresentação da disciplina, aspectos administrativos, etc | Quadro, Vídeo, Chat |
qua. 14 jul. | Teórica 1 | Parte 1: Primeiro contato com o Python (REPL e IDE); expressões; variáveis; comando de atribuição; Parte 2: Funções; comando de definição de função; estrutura e avaliação de expressões compostas | Quadro, Código, Vídeo parte 1, Chat 1, Vídeo parte 2, Chat 2 |
seg. 19 jul. | Prática 1 | Chamadas de função; Comando de definição de função; documentação; comentários; help; argumentos padrão | Quadro, Código, Vídeo, Chat |
qua. 21 jul. | Teórica 2 | Parte 1: Chamada de funções; Atribuição, import, nomes; Parte 2: Avaliando expressões dentro de funções, quadros | Quadro, Código, Vídeo parte 1, Chat 1, Vídeo parte 2, Chat 2 |
seg. 26 jul. | Prática 2 | Parte 1: Funções retornando funções, quadros; Tipos; Parte 2: Anúncios, dúvidas das listas | Quadro, Código, Vídeo parte 1, Chat 1, Vídeo parte 2, Chat 2 |
qua. 28 jul. | Teórica 3 | Parte 1: Booleanos; if, elif, else; print; fatorial; Parte 2: Funções recursivas e frames; Revisão de árvores de frames | Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 2 ago. | Prática 3 | Parte 1: Fibonacci, asserts, testes de funções; Parte 2: While, repetição e contadores; Fibonacci nova versão; Parte 3: Dúvidas: quadros, resto e quociente | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3 |
qua. 4 ago. | Teórica 4 | Parte 1: Dúvidas (float, retorno de múltiplos valores, quadros de funções, comandos, expressões); Parte 2: próximo_Fibonacci; uso de break ou return para interromper while | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 9 ago. | Prática 4 | Parte 1: Dúvidas da lista 3; Parte 2: Testes em documentação de função (doctests); mais sobre while (continue); simulador simples de jogo de vôlei | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 11 ago. | Teórica 5 | Parte 1: Dúvidas (doctests, break, continue); sequências: range e string; Parte 2: Loops sequenciais (for) | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 16 ago. | Prática 5 | Parte 1: Dúvidas; Parte 2: while vs for; Parte 3: Trabalhando com strings (concatenação; repetição; métodos de strings); exemplo com a Cifra de César | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3 |
qua. 18 ago. | Teórica 6 | Parte 1: Dúvidas, Listas e Tuplas; Parte 2: For em listas e tuplas, zip, descontrução de listas e tuplas | Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 23 ago. | Prática 6 | Parte 1: Dúvidas lista 5, memória; Parte 2: List comprehensions, mutabilidade de listas | Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 25 ago. | Teórica 7 | Parte 1: Mais discussão sobre mutabilidade (id, alias); Parte 2: Funções de Alta Ordem, HOF; A operação de composição de funções | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 30 ago. | Prática 7 | Parte 1: Dúvidas da lista, recap de HOF, Curryficação; Parte 2: Somatórios como funções de alta ordem; definições de funções simples usando lambda | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 1 set. | Extra | Parte 1: Dúvidas HOF, tuplas; Parte 2: Polinômios com raizes dadas; Parte 3: Frames e funções que retornam funções | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3 |
seg. 6 set. | Sem aula | Feriado | |
qua. 8 set. | Teórica 8 | Parte 1: print e f-strings; Parte 2: geradores, str e repr, formatos de números | Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 13 set. | Prática 8 | Parte 1: Dúvidas; input e conversão de valores; Parte 2: Programas em python; import; funcionalidades do Spyder | Código (aula), Código (demo de programa), Código (comp1lib) , Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 15 set. | Teórica 9 | Parte 1: Dúvidas da lista 8; Dicionários; Parte 2: Dict comprehensions; exemplo de uso de dicionário (histograma); histograma de Dom Casmurro | Quadro, Código (aula), Código (livro Dom Casmurro), Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 20 set. | Prática 9 | Parte 1: Chaves em dicionários; Hasheabilidade; Parte 2: Conjuntos | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 22 set. | Teórica 10 | Parte 1: Funções recursivas: Fatorial e ordenação; Parte 2: Ordenação como HOF | Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 27 set. | Prática 10 | Parte 1: Dúvidas L9 dicionários; Torres de Hanói: mecânica; Parte 2: Torres de Hanói: solução recursiva | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 29 set. | Teórica 11 | Parte 1: Dúvidas (lista 10 e “pass”); cópias “rasas” de dados mutáveis; cópias com profundidade fixa; Parte 2: Cópias “profundas” de dados mutáveis; from copy import deepcopy | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
seg. 4 out. | Prática 11 | Parte 1: Estimar phi e raiz(2) como exemplos de um mesmo procedimento de alta ordem; Parte 2: Comentário sobre tipos em Python; A função de raiz quadrada como um caso do estimador de alta ordem | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2 |
qua. 6 out. | Extra 2 | Parte 1: Discussão do trabalho final; Parte 2: Geradores; Parte 3: Trabalhando com geradores | Quadro, Código, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3 |
seg. 11 out. | Sem aula | Feriado | |
qua. 13 out. | ?? | (apenas sob demanda) | |
seg. 18 out. | Encerramento | ||
qua. 20 out. | Encerramento |
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.