Lap-2024

Linguagens e Ambientes de Programação (Edição 2024)

O programa desta unidade curricular cobre os fundamentos do desenho das linguagens de programação utilizando a programação funcional em OCaml como veículo para a compreensão alargada dos conceitos.

Avisos

Referências

A principal referência para a unidade curricular é o livro “OCaml programming: Correct + Efficient + Beautiful” de Michael R. Clarkson e outros. O livro está disponível online de forma gratuita em OCaml programming: Correct + Efficient + Beautiful. Os docentes encorajam a leitura do livro e a realização dos exercícios propostos no mesmo, para além dos propostos nos materiais desta unidade curricular. O livro também dispõe de vídeos das aulas na universidade de Cornell que foram filmadas para o curso de CS3110, durante a pandemia.

Haverá referências durante as aulas a materiais de outros livros disponíveis de forma gratuita online a partir da página Books On OCaml. Nomeadamente:

Atendimento Docente

Com marcação prévia por e-mail.

Docente Horário E-mail
João Costa Seco 4ª-feira 17h (Gab. P2/1-II) joao.seco@fct.unl.pt
Mário Pereira 2ª-feira 14h (Gab. 239-II) mjp.pereira@fct.unl.pt
Fernando Birra 3ª-feira 16h (Gab. 245-II) fpb@fct.unl.pt
Diogo Almeida 5ª-feira 9h (Sala 121A-II) daro.almeida@campus.fct.unl.pt

Programa

O plano para as aulas teóricas é o seguinte:

Semana Data Tópicos Slides Exercícios
1 6/3 Apresentação. Logística e avaliação. A história e o futuro das linguagens de programação. slides  
1 7/3 Programação funcional. A linguagem OCaml. Expressões, Variáveis e tipos. Funções biblioteca. Input/Output básico. slides  
1 P Instalação das ferramentas. OCaml, Jupyter, VSCode + plugin. instruções exercícios
2 13/3 Declaração de nomes; declaração de funções, com e sem parâmetros; Avaliação de expressões por substituição; Funções como valores (primeira vez); Avaliação parcial de funções slides  
2 14/3 (Não houve aula)    
2 P Exercícios   exercícios
3 20/3 Funções como valores. Composição. Polimorfismo. Inferência de tipos. slides  
3 21/3 Tipo função; Polimorfismo; Inferência de tipos. slides  
3 P Exercícios   exercícios
4 27/3 Funções recursivas sobre naturais. Pensamento Indutivo vs. pensamento Iterativo. slides trabalho
4 28/3 Férias    
4 P Exercícios   exercícios
5 3/4 Tipos estruturados: produtos e registos. Exercícios. slides  
5 4/4 Tipos estruturados: Listas e funções recursivas sobre listas. Exercícios. slides  
5 P Exercícios. Entrega do primeiro trabalho (5/4).    
6 10/4 (Não há aula teórica. ExpoFCT)    
6 11/4 Tipos estruturados: Programação de ordem superior: map e fold. Exercícios.   exercícios
6 P Exercícios. exercícios  
7 17/4 (Não há aula teórica)    
7 18/4 Tipos algébricos, pattern matching. slides  
7 P Exercícios exercícios  
8 23/4 Tipos indutivos. Funções indutivas sobre tipos indutivos. (Terça que é Quinta)   exercícios
8 24/4 Exemplos de tipos indutivos: Árvores binárias de pesquisa, Árvores n-árias. exercícios  
8 27/4, 11h30 Primeiro teste teste resolvido  
8 P Exercícios ficha  
9 1/5 Feriado    
9 2/5 Sistema de Módulos slides exercícios
9 P Exercícios   exercícios
10 8/5 Apresentação do segundo trabalho slides trabalho
10 9/5 Mutabilidade de dados. Memoization slides  
10 P Exercícios.   exercícios
11 15/5 I/O Assíncrono, Concorrência, Promessas slides  
11 16/5 Functional Reactive Programming slides  
11 P Exercícios. Entrega do segundo trabalho (17/5).    
12 22/5 Esclarecimentos sobre o terceiro trabalho slides trabalho
12 23/5 Interpretadores slides exercícios
12 P Exercícios    
13 29/5 Exercícios    
13 30/5 Feriado    
13 P Exercícios, Entrega do último trabalho (31/5).    
14 3/6, 17h Segundo teste teste exemplo, teste resolvido  

(As datas dos trabalhos e testes são provisórias e podem ser alteradas.)