Disciplina anual do 2º semestre do 2º ano da Licenciatura em
Informática de Gestão (7104N3)
Departamento de Sistemas de Informação da Universidade do Minho
2005/2006
A edição do ano lectivo anterior
reside em http://piano.dsi.uminho.pt/disciplinas/LIGLP2/anterior/
. A disciplina LP 1 (primeiro semestre deste ano
lectivo ) reside ainda em http://piano.dsi.uminho.pt/disciplinas/LIGLP1/
Esta disciplina terminou a sua
existência; quem não a fez deve procurar fazer Paradigmas
de Programação.
Avisos():
- Acerca dos exames de PP, LP1, LP2... Jan/Fev
2007:
- Exame de época especial de 14 de Outubro de 2006 (o exame de 16 Setembro foi cancelado
por motivo de força maior):
- Enunciado e uma
resolução
- As notas (ver última coluna da direita).
Um comentário do Prof. às mesmas:
- Um exame de época especial não é "especial", é
igual aos outros, excepto pela data em que se realiza, e por na
maior parte dos casos ser pelo menos a 3ª oportunidade que o
aluno tem, no mesmo ano lectivo, de se preparar melhor e ter
sucesso onde já falhou antes.
Infelizmente não é essa a atitude que se vê na maioria das
respostas ao exame, na repetição dos mesmos erros, e sobretudo
na fé absurda de que um exercício de programação, pelo facto
de parecer "parecido" com outro cuja resolução
conhecida se leva num papel, alguma vez tenha resolução parecida;
raramente é esse o caso:(
- "Bolonha" significa ser competitivo no espaço
europeu, para começar; significa, por exemplo, que os alunos
devem colocar dúvidas aos docentes muito antes do exame, e não
após o desastre ter acontecido! Aos alunos que adiaram um ano a
sua entrada na competição europeia por não terem concluído
agora esta pequena etapa regional, desejo uma atitude mais
esforçada em
Paradigmas
de Programação, já a decorrer, e que ainda podem apanhar em
andamento - desde que o façam nos próximos dias, ver
instruções na página indicada.
- Exame de recurso:
enunciado e uma
resolução
- As notas (ver
última coluna do lado direito)
- (as notas teórico-práticas foram todas calculadas a partir da
nota teórica, usando a fórmula no ponto 2. das regras
da disciplina).
- Exame da segunda chamada:
enunciado e uma
resolução.
- As
notas (ver
última coluna do lado direito)
- (as notas teórico-práticas foram todas calculadas a partir da
nota teórica, usando a fórmula no ponto 2. das regras
da disciplina).
- Exame da primeira chamada:
enunciado e uma
resolução.
- As
notas
- (as notas teórico-práticas foram todas calculadas a partir da
nota teórica, usando a fórmula no ponto 2. das regras
da disciplina).
- Classificações dos
trabalhos práticos: grupos, e
notas individuais.
- Classificações do relatório intermédio do trabalho prático
aqui ou no
Moodle.
- Informação sobre as aulas práticas (incluindo
trabalho prático) no
Moodle.
- TODOS os alunos devem registar-se no
http://moodle.dsi.uminho.pt/moodle/
e adicionar LP2 (práticas) à sua
lista de unidades curriculares; a chave de inscrição é "LIGLP2".
- As
submissões de items do trabalho prático deverão ser efectuadas pelo representante do grupo.
- Pedidos de
esclarecimento para
pedro.coutinho@dsi.uminho.pt.
- Lista de grupos
para o trabalho prático
- Se não aparece nesta lista e não
tem o trabalho prático congelado de um ano anterior (devido a
estatuto especial), já está atrasado(a) - contacte o seu docente das
práticas imediatamente!
- Enunciado do trabalho prático
aqui.
Atenção à primeira deadline!
- Escolha de turnos e grupos:
- As aulas iniciam-se à hora anunciada H + 10 minutos; para terem
presença registada numa aula prática ou teórico-prática os alunos
deverão entrar na sala preferencialmente antes, ou o mais tardar até às
H+15 minutos.
Benvindo(a)
Esta disciplina aprofunda o paradigma de programação orientada por
objectos, praticado com algumas APIs Java, e apresenta o paradigma da
programação em lógica, praticado com a linguagem PROLOG. Este sítio irá sendo actualizado ao
longo do semestre, e é a fonte preferencial para obter quaisquer informações
sobre a disciplina.
É actualmente regida por Miguel Calejo
(aulas teóricas e teórico-práticas). As aulas práticas são asseguradas por Pedro
Coutinho e Vítor
Sá.
Programa calendarizado e actividades
Há aulas de 3 tipos:
- Nas aulas teóricas expõe-se matéria com exemplos, discutem-se
questões com o professor, e esclarecem-se dúvidas pontuais.
- As aulas teórico-práticas visam relaxar o Prof. e ocupar os
alunos; começarão por uma breve explicação (por dois alunos no quadro,
seleccionados no momento) sobre a matéria teórica da semana passada;
depois incluirão a resolução de um exercício pelos alunos agrupados em
pares, seguida da correcção por cada par da resolução por outro par à
sorte; segue-se a discussão pública (com avaliação, que afecta a nota
teórico-prática) das correcções de 2 ou 3 pares; e se houver dúvidas,
esclarecimento de dúvidas teóricas.
- Nas aulas práticas os alunos fazem exercícios, individualmente
ou aos pares, e esclarecem-se também dúvidas na execução do trabalho
prático. No final das aulas os alunos submeterão as suas resoluções
dos exercícios práticos; embora não sejam todos avaliados directamente,
estas submissões serão utilizadas durante a correcção dos trabalhos de
grupo no final de semestre, para validar ou ajustar notas de elementos de
cada grupo.
Além disto é essencial trabalhar fora das aulas, num esforço semanal
de 3 horas, recomendando-se 2 horas para o trabalho de grupo e 1 hora para
"digerir" a semana e preparar a semana seguinte. A
probabilidade de ter aproveitamento na disciplina sem este esforço extra-aulas
é a mesma de se manter um emprego onde não se trabalhe: aproximadamente 0%
(zero); planifique o seu tempo pessoal, e execute o plano, para
arranjar emprego no ano seguinte e não ficar para trás.
As tabelas seguintes calendarizam, sumarizam e dão acesso ao material
destas actividades (poderão ocorrer alterações, confie só no que ler até
à data de hoje; os links na tabela seguinte só irão sendo disponibilizados
na semana anterior, ao longo do semestre):
| Semana |
Teórica
(2h) |
T.-P. (1h) |
Prática (2h) |
| 2ª feira |
3ª feira |
(6 turnos) |
(8 turnos) |
| 20 Fev 2005 |
Horário especial de abertura do
segundo semestre do segundo ano da LIG: não há aulas excepto apresentação da disciplina
(5ª feira, 10-13h, sala EE0.10) |
| 27 Fev |
Recapitulação da base da
linguagem Java
|
CARNAVAL
|
Revisão
de LP I |
Familiarização com laboratório |
| 6 Mar |
Introdução ao package java.net
(HTML): acerca da internet, Socket.
Um exemplo BlueJ |
Continuação da aula anterior: ServerSocket, URL |
Sortido de perguntas de exames de LP 1 |
Exercícios |
| 13 Mar |
Introdução à concorrência (HTML) |
O conceito de bateria de testes, e respectivo
suporte no
BlueJ: exemplo com: uma pequena variante
do projecto dome. A classe
TestCase.
Acerca do JDK |
Exemplos |
Exercícios |
| 20 Mar |
"And now for something completely different":
Introdução ao Prolog, e um exemplo
vagamente familiar. Sucesso e
falhanço de golos. (HTML). |
Recursividade. Como funciona o Prolog |
Walkthrough sobre um pequeno programa de "CHAT" (JanelaDeConversa no
projecto internet). Acerca de testes. |
Acerca do trabalho
prático
Exercícios
|
| 27 Mar |
Tipos de dados: termos; unificação; PROgramming in LOGic
(HTML) |
Semântica operacional. Relevância da ordem das cláusulas
(cont. do capítulo 2) Introdução às listas
(HTML).
Exemplos.
|
Exemplos
|
Exercícios |
| 3 Abr |
PROF. AUSENTE |
PROF. AUSENTE |
PROF. AUSENTE |
Exercícios |
| 10 Abr |
Input/Output: os streams Prolog; decomposição de átomos
(HTML) . Exemplos: favor copiar dos
slides Powerpoint. |
Exemplos de uso de mais estrutura em termos: mini-base de
dados, planeamento de viagens, problema das N rainhas (HTML). Os
exemplos. |
Exemplos |
PÁSCOA |
| 17 Abr |
PÁSCOA |
PÁSCOA |
|
|
| 24 Abr |
Revisão das aulas anteriores. Definição de
operadores |
Dia da Liberdade
|
Exemplos |
Exercícios |
| 1 Mai |
DIA DO TRABALHADOR
|
Controle do retrocesso: operador de corte (cut), negação
por falhanço. (HTML) |
DIA DO TRABALHADOR |
Exercícios |
| 8 Mai |
Preenchimento de inquéritos
Mais predicados de sistema.
"All solutions".
(HTML)
Exemplos |
Ordenação de listas; listas diferença;
dicionários; "display" de árvores (HTML).
Alguns exemplos mostrados da teórica. |
Preenchimento de inquéritos
Exemplos |
Exercícios |
| 15 Mai |
Revisões (aula de presença opcional)
|
ENTERRO DA GATA
|
Revisões (aula de presença opcional) |
ENTERRO DA GATA
Há algumas práticas, de presença opcional, ver
Moodle.
|
| 22 Mai |
Gramáticas DCG
(HTML)
|
Um "sistema pericial", e meta-interpretadores
(HTML). O exemplo:
sem explicações, com
COMO e com
PORQUÊ.
|
Exemplos |
|
| 29 Mai |
Perspectiva multi-paradigma; uma árvore em C, Java e Prolog.
(HTML) |
Última aula teórica: continuação da aula anterior e
esclarecimento de dúvidas |
Exemplos |
|
| 12 Jun a 25 Jul |
Exames 2º semestre
|
| Aulas
aonde? |
às 17h na EE0.19 |
às 12h na EC1.01 |
TP1: 15h de 2ª,EC2.14;
TP2: 16h de 2ª,EC2.14;
TP3: 18h de 2ª, EE0.19
TP4: 19h de 2ª, EE0.19 |
No LAP5
P1: 9h de 4ª
P2: 11h de 4ª
P3: 9h de 5ª
P4: 11h de 5ª
P5: 9h de 6ª
P6: 14h de 6ª
P7:16h de 6ª
P8:18h de 6ª
|
Esta página encontra-se em http://piano.dsi.uminho.pt/disciplinas/LIGLP2/
.
Leituras
Para aceder aos slides e exercícios apresentados nas aulas vejam-se os links
acima. Literatura:
- Programação Orientada por Objectos:
- Partes do "The Java Tutorial", Sun Microsystems; legível online
(download integral zip aqui).
Será referido directamente com links dos slides das teóricas
- Opcional (e só em complemento aos outros dois): extractos do livro "Programação
Orientada aos Objectos em JAVA 2", Martins, M., FCA
- Editora de Informática, 2000
- Programação em lógica:
- Livro base principal: "PROLOG Programming for Artificial
Intelligence", Ivan Bratko, Addison-Wesley 1990, ISBN
0-201-41606-9. Existe na biblioteca e pode encomendar-se por exemplo na Amazon
UK (a terceira edição; nós vamos seguir a segunda, porque
existe na biblioteca E as alterações da terceira não são relevantes
para esta disciplina; ou seja, qualquer das duas serve). Vai ser
usado só parcialmente: capítulos 1 a 9, 14,15 e 17 (parcial), 20 (parcial).
- Manual do SWI Prolog aqui
- Material sobre lógica na disciplina de Matemática
Discreta. Disciplina de Inteligência
Artificial (4º ano).
- Infra-estrutura mental: livro "Godel, Escher, Bach, Laços
Eternos", Douglas Hofstadter, Gradiva
2000. Versão original pode comprar-se por exemplo na Amazon
UK.
Ferramentas
Estas ferramentas estão disponíveis nos terminais SUN do laboratório, mas
podem e devem instalar-se em PCs próprios por quem os tenha (em Windows, Linux
ou Mac OS X):
- Java: BlueJ, que
precisa da instalação prévia do JDK
da SUN ; exercícios do livro Objects First (primeira edição) estão todos num zip
aqui (os projectos acessíveis no
site do livro são os que acompanham a sua segunda edição, que não existe
na biblioteca);
documentação de referência do JDK aqui
(cópia local aqui). Dica
de instalação BlueJ: não colocar a aplicação ou projectos dentro de
pastas com caracteres "esquisitos" como sejam #, º, ...
- Prolog: SWI Prolog. Usar em
Windows ou Linux. Nos laboratórios aceder à Marte, onde ele está
instalado. Existe um óptimo editor
com debugger integrado, mas só para Windows.
- InterProlog 2.1 com suporte para SWI Prolog aqui
. Para usar basta acrescentar interprolog.jar no classpath, e referir
localização de plcon.exe no constructor de SWISubprocessEngine.
- Alguns slides sobre InterProlog
aqui (Inglês).
Horários de atendimento dos docentes:
- por email:
- Miguel Calejo - em contínuo, tempo de resposta <= 1 dia útil
- Pedro Coutinho - em contínuo, tempo de resposta <= 2 dias úteis
- Vítor Sá - em contínuo, tempo de resposta <= 2 dias úteis
- presencial (sempre precedido de um email no dia anterior agendando
e introduzindo o assunto a tratar):
- Miguel Calejo (x3311) - 3ª feira, das 14:30 às 16:30
- Pedro Coutinho - 5ª feira, das 9:00 às 11:00; 6ª feira, das 9:00
às 11:00
- Vítor Sá - 4ª das 14:00 às 17:00, 5ª das 14:00 às 17:00
Brevemente aparecerão aqui todos os
alunos inscritos em LP2 em 2004/2005, indicando os turnos Teórico-Práticos em
que estão inscritos.
Se o seu nome não aparece na folha (que ainda não está aqui!) e acha que
devia aparecer, pf contacte mc@dsi.uminho.pt
urgentemente. A informação nesta folha é propriedade da Universidade do
Minho, e não pode ser copiada ou divulgada sem sua autorização senão para
os fins estritos relacionados com esta disciplina.
Versão curta:
- Investir 70 a 100 horas ao longo do semestre focadas nos items
seguintes (ou cerca de 3h/semana, para além das 5h de aulas). Sugestão
para uso das 3 horas em cada semana N:
- 1 hora: estudo das teóricas da semana N e aprofundamento de
sugestões dadas pelo prof, tendo em vista também preparar a
participação na TP da semana N+1; revisão dos exercícios feitos nas
TP e P
- 2 horas: trabalho prático e experimentação associada
- Assistir acordado(a) ao maior número de aulas possível, e comparecer a
pelo menos 2/3 das teórico-práticas e práticas, conforme manda o RIAPA
. A frequência de LP em anos anteriores não dispensa a obrigação de
frequência este ano.
- Esforçar-se seriamente por resolver todos os exercícios propostos e
participar nas aulas
- Realizar o trabalho prático que será proposto oportunamente, e que é
mandatório
- Cumprir escrupulosamente as regras éticas
- Finalmente, o mais fácil para quem cumprir os pontos acima: obter aproveitamento
no exame
Para uma explicação mais detalhada e precisa das regras de avaliação ver aqui.
Conhecer algumas APIs standard Java, aplicando a Programação Orientada
por Objectos. Saber
desenvolver programas em Prolog, e abordar uma perspectiva de integração
multi-paradigma.
Letras Pequeninas
A informação informal nesta página e respectivos links
não dispensa a consulta da informação oficial alhures.A informação, marcas
e demais símbolos mencionados nesta página ou noutras por ela referidas
neste "site" são propriedade dos seus legítimos proprietários.
Página actualizada em . Comentários
para mc@dsi.uminho.pt