Computação 1 (21-1)

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:

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.