Números Inteiros e Criptografia (21-2)

Funcionamento da disciplina

O meio primário de comunicação entre os alunos, monitores e professores será pelo Discord, no grupo listado acima.

As aulas serão realizadas em modo síncrono, com aulas teóricas às 3as e 5as de 8:00 às 10:00 e com aulas práticas/conversas/dúvidas às 2as de 13:00 às 15: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.

Bibliografia

Listas de Exercícios & Trabalho Final

Lista Data Limite de Entrega
Lista 1 20 de dezembro às 18:00
Lista 2 21 de janeiro às 18:00
Lista 3 31 de janeiro às 18:00
Lista 4 14 de fevereiro às 18:00
Trabalho Final 10 de março às 9:00

Regras de colaboração

É permitido (e até recomendado) que os alunos estudem juntos, porém cada aluno(a) deve escrever e entregar suas próprias soluções. Soluções iguais ou muito parecidas serão desconsideradas. Para evitar problemas, recomendo que você nem mesmo olhe soluções prontas de seus colegas, e também recomendo que ao discutir soluções com colegas, você não tenha as sua soluções abertas à sua frente.

Cronograma planejado/registro de atividades

Data Horário Aula Conteúdo Links
ter 16 nov 8-10 sem aula Semana de recepção
qui 18 nov 8-10 sem aula Semana de recepção
seg 22 nov 13-15 Aula 0 Parte 1: Introdução à disciplina e questões administrativas; Parte 2: Exemplos motivadores (cifra de César e cifra multiplicativa) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2
ter 23 nov 8-10 Aula 01 Parte 1: Inversos multiplicativos no mundo circular; Parte 2: Abstração em computação e matemática; expressões e variáveis em python Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
qui 25 nov 8-10 Aula 02 Parte 1: Definindo funções em Python; Parte 2: Erros; tipos numéricos Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
seg 29 nov 13-15 Aula 03 Parte 1: Definição de variáveis, atribuições simultâneas, escopo, alias; Parte 2: Tipos numéricos, booleanos Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
ter 30 nov 8-10 Aula 04 Parte 1: Dados Booleanos (True/False); comandos condicionais (if/elif/else); Parte 2: condicional (while) e sequencial (for) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
qui 2 dez 8-10 Aula 05 Parte 1: Recap de while/for; strings; indexação, fatiamento; Parte 2: Mais sobre strings; métodos de strings; cifra de César (início) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
seg 6 dez 13-15 Aula 06 Parte 1: Cifra de César (implementação); Parte 2: Tuplas e listas; mutabilidade Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
ter 7 dez 8-10 Aula 07 Parte 1: Mais sobre mutabilidade; hasheabilidade; Parte 2: Dicionários Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
qui 9 dez 8-10 Aula 08 Parte 1: Algoritmos, teoremas e definições em matemática; Parte 2: Provas em matemática; exemplo de uma prova Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
sex 10 dez 15-17 Monitoria 01 Monitoria 01 Vídeo, Chat
seg 13 dez 13-15 Aula 09 Parte 1: Dúvidas; Parte 2: Recíproca de um teorema; contrapositiva; Parte 3: Divisibilidade (definição e algumas propriedades) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
ter 14 dez 8-10 Aula 10 Parte 1: Mais sobre divisibilidade; mdc (definição); Parte 2: Algumas propriedades do mdc; algoritmo ingênuo do mdc; algoritmo de Euclides (introdução) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
qui 16 dez 8-10 Aula 11 Parte 1: Algoritmo de Euclides (enunciado completo e implementação); Parte 2: Terminação do algoritmo de Euclides; corretude (ideia) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
sex 17 dez 13-15 Monitoria 02 Monitoria 02 Vídeo, Chat
seg 20 dez 13-15 Aula 12 Parte 1: Dúvidas da lista 1; Parte 2: Corretude do Algoritmo de Euclides (ideia novamente) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Código
ter 21 dez 8-10 Aula 13 Parte 1: Corretude do Algoritmo de Euclides; Parte 2: Lema para a prova da corretude Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2
qui 23 dez 8-10 sem aula Recesso de fim de ano
seg 27 dez 13-15 sem aula Recesso de fim de ano
ter 28 dez 8-10 sem aula Recesso de fim de ano
qui 30 dez 8-10 sem aula Recesso de fim de ano
seg 3 jan 13-15 Aula 14 Parte 1: Recap do conteúdo; Parte 2: Prova do Teorema de Bézout; algoritmo de Euclides estendido (início) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2
ter 4 jan 8-10 Aula 15 Parte 1: Enunciado do Algoritmo de Euclides Estendido (AEE); Parte 2: Implementação do AEE; Parte 3: Terminação e Corretude do AEE Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
qui 6 jan 8-10 Aula 16 Parte 1: Estendendo o AEE para números negativos; Parte 2: Números primos e o Teorema Fundamental da Aritmética (TFA, enunciado); Parte 3: Prova de existência no TFA; algoritmo de fatoração em primos (enunciado e implementação) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
seg 10 jan 13-15 Aula 17 Parte 1: Comentários sobre a Lista 2 e sobre as regras de colaboração entre alunos; Parte 2: terminação do algoritmo de fatoração em primos; Parte 3: corretude do algoritmo de fatoração em primos Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
ter 11 jan 8-10 Aula 18 Parte 1: Resolução do exercício L2Q1c; Parte 2: Otimizando a fatoração: o menor fator de um composto é menor ou igual à sua raiz; Parte 3: Comentários sobre a dificuldade do problema da fatoração; Parte 4: Unicidade no TFA (ideia); a Propriedade Fundamental dos Primos (enunciado) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Vídeo 4, Chat 4, Código
qui 13 jan 8-10 Aula 19 Parte 1: Propriedade Fundamental dos Primos (prova); Parte 2: Unicidade no TFA (prova) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2
sex 14 jan 15-17 Monitoria 03 Monitoria 03 Quadro, Vídeo, Chat
seg 17 jan 13-15 Aula 20 Parte 1: Comentários sobre a Lista 02; Parte 2: Infinitude dos Primos (enunciado); Parte 3: Infinitude dos Primos (prova); Parte 4: Definições recursivas (motivação) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Vídeo 4, Chat 4
ter 18 jan 8-10 Aula 21 Parte 1: Dúvidas da Aula 20, definições recursivas (exemplos e discussão); Parte 2: Definições recursivas (definição oficial); Parte 3: Implementando definições recursivas em programação Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
qui 20 jan 8-10 sem aula Feriado
sex 21 jan 10-12 Monitoria 04 Monitoria 04 Quadro, Vídeo, Chat
seg 24 jan 13-15 Aula 22 Parte 1: Comentários sobre a Lista 2; Parte 2: Torres de Hanói (definição); Parte 3: Torres de Hanói (algoritmo recursivo); Parte 4: Torres de Hanói (implementação em Python) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Vídeo 4, Chat 4, Código
ter 25 jan 8-10 Aula 23 Parte 1: Dúvidas da Lista 3; Parte 2: O método de prova por indução; exemplo (soma dos naturais até n); Parte 3: Outro exemplo de prova por indução (fórmula de Binet para Fibonacci) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3
qui 27 jan 8-10 Aula 24 Parte 1: Recapitulação de indução; Parte 2: Prova de terminação do algoritmo de Hanói; Parte 3: Prova de corretude do algoritmo de Hanói; quantidade de movimentos feitos pelo algoritmo Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3
sex 28 jan 15-17 Monitoria 05 Monitoria 05
seg 31 jan 13-15 Aula 25 Parte 1: Dúvidas da Lista 3; Parte 2: Número de passos do algoritmo de Hanói; Parte 3: Relações; reflexividade, simetria, transitividade, relações de equivalência Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3
ter 1 fev 8-10 Aula 26 Parte 1: Recapitulação de relações; a ‘cara’ das relações de equivalência; Parte 2: Quociente por relação de equivalência; inteiros módulo n; aritmética modular (introdução) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2
qui 3 fev 8-10 Aula 27 Parte 1: Aritmética Modular (adição, subtração, multiplicação); Parte 2: Aritmética Modular (divisão); Parte 3: Aritmética Modular (não há potenciação) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3
sex 4 fev 15-17 Monitoria 06 Monitoria 06
seg 7 fev 13-15 Aula 28 Parte 1: Revisão de recursão e indução; Aritmética Modular (elevando uma classe de equivalência a um número natural); exemplos; Parte 2: Mais exemplos de exponenciação modular; Parte 3: Pequeno Teorema de Fermat (motivação e enunciado) Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
ter 8 fev 8-10 sem aula Aula cancelada
qui 10 fev 8-10 Aula 29 Parte 1: Dúvidas da Lista 4; Parte 2: Equivalência entre PTF1 e PTF2; Parte 3: Prova do PTF1 Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
sex 11 fev 15-17 Monitoria 07 Monitoria 07 Quadro 1, Quadro 2, Vídeo, Chat
seg 14 fev 13-15 sem aula SIAc
ter 15 fev 8-10 sem aula SIAc
qui 17 fev 8-10 Aula 30 Parte 1: Aplicação do PTF: cálculo de potências em aritmética modular; Parte 2: Aplicação do PTF: teste de primalidade; Parte 3: Pseudoprimos de Fermat, números de Carmichael Quadro, Vídeo 1, Vídeo 2, Vídeo 3, Código
sex 18 fev 15-17 Monitoria 08 Monitoria 08
seg 21 fev 13-15 Aula 31 Parte 1: Organização do final da disciplina; Parte 2: Recapitulação de resultados antigos usando a linguagem da aritmética modular; Parte 3: O teste de primalidade de Miller–Rabin Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3
ter 22 fev 8-10 Aula 32 Parte 1: Anúncios sobre o trabalho final e monitoria; Parte 2: Implementação e discussão do Teste de Miller–Rabin; Parte 3: A ideia do RSA Quadro, Vídeo 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
qui 24 fev 8-10 Aula 33 Parte 1: Como garantir b**(ed) = b mod pq; Parte 2: RSA; Parte 3: A conversão de textos para números; a escolha dos primos p, q Quadro, Vídeo 1, Chat 1, Vídeo 2, Chat 2, Vídeo 3, Chat 3, Código
sex 25 fev 15-17 Monitoria 09 Monitoria 09 Quadro, Vídeo, Chat
seg 28 fev 13-15 sem aula Carnaval
ter 1 mar 8-10 sem aula Carnaval
qui 3 mar 8-10 sem aula Carnaval
seg 7 mar 13-15 Aula 34 Dúvidas do trabalho final Vídeo, Chat
ter 8 mar 8-10 Sem aula (a princípio)
qui 10 mar 9-10 Final Atividade especial de encerramento

Método de avaliação

Teremos listas de exercícios aproximadamente a cada 10 dias, valendo nota, mas descartaremos as N (a definir) piores notas ao longo do período. Além disso, teremos um trabalho final.

Se a nota no trabalho final for menor do que 5,0, essa também será a nota final do/a aluno/a. Caso contrário, a nota final será a média aritmética entre a nota do trabalho e a média aritmética das notas das listas (após os descartes).

Não há provas, nem prova final.

A nota final mínima para aprovação é 5,0.

Os monitores farão a correção das listas, sob supervisão e responsabilidade do professor. O professor fará a correção do trabalho final.