Programação II 2003.1

Professor Walfredo Cirne
Assistente: Nazareno Andrade
Aulas: Terça 10:00 as 13:00 e Quinta 12:00 as 13:00, no RE-008
Atendimento do assistente: Quarta de 15:00 as 17:00, no LSD (bloco BB).

Objetivos 

O objetivo desta disciplina é que o aluno aprenda Programação Orientada a Objetos. Objetivos secundários são o aprendizado de Java (uma segunda linguagem para os alunos que aprenderam Pascal em Programação I), melhorar a qualidade do código escrito pelos alunos, e introduzir algumas Estruturas de Dados simples. Note que, dentro do esforço de melhorar a qualidade do código gerado, estaremos cobrindo aspectos básicos de teste de unidade e padrões de projeto (design patterns). 

Avaliação

Teremos 3 testes nesta disciplina, cada qual valendo 33% da média final. O resultado das avaliações está disponível aqui.

Antes de cada teste, estarei disponibilizando uma lista de exercícios para que os alunos melhor se preparem para o teste. As listas de exercícios não serão cobradas. Elas servem apenas como exercício, como o próprio nome sugere. 

A 1a avaliação será realizada no dia 3/6. A lista de exercício correspondente está disponível aqui

A 2a avaliação será realizada no dia 23/9. A lista de exercício correspondente está disponível aqui

A 3a avaliação será realizada no dia 9/10, as 16:00, na sala de reunião do DSC. A lista de exercício correspondente está disponível aqui.  

A reposição será 23/10, as 16:00. 

A final será dia 27/10, as 16:00, na sala de reunião do DSC.

Aulas

Estaremos usando neste curso o excelente material escrito pelo Prof. Jacques Sauvé (com algumas pequenas modificações). 

Para facilitar o acompanhamento, o material do curso está organizado em semanas:

De 28/4 a 2/5: Formato da Disciplina e Java através de exemplos

De 5/5 a 9/5: Usando objetos

De 12/5 a 16/5: Criando objetos e classes

De 19/5 a 23/5: Não há aulas devido ao Simpósio Brasileiro de Redes de Computadores

De 26/5 a 30/5: Criando objetos e classes

De 2/6 a 6/6: Discussão da 1a lista de exercícios e 1a avaliação

De 9/6 a 13/6: Coleções de objetos

De 16/6 a 20/6: Interface e polimorfismo

De 23/6 a 27/6: Não há aulas devido ao Global Grid Forum

De 4/9 a 9/9: Herança

Dia 11/9 a 16/9: Visibilidade e Exceções  

De 18/9 a 23/9: Discussão da 2a lista de exercícios e 2a avaliação [Walfredo estará no 3o IFIP I3E neste período]

Dia 26/9: Testes automáticos

Dia 30/9: Regras básicas de design, com comentários sobre Composição de Objetos

De 2/10 a 7/10: Introdução a estrutura de dados: Arquivos, Arrays e Listas Encadeadas 

Dia 8/10, as 14:00: Discussão da 3a lista de exercícios 

Dia 9/10, as 16:00: 3a avaliação 

De 13/10 a 22/10: [Walfredo estará em visita técnica ao HP Labs em Bristol]

Dia 23/10, as 16:00: Reposição

Dia 27/10, as 16:00: Final

O código-fonte dos exemplos está disponível (você pode navegar para escolher arquivos individuais ou dar um download do zip completo). Isto significa que você não tem o trabalho braçal de redigital todos os exemplos, mas você tem a obrigação de executá-los.

Note que para que você possa compilar alguns exemplos, é necessário obter arquivos do pacote packagep1 (você pode navegar pelo pacote ou dar um download do zip ou do jar). Além disso, para simplificar a escrita de testes automáticos, você vai precisar do JUnit.

Links Úteis

API do Java 1.3.

Thinking In Java: The Definitive Introduction To Object-Oriented Programming The Language Of The World Wide Web, por Bruce Eckel, Prentice Hall, 1998

JUnit: Automatizando Testes de Unidade

Test Infected: Programmers Love Writing Tests, excelente artigo (com exemplos usando JUnit) que descreve como incorporar testes de unidades no dia-a-dia da programação

Extreme Teaching, como usar testes no ensino de programação

Pair Programming: Desenvolvendo Software em Pares

Convenções de Codificação adotadas neste curso

Extreme Programming: Desenvolvimento Leve de Software

Uma Introdução à Extreme Programming