MC336 - Paradigmas de Programação

Turmas AB - Segundo Semestre de 2008

Conteúdo desta página


Avisos Importantes

  1. [11/12/2008] Divulgadas as notas finais, já considerando o exame e o Mega-Campeonato.
  2. [20/11/2008] Divulgado o resultado tabulado da avaliação didática. Os dados foram gerados considerando cada curso individualmente (34, 42 e 49) e também a média de todos os alunos que respoderam o questionário.
  3. [24/11/2008] Divulgadas as notas de java (prova + campeonato).
  4. [04/11/2008] Disponibilizada listas de exercícios sobre Orientação a Objetos e Java no Ensino Aberto (menu “Atividades”).
  5. [28/10/2008] Atualizadas as instruções para a elaboração do jogador em java, com informações específicas para compilação e execução do jogador em Windows e Linux.
  6. [25/10/2008] Disponibilizadas as instruções para a elaboração do jogador em java. Campeonato de teste no ar (com submissão de jogadores).
  7. [24/10/2008] Bloqueado o acesso a máquina mirza. O acesso ao campeonato será feito pela máquina marte (marte.ic.unicamp.br), com a mesma senha usada na mirza.
  8. [14/10/2008] Divulgadas as notas de lisp (prova + campeonato).
  9. [09/10/2008] Disponibilizado material didático (transparências e livro sobre Java) elaborado pela professora Cecília Mary Fischer Rubira através do site Ensino Aberto (menu “Material de Apoio”).
  10. [18/09/2008] Disponibilizada a lista de exercícios de lisp.
  11. [17/09/2008] Disponibilizado o jogador vazio em lisp. Campeonato de teste no ar (com submissão de jogadores).
  12. [16/09/2008] Divulgadas as notas de prolog (prova + campeonato).
  13. [23/08/2008] Divulgado o resultado tabulado do primeiro questionário.
  14. [22/08/2008] Disponibilizada a lista de exercícios de prolog.
  15. [11/08/2008] Disponibilizado o jogador vazio em prolog. Campeonato de teste no ar (com submissão de jogadores).
  16. [05/08/2008] Campeonato de teste no ar (sem submissão de jogadores).

Docente e Monitores


Dias, Horários e Local das Aulas

Terças-feiras às 21h e quintas às 19h, na sala CB-04.


Dias, Horários e Local de Atendimento


Contato por Email

Qualquer mensagem com questões relativas à disciplina deve ser enviada simultaneamente ao professor e aos monitores 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.

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

As dúvidas devem preferencialmente ser sanadas em sala de aula ou pessoalmente nos horários de atendimento. Use o atendimento via email como último recurso. Não haverá atendimento via mensagens instantaneas (MSN, Gmail Talk, etc).


Ementa e Programa

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.

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:

  1. Programming in Prolog: Using the ISO Standard, W.F. Clocksin, C.S. Mellish; Springer, 5th edition (2003)
  2. Practical Common Lisp, Peter Seibel; Apress, 1st edition (2005)
  3. Head First Java, Kathy Sierra & Bert Bates; O’Reilly Media, 2nd edition (2005)
  4. Beginning Programming with Java For Dummies, Barry Burd; For Dummies; 2nd edition (2005)
  5. Java How to Program, Harvey M. Deitel & Paul J. Deitel; Prentice Hall, 7th edition (2007)

Outras referências:

  1. ANSI Common Lisp - Paul Graham. Online chapter: Basic Concepts
  2. Common Lisp the Language, 2nd Edition - Guy L. Steele Jr.
  3. Guide to Prolog Programming - Roman Barták (online tutorial)
  4. Adventure in Prolog (online tutorial)
  5. The Java Tutorial (online tutorial)
  6. Java - How to Program Fifth Edition - Deitel & Deitel

Jogo e Campeonato

Clique aqui.


Listas de Exercícios

Listas de exercícios serão sugeridas nesta página 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.


Material Didático

Recomenda-se o estudo do programa da disciplina através do material didático preparado pelo professor Cid Carvalho de Souza especialmente para esta disciplina (slides em formato PDF).


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 o 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. 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: Li = (6Pi + 4Ci)/10, para 1 ≤ i ≤ 3

A nota final antes do exame (N) será calculada pela média geométrica ponderada das três linguagens utilizando-se a seguinte fórmula: N = (L13 x L23 x L34) 1/10

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 1:40h de duração 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.

Notas

Consulte as notas aqui.


Datas Importantes

Prolog Lisp Java Exame
Prova 04/09/08 07/10/08 18/11/08 09/12/08
Campeonato
Oficial
06/09/08
13/09/08
04/10/08
11/10/08
15/11/08
22/11/08
29/11/08
06/12/08
Notas 16/09/08 16/10/08 27/11/08 16/12/08

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. As provas corrigidas não serão levadas a sala de aula.

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