MC336/MC346 - Paradigmas de Programação

Turmas AB - Segundo Semestre de 2012

Conteúdo desta página


Avisos Importantes


Docente e Monitor


Dias, Horários e Local das Aulas

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


Dias, Horários e Local de Atendimento

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

Nos dias 4 de setembro, 2 de outubro e 13 de novembro de 2012 o horário de atendimento do monitor terá 2h de duração (exclusivo para dúvidas referentes ao campeonato), com início às 17h. Não haverá atendimento no dia 9 outubro de 2012.

Em caso de ausência de alunos, o horário de atendimento, tanto do professor quanto do monitor, se encerrará às 18:30h. Caso deseje usar o horário de atendimento, compareça à sala indicada até às 18:30h.


Contato por Email

Não haverá atendimento de dúvidas por email. Não haverá atendimento via mensagens instantâneas (MSN, Google Talk, Facebook, Twitter, etc).

As dúvidas devem, preferencialmente, ser sanadas em sala de aula ou pessoalmente nos horários de atendimento. Use o email apenas para assuntos excepcionais.

Caso seja necessário enviar algum email com assuntos relativos a esta disciplina, este deve ser enviado simultaneamente ao professor e ao monitor e deve conter no subject/assunto o texto “[MC336/MC346]” seguido do motivo da mensagem. Exemplos:

Còdigo de programas (jogadores) não devem ser enviados por email.

Todas as mensagens de alunos devem ser assinada com nome completo e RA e enviadas através de uma conta de email oficial da Unicamp (IC, FEEC, DAC, 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 Tutorials (online tutorial)

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


Jogo e Campeonato

Clique aqui.


Listas de Exercícios

Clique aqui.


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 10 dias 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 início do campeonato oficial. Não serão aceitas submissões após o encerramento dos campeonatos oficiais.

Devido a possíveis cortes de energia elétrica no Campus durante os feriados, o campeonato oficial pode ser interrompido por alguns dias, mas tão logo quanto possível, as partidas serão reiniciadas. Não haverá extensão do período do campeonato em caso de interrupção do campeonato. A submissão dos jogadores só pode ser feita através do site do campeonato, então em caso de corte de energia ou de falhas na rede de dados, não será possível submeter jogadores. Não serão aceitos jogadores enviados por email.

A nota do campeonato será dada de acordo com o desempenho dos jogadores em todas as partidas do 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 2.5 ≤ N < 5, o aluno terá direito a fazer o exame. O exame será composto de três partes, uma para cada linguagem vista durante o semestre (Prolog, Lisp e Java). Cada parte será composta de duas questões. A nota de cada parte será computada como a média aritmética entre as duas questões. A nota do exame será computada como a média geométrica entre as três partes. Cada aluno poderá optar por não responder as questões de uma ou mais partes e neste caso será usado como nota daquela parte a nota da linguagem obtida no semestre (considerando tanto as provas quanto os campeonatos). Caso um aluno não compareça ao exame, será considerado que ele optou por substituir as notas de todas as partes pelas notas obtidas durante o semestre.

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 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.
  5. De acordo com a fórmula acima, caso um aluno seja aprovado após realizar o exame, sua nota final será igual a F=5 (cinco).
  6. Todas as turmas (MC336B, MC336# e MC346A) serão avaliadas de forma idêntica, como descrito anteriormente.
  7. As provas e exames serão realizados na sala de aula, no horário normal das aulas.

Notas

Consulte as notas aqui.


Datas Importantes

Prolog Lisp Java Exame
Prova 04/09/2012 09/10/2012 13/11/2012 13/12/2012
Campeonato
Oficial
06/09/2012
16/09/2012
11/10/2012
21/10/2012
14/11/2012
24/11/2012
01/12/2012
11/12/2012
Notas 18/09/2012 23/10/2012 27/11/2012 20/12/2012

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.