Skip to content

Latest commit

 

History

History
237 lines (237 loc) · 19.2 KB

CRONOGRAMA.rst

File metadata and controls

237 lines (237 loc) · 19.2 KB
Semana Dia Atividade
1 19/01

Início das aulas – Apresentação do curso (síncrono)

  • Linguagens e tecnologias adotadas.
  • Métodos de avaliação.
  • Materiais suplementares.
21/01

Introdução ao Python I (síncrono)

  • Variaveis e tipos básicos.
  • Comandos básicos (if/for/while/def).
  • Strings
  • Compilador de Brainf*ck.
2 26/01

Introdução ao Python II (síncrono)

  • Ambientes do tipo notebook e interpretador.
  • Estruturas de dados: dicionários, listas e tuplas
  • Manipulação de strings
  • Lidando com erros
28/01

Laboratório de Python: Leitor de JSON

  • Especificação do formato.
  • Listas, dicionários e tipos atômicos.
  • Descida recursiva.
  • Testes automatizados.

Vídeo: https://www.youtube.com/watch?v=ub5nrnWyWvk

3 02/02

Programação orientada a objetos

  • Encapsulando estado.
  • Métodos de uma classe.
  • O parâmetro "self".
  • Métodos especiais.

Vídeo: https://www.youtube.com/watch?v=mr0MqOZEvaI

04/02

Combinadores de parsers I

  • Representação de um parser como função.
  • Operações atômicas de leitura.
  • Operações de segunda ordem: mapa, sequência e alternativa.
  • Lendo objetos atômicos.

Vídeo: https://www.youtube.com/watch?v=mJnVTIU7Bdg

4 09/02

Combinadores de parsers II

  • Outras operações de segunda ordem.
  • Operações recursivas e estruturas de dados.
  • Parser de JSON.
  • Opcional: DSL com sobrecarga de operadores.

Vídeo: https://www.youtube.com/watch?v=0MGpJAqr3N0

11/02

Gramáticas gerativas

  • Linguagens naturais vs formais.
  • Léxico, sintaxe e semântica.
  • Símbolos terminais e não-terminais.
  • Gramática e representação BNF.
  • Enumeração de expressões da linguagem.
  • Árvores sintáticas concretas e abstratas.
  • Gerador de lero-lero.

Vídeo: em elaboração

5 16/02

Gramáticas livres de contexto

  • Regras de produção.
  • Declarando regras da gramática utilizando o Lark.
  • Operadores estendidos.
  • Leitor de JSON.

Vídeo: https://www.youtube.com/watch?v=mr0MqOZEvaI

18/02

Derivações

  • Análise léxica e símbolos terminais.
  • Derivações intuitivas.
  • Estratégias Top-down vs bottom-up.
  • Redução à esquerda ou à direita.
  • Gramáticas ambíguas vs não-ambíguas.

Vídeo: em elaboração

6 23/02

Operadores

  • Operações matemáticas básicas.
  • Ordem infixa, sufixa e prefixa.
  • Precedência e associatividade de operadores.
  • Árvore sintática e avaliação de expressões.
  • Operadores como funções.

Vídeo: https://www.youtube.com/watch?v=OpRkhkqS6tg

25/02

Interpretador simples

  • Operações lógicas e hierarquia de operadores.
  • Chamada de funções.
  • Variáveis e ambiente de execução.
  • Execução condicional.
  • Listas de expressões.

Vídeo: https://www.youtube.com/watch?v=0G0axJCX-J4

7 02/03 Feriado: Carnaval
04/03

Estudo dirigido: Linguagem Twine (assíncrono)

  • Definições da linguagem.
  • Interpretação de funções.

Vídeo: em elaboração

8 09/03

Avaliação

  • Gramáticas livre de contexto e linguagens formais.
  • Interpretadores.
  • Etapas de análise sintática e compilação
11/03

Expressões regulares

  • Linguagens regulares vs gramáticas livres de contexto.
  • Expressões regulares.
  • Ortografia e léxico de uma linguagem.
  • Utilizando expressões regulares no Lark.
  • Estensões comuns para expressões regulares.

Vídeo: https://www.youtube.com/watch?v=qV8pvyWDo0I

9 16/03

Linguagens regulares

  • Ortografia e léxico de uma linguagem.
  • Linguagens regulares.
  • Expressões regulares.
  • Operadores não-regulares comuns.

Vídeo: https://www.youtube.com/watch?v=5K7-lFdz_2s

18/03

Laboratório de regex (síncrono)

  • Detecção de padrões.
  • Expressões regulares em ferramentas de código.
  • Regex101 e teste de padrões.
  • Palavras cruzadas.
10 23/03

Análise léxica

  • Tokens.
  • Implementando um analizador léxico com regex.
  • Analizador léxico no Lark.

Vídeo: https://www.youtube.com/watch?v=qfE9-723Lh0

25/03

Estudo dirigido: Compilador de Twine (assíncrono)

  • Usando expressões regulares no analizador léxico.
  • Representação interna.
  • Emissão de código C.

Vídeo: em elaboração

11 30/03

Autômatos

  • Introdução a autômatos.
  • Símbolos, estados e regras de transição.
  • Autômato determinístico finito (DFA).
  • Implementação de um DFA.
  • Autômato não-determinístico.

Vídeo: https://www.youtube.com/watch?v=xSufZUBt2iM

01/04

Autômatos não-determinísticos

  • Modelos de execução e representação de um NFA.
  • Implementando um NFA.
  • Regras epsilon.
  • Construção de Thompson.
  • Problemas com construções intuitivas para regex.

Vídeo: https://www.youtube.com/watch?v=P9wbMGj8hpA

12 06/04

Simplificando NFAs

  • Eliminação de transições epsilon.
  • Propagação de estados iniciais e de aceite.
  • Eliminação de estados desnecessários.
  • Conversão de um NFA para um DFA.
  • Tabela de conversão.
  • Exercícios.
Vídeos:
08/04

Descida recursiva e o LL(1)

  • Tipos atômicos (numerais, strings, etc).
  • Símbolos.
  • Operadores e delimitadores.
  • Descida como uma tabela de transição.
  • Implementação da tabela de transição.

Vídeo: em elaboração

13 13/04

Parser LL(1)

  • Construções FIRST e FOLLOW.
  • Construção da tabela de transição.
  • Gramáticas sem epsilon.
  • Gramaticas com epsilon.
  • Conflitos na construção.

Vídeo: em elaboração

15/04 Feriado: Paixão de Cristo
14 20/04

Linguagens de programação

  • História das linguagens de programação.
  • Paradigmas de programação.
  • Famílias de sintaxe.
  • Ambiente de execução e semântica de uma linguagem.

Vídeo: em elaboração

22/04 Feriado: Tiradentes
15 27/04 Entrega de trabalhos e exercícios
29/04 Revisão de notas