MC336/MC346 - Paradigmas de Programação
Segundo Semestre de 2012
Conteúdo desta página:
Notícias de Última Hora
- [14/12/2012] Divulgadas as Notas Finais
(incluindo o exame).
- [09/12/2012] Divulgadas as Notas do
Mega-Campeonato (MC336).
- [26/11/2012] Divulgadas as Notas do Campeonato de
Java (MC336) e do Mega-Campeonato (MC346).
- [23/11/2012] Visando a preparação para o exame, haverá
horários especiais de atendimento com o monitor, nos dias 4 e 11 de
dezembro de 2012 (terças-feiras), das 18h às 19h, na sala 53,
do IC-2. Os interessados neste atendimento especial devem confirmar
sua presença com 24h de antecedência, através do email do
monitor. Caso o monitor não receba nenhuma confirmação de
interesse dentro do prazo estabelecido, o horário de atendimento
estará automaticamanete cancelado.
- [15/11/2012] Divulgadas as Notas da Terceira
Prova. As provas estarão disponíveis para consulta nos horários de
atendimento dos dias 22 e 29 de novembro de 2012 (últimos horários de
atendimento do semestre).
- [02/11/2012] Divulgados os dados tabulados
da avaliação
didática.
- [25/10/2012] Alunos aprovados em MC302 ou MC322 poderão usar as
notas obtidas nestas disciplinas como substitutas da nota de Java
(prova + campeonato). Para tanto, os alunos interessados devem assinar
o documento autorizando a substituição das notas, que estará
disponível no dia 30 de outubro de 2012 (terça-feira), durante a aula
(das 21h às 22:30h), junto com a avaliação da disciplina. Alunos que
optarem por usar a nota de MC302 ou MC322 como substituta da nota de
Java não poderão fazer a terceira prova nem submeter jogadores para o
campeonato de Java. Neste caso, a nota do Mega-Campeonato será
computada considerando-se apenas as notas dos jogadores de Prolog e
Lisp (média geométrica).
- [25/10/2012] Disponibilizadas
as instruções para
implementação do jogador em java.
- [22/10/2012] Divulgadas as Notas de Lisp (prova
+ campeonato).
- [17/10/2012] Disponibilizado o material sobre
Orientação a Objetos, no
site Ensino Aberto.
- [16/10/2012] Divulgadas as Notas da Segunda
Prova. As provas estarão disponíveis para consulta nos
horários de atendimento dos dias 18 e 25 de outubro de 2012.
- [02/10/2012] Lembrete: na próxima terça-feira, dia 09/10/2012, às
19h, serão realizadas as avaliações dos cursos 42 (sala 85 do IC) e 49
(sala M30 da FEM). No mesmo dia, a partir das 21h (sala CB-05), será
realizada a segunda prova da disciplina (programação funcional - Lisp).
- [27/09/2012] Divulgada a Lista de
Exercícios de Lisp.
- [20/09/2012] Disponibilizado o arquivo com as
instruções para a implementação do jogador
em lisp (veja o jogador
vazio).
- [18/09/2012] Divulgadas as Notas de Prolog (prova
+ campeonato).
- [28/08/2012] Divulgadas as Notas da Primeira
Prova. As provas estarão disponíveis para consulta nos
horários de atendimento dos dias 13 e 20 de setembro de 2012.
- [28/08/2012] Divulgada a Lista de
Exercícios de Prolog.
- [16/08/2012] Campeonato de Prolog no ar (submissões
liberadas). Se você é aluno da disciplina MC336 (turmas B e #),
para submeter jogadores e acompanhar as partidas, vá para Marte. Se você é
aluno da disciplina MC346 (turma A), vá para Vênus.
- [16/08/2012] Disponibilizado o arquivo com as
instruções para a implementação do jogador
em prolog (veja o jogador
vazio).
- [31/07/2012] Site da disciplina no ar.
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 Locais de
Atendimento
- Professor:
Quintas-feiras, das 18:00h às 18:45h, na sala 23, do IC-1.
Não haverá horário de atendimento com o
professor nas semanas das provas nem do exame.
- Monitor:
Terças-feiras, das 18h às 19h, na sala 53, do IC-2.
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:
- to: zanoni@ic.unicamp.br, ra070018@students.ic.unicamp.br
subject: [MC336/MC346] Correção da Primeira Prova
- para: zanoni@ic.unicamp.br, ra070018@students.ic.unicamp.br
assunto: [MC336/MC346] Site da Disciplina Fora do Ar
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 da Disciplina
Ementa
Visão comparativa de paradigmas de
programação. Programação funcional,
lógica e orientada a objetos.
Programa
- 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.
- 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.
- 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
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:
- Li = (2Pi + Ci)/3, para 1 ≤ i ≤ 3
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:
- F = N + B/10, se N ≥ 5
- F = min{5, (N + B/10 + E)/2}, se 2.5 ≤ N < 5
- F = N, caso contrário
Observações:
- Não haverá provas ou projetos substitutivos.
- As provas e o exame terão duração de
1:40h e serão realizados sem consulta a qualquer material.
- 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.
- Não será cobrada presença em sala de
aula.
- 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).
- Todas as turmas (MC336B, MC336# e MC346A) serão avaliadas de
forma idêntica, como descrito anteriormente.
- As provas e exames serão realizados na sala de aula, no
horário normal das aulas.
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 |
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.
Referências Bibliográficas
Referências básicas:
- Lisp + Prolog (Notas
de Aulas, João
Meidanis)
- Introdução a Programação Orientada
a Objetos usando Java (Notas de
Aulas, Cecília
Mary Fischer Rubira)
Livros:
- Programming in Prolog: Using the ISO Standard, W.F. Clocksin,
C.S. Mellish; Springer, 5th edition (2003)
- Practical Common
Lisp, Peter Seibel; Apress, 1st edition (2005)
- Head First Java, Kathy Sierra & Bert Bates; O'Reilly Media,
2nd edition (2005)
- Beginning Programming with Java For Dummies, Barry Burd; For
Dummies; 2nd edition (2005)
- Java How to Program, Harvey M. Deitel & Paul J. Deitel;
Prentice Hall, 7th edition (2007)
Outras referências:
- ANSI Common Lisp - Paul Graham. Online chapter: Basic Concepts
- Common Lisp the Language, 2nd Edition - Guy L. Steele Jr.
- Guide to
Prolog Programming - Roman Barták (online tutorial)
- Adventure in
Prolog (online tutorial)
- The
Java Tutorials (online tutorial)
- Java - How to Program Fifth Edition - Deitel & Deitel
-
Zanoni Dias
|