Programa da disciplina:

Unidade 1: Introdução

1. 1. Motivação
1. 2. Conceito de linguagem de programação (LP)
1. 3. Classes e gerações
1. 4. Escolha de uma LP
1. 5. Elementos sintáticos e semânticos
       1. 5. 1. Sintaxe x semântica
       1. 5. 2. Abstração e amarração
                  1. 5. 2. 1. Objetos de dados
                  1. 5. 2. 2. Tipos de dados
                  1. 5. 2. 3. Tipos abstratos de dados
       1. 5. 3. Controle de fluxo de execução
       1. 5. 4. Gramáticas livres de contexto
1. 6. Tratamento de exceções
1. 7. Tradutores de LPs: conceitos básicos

Unidade 2: Paradigma Imperativo

2.1. Introdução
2.2. Programação imperativa
      2.1.1. Variáveis, atribuição e repetição
      2.1.2. Comandos

Unidade 3: Paradigma Orientado a Objeto

3.1. Introdução
3.2. Classe e objeto
3.3. Hierarquia de classes: herança e reusabilidade
3.4. Programação orientada a objetos
      3.1.1. Método e mensagem
      3.1.2. Polimorfismo

Unidade 4: Paradigma Funcional

4.1. Introdução
4.2. Funções matemáticas e funções em LPs
4.3. Programação funcional
      4.3.1. "Pattern-matching"
      4.3.2. Avaliação postergada
      4.3.3. Funções de mais alta ordem
4.4. Estudo de caso

Unidade 5: Paradigma Concorrente

5.1. Introdução
5.2. Programação concorrente
      5.2.1. Processos
      5.2.2. Comunicação e sincronismo
      5.2.3. Cooperação e competição
5.3. Estudo de caso