Título: Tópicos Especiais em Computação IV - Inf

Propaganda
Título: Tópicos Especiais em Computação VIII – Sistemas de Tipos
Código: INF???? Número de créditos: 04
Carga horária: 60 hs
Horário: seg/qua 10:30 - 12:10
Súmula/ementa: Esta disciplina tem por objetivo proporcionar a base necessária para o estudo de
características avançadas de linguagens de programação modernas tais como subtipos, polimorfismo
paramétrico, coleções genéricas, herança simples, herança múltipla, etc. Várias dessas características
estão presentes em linguagens como Java, C++, C#, Haskell e OCAML e fazem parte do componente
de uma linguagem de programação conhecido como sistema de tipos. Além de prover uma melhor
compreensão de mecanismos para programação genérica e reuso de código disponíveis em linguagens
a disciplina cobre também aspectos de projeto de sistemas de tipos. O curso começará com sistemas de
tipos simples, passando por subtipos, que constituem um componente fundamental de linguagens
orientadas a objetos. Ao final serão vistos também sistemas de tipos não convencionais com aplicações
em segurança, controle do uso de recursos e para linguagens de consulta e processamento de XML.
Pré-requisitos: Para um melhor aproveitamento da disciplina é recomendável que o aluno possua ou
conhecimentos básicos de semântica operacional e lógica proporcionado pelas disciplinas de Semântica
Formal N, e Lógica para Computação, ou conceitos básicos de linguagens de programação oferecidos
pelas disciplinas de Modelos de Linguagens de Programação e Compiladores.
Responsável: Álvaro Freitas Moreira
Objetivos: capacitar o aluno a compreender os princípios teóricos de sistemas de tipos e suas
implicações práticas em linguagens; proporcionar conhecimentos básicos para que o aluno possa
analisar o papel de um dado sistema de tipos em uma linguagem e também possa definir um novo
sistema de tipos ou uma variação de um sistema de tipos já existente.
Programa:
 Tipos, tipagem estática e dinâmica, segurança
 Núcleo de uma linguagem, extensões, formas derivadas
 Subtipos e orientação a objetos
 Tipos recursivos
 Tipos para programação genérica: polimorfismo, tipos universais e existenciais
 Algoritmos para inferência de tipos
 Tópicos avançados: exemplos de possíveis tópicos:
 Sistemas de tipos e segurança
 Tipos dependentes
 Sistemas de tipos para efeitos
 Sistemas de tipos para processamento de XML
Método de trabalho: aulas expositivas em sala de aula, exercícios e pequenos exercícios de
implementação para experimentar com características de linguagens de programação vistas na
disciplina. Estudo de características avançadas de linguagens tais como Java, OCAML e Haskell, Será
realizada uma prova na meio do semestre sobre os conteúdos básicos. A segunda metade do semestre
será dedicada ao estudo de alguns sistemas de tipos não convencionais.
Procedimentos e/ou critérios de avaliação: a avaliação será feita com base em :
 uma prova (na metade do semestre) sobre conteúdos básicos de sistemas de tipos,
 apresentação de trabalho realizado em grupo. O trabalho poderá ser sobre algum sistema de tipo
não convencional e sobre alguma característica avançada de algum sistema de tipos de uma
linguagem de programação, e
 participação em aula
A nota final N será calculada da seguinte forma:
N = Prova * 0.30 + Trabalho * 0,30 + Participação * 0,40
Alunos com N >= 6 estão aprovados. Alunos com N < 6 poderão recuperar somente a nota da prova.
Referências
[1] Types and Programming Languages, Benjamin Pierce, MIT Press, 2002.
[2] Advanced Topics in Types and Programming Languages, Benjamin Pierce, editor MIT Press, 2005.
[3] Concepts in Programming Languages. John Mitchell, Cambridge Univ Press, 2003
Download