Primeiro quadrimestre de 2016

Horário: 2a (21:00-23:00) e 4a (19:00-21:00)

Sala de aula: 209-0

Professor: Jerônimo C. Pellegrini

Sala do professor: S 805 (bloco B)

Email do professor: jeronimo.pellegrini ufabc edu br

Revisão Provas III e IV

Caros -- quem quiser revisar as provas 3 e 4, por favor me mande uma mensagem, que marcamos um horário!

Novidades

09/05 -- conceitos finais disponíveis. como não há conceito F, nào haverá exame. Boas Férias!
09/05 -- conceitos do T4 e contabilização da L4
05/05 -- notas de aula, versão 31, disponíveis
26/04 -- conceitos do T3 disponíveis
19/04 -- notas de aula, versão 30, disponíveis
17/04 -- notas de aula, versão 29, disponíveis
15/04 -- notas de aula, versão 28, disponíveis
10/04 -- Lista IV atualizada (o exercício 2 tinha problemas)
06/04 -- Lista IV disponível
05/04 -- notas de aula, versão 27, disponíveis
30/03 -- Conceitos do T2 e contabilização de L2 e L3
29/03 -- notas de aula, versão 26, disponíveis
29/03 -- notas de aula, versão 25, disponíveis
28/03 -- notas de aula, versão 24, disponíveis
27/03 -- notas de aula, versão 23, disponíveis
26/03 -- notas de aula, versão 22, disponíveis
24/03 -- notas de aula, versão 21, disponíveis (19 e 20 não existiram)
22/03 -- notas de aula, versão 18, disponíveis
19/03 -- notas de aula, versão 17, disponíveis
16/03 -- Lista III ligeiramente modificada (peguem de novo)
15/03 -- notas de aula, versão 16, disponíveis
14/03 -- Lista III disponível
14/02 -- notas de aula, versão 15, disponíveis
11/03 -- Prazo da Lista II adicionado
10/03 -- Conceitos do T1 e contabilização da L1
09/03 -- notas de aula, versão 14, disponíveis
08/03 -- notas de aula, versão 13, disponíveis
08/03 -- notas de aula, versão 12, disponíveis
07/03 -- notas de aula, versão 11, disponíveis
02/03 -- notas de aula, versão 10, disponíveis
01/03 -- notas de aula, versão 9, disponíveis
26/02 -- notas de aula, versão 8, disponíveis
25/02 -- notas de aula, versão 7, disponíveis
24/02 -- notas de aula, versão 6, disponíveis
24/02 -- Lista II disponível
23/02 -- notas de aula, versão 5, disponíveis
23/02 -- data de entrega da Lista I disponível (29/02)
23/02 -- datas das avaliações disponíveis
22/02 -- notas de aula, versão 4, disponíveis
18/02 -- notas de aula, versão 3, disponíveis -- agora com versão com 
         margens pequenas, para leitura em tela
18/02 -- Lista I disponível
17/02 -- notas de aula, versão 2, disponíveis
17/02 -- notas de aula, versão 1, disponíveis
16/02 -- notas de aula, versão 0, disponíveis
15/02 -- início do curso

Ementa

Semântica Operacional: estrutural e natural. Semântica Denotacional. Semântica Axiomática. Aplicação em demonstração de corretude. Noções rudimentares de semântica de programas concorrentes.

Requisitos

Programação Orientada a Objetos; Lógica Básica; Linguagens Formais e Automata

Informalmente: gosto por linguagens de programação, e sua descrição de forma abstrata.

Avaliação

  • Quatro provas, valendo 3 cada. Cada prova pode valer exatamente 0, 1, 2 ou 3.
  • Listas de exercícios, que valerão 0, 1 ou 2 na nota final.

O conceito final será dado pela regra a seguir:

  • n ∈ [0, 6)→F
  • n ∈ [6, 8)→C
  • n ∈ [8, 11)→B
  • n ∈ [11, 14]→A

Prova substitutiva

Somente para os casos previstos em lei!

Caso o aluno perca uma das provas e apresente justificativa, poderá fazer uma substitutiva no final do quadrimestre.

Exame

Alunos com conceito F terão direito a exame, valendo 14. O conceito final, neste caso, será dado pela mesma regra para as notas, mas usando (8n + 6e)/14 ao invés de n.

Datas das avaliações

  • P1: 02/03, 19:30
  • P2: 23/03, 19:30
  • P3: 13/04, 19:30
  • P4: 04/05, 19:30
  • S: 09/05, 21:00
  • E: 16/05, 21:00 (ninguém com F!)

Exercícios

Conceitos

Aqui!

Programa

Este programa está sujeito a mudanças simples. Grandes mudanças não devem acontecer.

  1. Revisão-relâmpago de linguagens formais
  2. Conceitos preliminares: sintaxe abstrata; notação a ser usada; indução estrutural.
  3. Uma linguagem-exemplo
  4. Semântica denotacional
  5. Semântica operacional (natural)
  6. Semântica operacional (estrutural)
  7. Semântica axiomática
  8. λ-cálculo sem tipos
  9. λ-cálculo tipado
  10. Concorrência

Bibliografia

Principal

Alguns livros relativamente fáceis:

  • Nielson, H. R., Nielson, F. Semantics with Applications: An Appetizer. Springer, 2007. [ 005.131 NIELse ]
  • Stump, A. Programming Language Foundations. Wiley, 2014. ( 978-1-118-00747-1 )
  • Winskel, G. Formal Semantics of Programming Languages. MIT Press, 1993. [ 005.131 WINSfo ] -- um pouco desatualizado, mas bom.

Cobrindo apenas semântica operacional há o livro de Maribel Fernández:

  • Fernandez, M. Programming Languages and Operational Semantics: An Introduction. College Publications, 2004. [ 005.13 FERp ]

Cobrindo apenas semântica denotacional há também o livro de Lloyd Allison -- infelizmente não temos na biblioteca (e vocês podem fazer o curso tranquilamente sem ele, sem problemas):

  • Allison, L. A Practical Introduction to Denotational Semantics. Cambridge, 1987.

Secundária

O λ-cálculo não mudou nos últimos 30 anos. Já a descrição da semantica de linguagens sim, passou por mudanças. Assim, exceto para o que diz respeito ao λ-cálculo, os livros novos podem trazer formulações diferentes (e melhores) que as dos antigos.

  • Reynolds, J. Theories of Programming Languages Cambridge, 1998. [ 005 REYt ]
  • Gunter, C. A. Semantics of Programming Languages: Structures and Techniques. MIT Press, 1992.a [ 005.13 GUNs ]. Mais denso, um pouco antigo, mas muito bom.
  • Dowek, Gilles; Lévy, Jean-Jacques. Introduction to the Theory of Programming Languages. Springer, 2011. ( ISBN: 978-0-85729-075-5 ).
  • Turbak, F., Gifford, D., Sheldon, M. A. Design Concepts in Programming Languages. MIT Press, 2008 [ 005.1 TURd ]
  • Pierce, B. Types and Programming Languages. MIT Press, 2002. [ 005.13 PIEt ]
  • Queinnec, C. Lisp in Small Pieces. Cambridge, 1996. [ 005.133 QUEL ] O Capítulo 5 trata de Semântica Denotacional.
  • Harper, R. Practical Foundations for Programming Languages. Cambridge, 2012.
  • Mitchell, J.C. Foundations for Programming Languages. MIT Press, 1991.
  • Stoy, J. E. Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory. MIT Press, 1981.
  • Gordon, M. J. C. The Denotational Description of Programming Languages: An Introduction. Springer, 1979/1984 (aparentemente reimpresso em 2013).
  • Slonneger, K.; Kurtz, B. Formal Syntax and Semantics of Programming Languages. Addison-Wesley, 1995.
  • Agha, G. A., Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press 1985.
  • Roscoe, A. W. The Theory and Practice of Concurrency. Prentice Hall, 1997.
  • Roscoe, A. W. Understanding Concurrent Systems. Springer, 2010.
  • Hoare, C. A. R. Communicating Sequential Processes. Prentice Hall, 2004 (1985).
  • Milner, R. Communication nad Concurrency. Prentice Hall, 1989. ( ISBN: 0-13-117984-9 )
  • Schneider, F. B. On Concurrent Programming. Springer, 2007.
  • Barendregt, H. The Lambda Calculus. Its Syntax and Semantics. College Publications, 2012.
  • Barendregt, H. Dekkers, W.; Statman, R., Lambda Calculus with Types. Cambridge, 2013.
  • Hankin, C. An Introduction to Lambda Calculi for Computer Scientists. College Publications, 2004.
  • Hüttel, H. Transitions and Trees: An Introduction to Structural Operational Semantics. Cambridge, 2010.
  • Caromel, D; Henrio, L. A Theory of Distributed Objects. Springer, 2005 [ 519.24 CAROth ] Também disponível em formato digital na UFABC
  • Stoltenberg-Hansen, Viggo; Lindström, Ingrid; Girffor, Edward R. Mathematical Theory of Domains. Camridge, 1994. ( ISBN: 978-521-06479-8 ) -- Sobre Teoria de Domínios, só para quem gostar.
  • Fiore. M. Axiomatic domain theory in categories of partial maps. Cambridge, 1996, ( ISBN: 0-521-60277-7 ). Para Matemáticos com interesse em Categorias.
  • Abramsky, S; Jung, A (1994). Domain theory (PDF). Em S. Abramsky, D. M. Gabbay, T. S. E. Maibaum (editores), Handbook of Logic in Computer Science. Oxford University Press. pp. 1–168. ( ISBN 0-19-853762-X ). (para Matemáticos)
  • Schmidt, David A. Denotational Semantics: a methodology for language development. Allyn and Bacon, 1986. Disponível na página do autor.

Para revisão de Lógica

  • Herbert B. Enderton. A Mathematical Introduction to Logic. Academic Press, 2001. [ 511.3 ENDEma2 ]
  • Christopher C. Leary. A Friendly introduction to Mathematical Logic. Prentice Hall, 2000. ( ISBN: 0-13-010705-0 )
  • Shawn Hedman. A First Course in Logic: an introduction to model theory, proof theory, computability and complexity. Oxford, 2004. [ 160 HEDf ]
  • Huth, M.; Ryan, M. Logic in Computer Science: modelling and reasoning about systems. Cambridge, 2004 ( ISBN 978-0-521-54310-1 )
  • Srisvastava, S. M. A Course on Mathematical Logic. Springer, 2008. PDF na UFABC
  • Rautenberg, W. A Concise Introduction to Mathematical Logic. Springer, 2010. PDF na UFABC

Para revisão de Linguagens Formais

  • Sipser, M. Introdução à Teoria da Computação. Thomson Learning, 2007. [ 511.3 SIPi2 ]