Trabalhos de MAC 413/5715

Além dos trabalhos realizados em sala de aula, teremos 3 trabalhos para realizar em casa. Datas de Entrega dos Trabalhos:

Projeto Final

O projeto final poderá ser uma monografia, seminário ou implementação de software. É possível também apresentar um seminário e além disso participar de um grupo de implementação de software. Quem fizer essas duas coisas receberá simpatia especial do professor no momento da avaliação.

Aqui está um exemplo de especificação bem feita:  ConferenceAssistant

Tópicos para Monografias

De 8 a 10 páginas escrita individualmente em excelente português (serei bem rigoroso na correção). (Se for detectado plágio, a média final na disciplina será zero).
  1. Reflexão Computacional (Rodrigo dos Santos Lima - rsantoz at terra.com.br)
  2. Mecanismos reflexivos em Smalltalk (Nelson Takashi Omori - nelsonta at linux.ime.usp.br)
  3. Continuações
  4. Programação Genérica (Luiz Ricardo de Lima - luizvsp at linux.ime.usp.br)
  5. A linguagem Self (Fernando - incognit at linux.ime.usp.br)
  6. Arquiteturas de plug-ins (Rafael de França Ferreira - rafaeldff at gmail.com)
  7. Sugira o seu tópico

Tópicos para Seminários

Feitos em grupos de 1 ou 2 e apresentados em 45 minutos. O seminário deverá ser muito bem preparado e os alunos deverão demonstrar que estudaram muito bem o tópico abordado. Os slides devem ser submetidos ao professor (nos formatos .ppt, .ps ou .pdf) para revisão 72 horas antes da apresentação. Antes de preparar os slides dê uma olhada nessas dicas de preparação de slides e nessas dicas de português
  1. A linguagem Self (baseado no artigo Self - The Power of Simplicity)
  2. Mecanismos reflexivos em Smalltalk
  3. Continuações
  4. 2 ou 3 padrões dos livros POSA II ou III.
    1. Component Configurator e Interceptor (Ivan Neto ivanneto at ime.usp.br)
  5. 2 padrões do PLoP 2004. (perguntar aos autores se é a versão mais recente).
  6. Ferramentas para testes automatizados em Java e C++.
  7. O uso de padrões e arcabouços no sistema operacional Choices
  8. Guaraná : uma implementação reflexiva de Java
  9. Padrões de Re-engenharia Orientada a Objetos (Gewerton Justino Gomes da Cruz Silva gewerton at linux.ime.usp.br)
  10. Idioms para Java (Daniel Cukier - danicuki at mandic.com.br)
  11. Utilização de Técnicas de Reflexão em Grades Computacionais (Marco A S Netto marco.netto at gmail.com)
  12. Manipulação de bytecode Java (André Breves - andre.breves at gmail.com)
  13. Padrões em aplicações de visão computacional (Carlos da Silva Santos - carlos.s.santos at gmail.com)
  14. Padrões Reactor e Proactor (Rodrigo di Lorenzo Lopes - rdllopes at gmail.com)
  15. Algumas deficiências da linguagem Java e soluções atuais (Ricardo Yamamoto Abe - ricardoy at linux.ime.usp.br e Renato Pelizzari da Silva)

Tópicos para Implementações

Em grupos de 1 ou 2 pessoas (recomendo programação pareada). No final do semestre, a execução do software será demonstrada para o professor, assistente e demais interessados.
  1. Algum novo plugin para Eclipse - (e.g., melhorias no IDE Eclipse para o Ciao Prolog)
  2. Representação gráfica tridimensional de ambientes para avaliação acústica usando Java 3D (projeto AcMus) jeffscho at linux.ime.usp.br
  3. Colaboração no projeto OnAir: consultas em bancos de dados de vídeos baseado em palavras chaves e Java Media Framework
  4. Aplicação paralela em C++ para ser executada no sistema InteGrade.
  5. Suporte a MPI no sistema InteGrade.
  6. Aplicação Musical Distribuída baseada no Andante.
  7. Aplicação qualquer baseada em padrões (pelo menos 4 deles)
  8. Aplicação OO para PalmPilots (ou outro tipo de computador de mão)
    1. controle de participação em congressos (desejo do professor) (Leandro Inácio de Oliveira Bororo e Bruno Klava bixusp at linux.ime.usp.br; Igor Rascovsky - igorrascovsky at yahoo.com.br e Renato Massami Miyasaki - miyasaki at linux.ime.usp.br)
    2. transmissão de vídeo em tempo real para um Palm via rede sem fio
  9. Visualizador de provas tablô (para maiores detalhes envie email para adolfo at ime.usp.br). O sistema deverá ler arquivos XML como os disponíveis aqui e exibir a árvore de prova (Proof Tree) num applet Java permitindo as seguintes ações:
    1. Contração e expansão de ramos
    2. Localização de fórmulas complementares: se o usuário clicar em "T X " e selecionar a opção "Procurar complementar", o sistema deve procurar por "F X" no mesmo ramo e destacá-la caso encontre.
    3. Identificação de fechamento: cada ramo deverá ter no seu final um nó extra identificando se está fechado ou não, e com que fórmula fechou.
    4. Localização de "superfórmulas": o usuário poderá digitar uma fórmula (por exemplo "A&B") e o sistema destacará todas as fórmulas assinaladas das quais a fórmula é subfórmula.
  10. Autocad livre em Java (Filipe Madeira e Hugo Corbucci - night at linux.ime.usp.br)
  11. Implementação de um sistema para análise de espectros de radiação gama (Marcelo Francis Máduar - mmaduar at ipen.br)
  12. Implementação de jogo Web: "Twenty questions"  (Rodrigo di Lorenzo Lopes - rdllopes at gmail.com)
  13. Uma arquitetura para busca de recursos em grids computacionais (Hammurabi Mendes - hammurabi.mendes at gmail.com)
  14. Jogo de cartas Buraco (Paulo Cheque - paulocheque at gmail.com)

Uma possibilidade bem interessante é juntar 2 trabalhos em 1 no final do curso. Ou seja, 2 (ou mais) grupos de 2 pessoas trabalham cada um em uma parte independente de um sistema maior, combinando inicialmente qual vai ser a interface usada para a comunicação entre os dois sistemas. No final, cada grupo entrega o seu trabalho separadamente (com testes para a sua parte) mas o demo é feito integrando-se todas as partes.
Página de MAC 413/5715
Página do Fabio
Página do DCC