MC336 - Paradigmas de Programação

Turma A

Segundo Semestre de 2009


Conteúdo desta página:

Notícias de Última Hora

Docente e Monitor

Dias, Horários e Local das Aulas

Dias, Horários e Locais de Atendimento

Na ausência de alunos, o horário de atendimento se encerrará às 18h:30h. Caso deseje usar o horário de atendimento, compareça à sala indica até às 18:30h.

Não haverá horário de atendimento nas semanas das provas nem do exame.

Atendimento via Email

As dúvidas devem, preferencialmente, ser sanadas em sala de aula ou pessoalmente nos horários de atendimento. Use o atendimento via email apenas como último recurso.

Caso necessite enviar um email com questões relativas à disciplina, este deve ser enviado simultaneamente ao professor e ao monitor e deve conter no subject/assunto o texto "[MC336]" seguido do motivo da mensagem. Exemplos:

Em caso de problemas relacionados a códigos de programas, a mensagem deve conter a explicação completa do problema, a indicação do trecho do código onde aparentemente encontra-se o problema e o programa deve ser enviado em anexo.

Todas as mensagens de alunos devem ser assinada com nome completo e RA.

Mensagens que atendam todas as especificações acima serão respondidas em até 48h, respeitando o horário comercial, de segunda a sexta, das 8h às 18h.

Não haverá atendimento via mensagens instantâneas (MSN, Gmail Talk, etc).

Ementa e Programa da Disciplina

Ementa

Visão comparativa de paradigmas de programação. Programação funcional, lógica e orientada a objetos.

Programa

  1. Programaçãoo Lógica (Prolog): fatos, regras, inferência. Modelo de execução. Listas, operadores e predicados primitivos para números e listas. Cut. Estruturas de controle. Outras linguagens lógicas.

  2. Programação Funcional (Lisp): ênfase em recursão e modularidade; ausência de atribuições, efeitos colaterais em geral e controle de fluxo. Escolha de uma linguagem funcional para ilustrar suas características em relação a tipos, modo de avaliação de expressões e argumentos, operações primitivas, estruturas de dados, funções de funções, entrada e saída de dados.

  3. Programação Orientada a Objetos (Java): abstração de dados, objetos, classes e tipos, herança, hierarquias de generalização/especialização, hierarquias de agregação/decomposição, polimorfismo, classes abstratas, interfaces, pacotes/módulos, tratamento de exceções, metaclasses.
Downloads

Avaliação

O curso será dividido em três linguages: Prolog (L1), Lisp (L2), e Java (L3).

A avaliação de cada linguagem será constituída de uma prova (P) e de um projeto baseado em campeonato (C).

Ao longo do curso deverão ser implementados jogadores em Prolog, Lisp e Java, que se enfrentarão em campeonatos.

O campeonato oficial de cada linguagem é um período de 8 dias consecutivos onde serão realizados tantos campeonatos quanto possível (veja datas abaixo). As submissões de jogadores estarão liberadas pelo menos 2 semanas antes do início do campeonato oficial. Cada aluno poderá realizar quantas submissões desejar, antes e até mesmo depois do ínicio do campeonato oficial. Não serão aceitas submissões após o encerramento dos campeonatos oficiais.

A nota do campeonato será dada de acordo com o desempenho dos jogadores em todas as partidas campeonato oficial, sendo assim, para concorrer a nota máxima, os alunos devem submeter seus jogadores antes do início do campeonato oficial.

Ao final do semestre será disputado um "Mega-Campeonato" com os jogadores implementados nas três linguagens. A nota de cada aluno neste último campeonato será dada pela média geométrica das notas obtidas por cada um dos seus 3 jogadores (em Prolog, Lisp e Java). A nota obtida no "Mega-Campeonato" será utilizada como bônus (B) ao fim do semestre. Não haverá submissões específicas para o "Mega-Campeonato", ou seja, apenas os jogadores submetidos para os campeonatos de Prolog, Lisp e Java poderão participar deste último campeonato.

Veja maiores informações sobre o jogo e o campeonato.

A nota de cada linguagem será dada pela fórmula:

A nota final antes do exame (N) será calculada pela média geométrica simples das três linguagens utilizando-se a seguinte fórmula:

Se N < 5, o aluno terá direito a fazer o exame. O exame será composto de duas partes. A primeira parte será composta por 3 questões, onde serão solicitadas implementações de predicados, funções e classes, respectivamente, em Prolog, Lisp e Java. A primeira parte do exame terá peso 2/3 e sua nota será calculada pela média geométrica simples entre as três primeiras questões. A segunda parte do exame terá peso 1/3 e será composta de uma ou mais questões, sendo que sua nota será calculada pela média aritmética simples entre as questões da segunda parte.

A nota final da disciplina (F) após o exame (E) será calculada pela fórmula:

Observações:

  1. Não haverá provas ou projetos substitutivos.
  2. As provas e o exame terão de duração de 1:40h e serão realizados sem consulta a qualquer material.
  3. Qualquer tentativa de fraude nas provas ou nos projetos implicará em média do semestre N = 0 (ZERO) para todos os envolvidos, sem prejuízo de outras sanções.
  4. Não será cobrada presença em sala de aula.
Listas de Exercícios

Listas de exercícios serão sugeridas ao longo do semestre. Além de servir para maior fixação do material apresentado em classe, o conteúdo dos exercícios é considerado parte integrante do material visto e será assumido como parte da matéria coberta. Como as listas não farão parte da avaliação, suas soluções não serão coletadas. Os alunos são encorajados a resolver todos os exercícios individualmente e, só posteriormente, realizar discussão em grupo. Quaisquer dificuldades devem ser prontamente discutidas com o professor ou com o monitor nos horários de atendimentos. Dúvidas não sanadas geram mais dúvidas.

Datas Importantes

 
Prolog
Lisp
Java
Exame
Prova
16/09/09
04/11/09
09/12/09
21/12/09
Campeonato
Oficial
19/09/09
26/09/09
31/10/09
07/11/09
05/12/09
12/12/09
15/12/09
22/12/09
Notas
28/09/09
16/11/09
14/12/09
23/12/09

As notas das provas e dos campeonatos serão divulgadas no site da disciplina. Após corrigidas, as provas poderão ser consultadas nos horários de atendimento do professor, até no máximo duas semanas após a divulgação das notas. As provas corrigidas não serão levadas a sala de aula.

Não haverá aulas na semana de 28/09/2009 a 02/10/2009, devido as festividades de 40 anos do Instituto de Computação da Unicamp.

Verifique os demais dias sem aulas no Calendário Oficial da Unicamp.

Referências Bibliográficas

    Referências básicas:

  1. Lisp + Prolog (Notas de Aulas, João Meidanis)

  2. Introdução a Programação Orientada a Objetos usando Java (Notas de Aulas, Cecília Mary Fischer Rubira)

    Livros:

  3. Programming in Prolog: Using the ISO Standard, W.F. Clocksin, C.S. Mellish; Springer, 5th edition (2003)

  4. Practical Common Lisp, Peter Seibel; Apress, 1st edition (2005)

  5. Head First Java, Kathy Sierra & Bert Bates; O'Reilly Media, 2nd edition (2005)

  6. Beginning Programming with Java For Dummies, Barry Burd; For Dummies; 2nd edition (2005)

  7. Java How to Program, Harvey M. Deitel & Paul J. Deitel; Prentice Hall, 7th edition (2007)

    Outras referências:

  8. ANSI Common Lisp - Paul Graham. Online chapter: Basic Concepts

  9. Common Lisp the Language, 2nd Edition - Guy L. Steele Jr.

  10. Guide to Prolog Programming - Roman Barták (online tutorial)

  11. Adventure in Prolog (online tutorial)

  12. The Java Tutorial (online tutorial)

  13. Java - How to Program Fifth Edition - Deitel & Deitel

Zanoni Dias