Desenvolvimento Guiado a Tipos (Q1.2024)
Undergraduate course, Universidade Federal do ABC, Bachelor of Science & Technology, 2024
NOVOS PRAZOS DE ENTREGA:
- Tutorial 02: 09/05
- REC: 17/06 (pode entregar uma nova versão dos dois tutoriais)
Ementa
Objetivos Permitir a identificação de padrões comuns durante a fase de planejamento e desenvolvimento de sistemas e a manipulação de Tipos de Dados Algébricos e Tipos Dependentes de forma a permitir a criação de códigos concisos, genéricos e, em sua maioria, comprovadamente corretos.
Ementa Revisão de Programação Funcional, Functores - Monoides, Mônadas, Comônadas, Estruturas de Dados Funcionais, Tipos de dados algébricos generalizados, Tipos Dependentes.
Suporte e material auxiliar
- slides de aula no site: https://haskell.pesquisa.ufabc.edu.br/desenvolvimento-orientado-a-tipos/
NOTAS
RA | Tutorial 1 [0, 4] | Tutorial 2 [0, 6] | Final | Conceito |
---|---|---|---|---|
11201920964 | 2,5 | 6 | 8,5 | A |
11201920941 | 0 | 0 | 0 | F |
11202232377 | 0 | 0 | 0 | F |
11202320804 | 0 | 0 | 0 | F |
11202130507 | 0,5 | 0 | 0,5 | F |
11201922124 | 0 | 0 | 0 | F |
11201811841 | 3,5 | 5 | 8,5 | A |
11002616 | 1,5 | 0 | 1,5 | F |
11201810478 | 0 | 3 | 3 | F |
11202020516 | 0 | 0 | 0 | F |
11201921122 | 1,5 | 3 | 4,5 | F |
11005315 | 0 | 0 | 0 | F |
11201920463 | 1 | 2 | 3 | F |
11202130481 | 4 | 6 | 10 | A |
11201722110 | 3 | 0 | 3 | F |
11201811373 | 4 | 3 | 7 | B |
11201810247 | 2 | 0 | 2 | F |
11201921315 | 3,5 | 6 | 9,5 | A |
11201811058 | 1,5 | 0 | 1,5 | F |
11201921451 | 1 | 6 | 7 | B |
11036114 | 1 | 3 | 4 | F |
11070616 | 4 | 6 | 10 | A |
11202020271 | 0 | 4 | 4 | F |
11201920138 | 3,5 | 2 | 5,5 | D |
11202020923 | 0 | 0 | F |
Avaliação
A avaliação consistirá de $2$ tutoriais:
O primeiro tutorial será sobre algum dos seguintes conceitos básicos de Haskell: Tipos de Dados Algébricos, Mônadas, Comônadas, Recursion Scheme. Outros assuntos podem ser utilizados sob consulta.
O segundo tutorial deve ser sobre desenvolvimento guiado por tipos e necessariamente algo diferente do que foi visto em sala de aula: exemplo de aplicação, conceitos avançados, uso de tipos em outras linguagens, etc.
Os tutoriais serão avaliados em relação a corretude e complexidade. Esse tutoriais devem conter um código completo compilável e executável.
A composição da nota final será:
Tutorial 1 | Tutorial 2 | ||
---|---|---|---|
Corretude | Complexidade | Corretude | Complexidade |
[0, 2] | [0, 2] | [0, 2] | [0, 4] |
O conceito final ($C_F$) será obtido de acordo com a equação abaixo:
\begin{equation} C_F = \begin{cases} \textbf{F} ,& \text{se } N_F \in [0,0;5,0)
\textbf{D} ,& \text{se } N_F \in [5,0;6,0)
\textbf{C} ,& \text{se } N_F \in [6,0;7,0)
\textbf{B} ,& \text{se } N_F \in [7,0;8,5)
\textbf{A} ,& \text{se } N_F \in [8,5;10,0] \end{cases} \end{equation}
Entrega
- Tutorial 1: 25/03
- Tutorial 2: 29/04
A entrega deverá ser feita para o e-mail folivetti@ufabc.edu.br com o assunto “[Desenvolvimento Guiado por Tipos] - Tutorial X - Nome Aluno”, substituindo X por 1 ou 2 dependendo do tutorial. O corpo do e-mail deve conter: título do tutorial, nome do aluno, RA, link para o tutorial (se público) e/ou tutorial em PDF.
Recuperação
A resolução ConsEPE nº 182 assegura a todos os alunos de graduação com $C_F$ igual a D ou F o direito a fazer uso de mecanismos de recuperação.
A recuperação será feita através do envio de um novo tutorial que substituirá o tutorial 2.