Desenvolvimento Guiado a Tipos (Q1.2024)

Undergraduate course, Universidade Federal do ABC, Bachelor of Science & Technology, 2024

Plano de Ensino

Discord

GADTs

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

RATutorial 1 [0, 4]Tutorial 2 [0, 6]FinalConceito
112019209642,568,5A
11201920941000F
11202232377000F
11202320804000F
112021305070,500,5F
11201922124000F
112018118413,558,5A
110026161,501,5F
11201810478033F
11202020516000F
112019211221,534,5F
11005315000F
11201920463123F
112021304814610A
11201722110303F
11201811373437B
11201810247202F
112019213153,569,5A
112018110581,501,5F
11201921451167B
11036114134F
110706164610A
11202020271044F
112019201383,525,5D
11202020923 00F

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 
CorretudeComplexidadeCorretudeComplexidade
[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.