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]Final 
112019209642,5   
112019209410   
112022323770   
112023208040   
112021305070,5   
112019221240   
112018118413,5   
110026161,5   
112018104780   
112020205160   
112019211221,5   
110053150   
112019204631   
112021304814   
112017221103   
112018113734   
112018102472   
112019213153,5   
112018110581,5   
112019214511   
110361141   
110706164   
112020202710   
112019201383,5   

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.