Paradigmas da Programação

Ano Lectivo: 09/10 (Anual/1º semestre)

Planeamento e Sumário das Aulas


Teórico-Prática sessãoA
(2ªfeira, 16h00-17h30)
Teórico-Prática sessãoB
(5ªfeira, 14h30-16h00)
2009/09/21
2009/09/24
2009/09/28
2009/10/01
2009/10/05 (feriado)
2009/10/08
2009/10/12
2009/10/15
2009/10/19
2009/10/22
2009/10/26
2009/10/29
2009/11/02
2009/11/05
2009/11/09
2009/11/12
2009/11/16
2009/11/19
2009/11/23
2009/11/26
2009/11/30
2009/12/03 (1ºTeste)
2009/12/07
2009/12/10
2009/12/14
2009/12/17
2010/01/04
2010/01/07
2010/01/11
2010/01/14
2010/01/18
2010/01/21
2010/01/25
2010/01/28
2º Semestre
2º Semestre
Teórico-Prática sessãoA
(2ªfeira, 16h30-18h00)
Teórico-Prática sessãoB
(5ªfeira, 16h30-18h00)
2010/02/22
2010/02/25
2010/03/01
2010/03/04 (2ºTeste)
2010/03/08
2010/03/11
2010/03/15
2010/03/18
2010/03/22
2010/03/25
2010/03/29
2010/04/01
2010/04/05
2010/04/08
2010/04/12
2010/04/15
2010/04/19
2010/04/22
2010/04/26
2010/04/29
2010/05/03
2010/05/06
2010/05/10 (Enterro da
Gata) 2010/05/13
2010/05/17
2010/05/20
2010/05/24
2010/05/27
2010/05/31
2010/06/03
2010/06/07
2010/06/10


Semana 1 Aula TPb

Tópicos:
Resumo:
Os alunos foram avisados sobre a obrigatoriedade de fazerem os 4 Trabalhos Práticos que serão propostos ao longo do semestre e sobre a importância de lerem toda a informação básica sobre a Disciplina, através da Página WWW. Fora marcadas as datas dos 4 Testes.
Quanto ao principal objectivo, foi identificado como sendo a caracterização do ciclo de desenvolvimento de software, a sua modelação (na linguagem UML) e a prototipagem. Foi clarificado que não se tratava de um curso para ensinar apenas a usar a linguagem de programação Prolog, mas que era essencialmente destinado a levar os alunos a compreender a importância da noção de paradigma de programação na resolução de um problema por computador.


Semana 2 TPa

Tópicos:
Resumo:
Nesta aula os alunos já devem ter adquirido a sensibilidade para distinguir o paradigma imperativo do paradigma declarativo e devem ter-se apercebido da diferença entre executar no SO um programa compilado, ou interpretar num ambiente de programação um programa declarativo.
Além disso devem ter captado empiricamente a noção de Predicado, Cláusula, Facto e Regra, Variável Lógica e Unificação.

Semana 2 TPb

Tópicos:
Resumo:
Uma parte da aula foi a relembrar os objectivos da disciplina, sua avaliação e integração das 2 partes.
Depois falou-se bastante de organização (estruturação) de informação e dos principais modelos matemáticos de dados usados diariamente em programação: conjunto; sequência/lista (com os casos particulares da stack (pilha) e da queue (fila)); árvore (irregular e regular (binária (de procura))); grafo (orientado e não-orientado). Foi também referido o conceito de URL e WWW.
Por fim enunciou-se o 1ºcaso de trabalho, um sistema para submissão electrónica de candidaturas de projectos a financiamentos --- simulada a 1ªreunião de trabalho cliente-programadores, os alunos ficaram de pensar no enunciado e preparar em casa a próxima reunião de análise (para levantamento de requisitos).


Semana 3 TPa

Não houve aula: Feriado Nacional (Implantação da República).

Semana 3 TPb

Não houve aula: reunião do projecto de cooperação bilateral DSLpc em Maribor (Eslovénia).


Semana 4 TPa

Tópicos:
Resumo:
Nesta aula os alunos iniciaram as primeiras definições de predicados e.g. irmão, avó, tio, etc. Definiram também as primeiras queries e o uso diversificado de um predicado. Exemplo: a relação avó como geradora de netos e de avós. Primeiras noções de execução de uma query sobre um programa. Noção informal de consequência lógica. Primeiros exemplos recursivos: ser da mesma geração de. Além disso devem ter captado empiricamente, e com a ajuda de exemplos as noções de Variável Lógica e Unificação.

Semana 4 TPb

Não houve aula: participação na sessão de encerramento do EPIA2009 em Aveiro na qualidade de Presidente da APPIA.


Semana 5 TPa

Tópicos:
Resumo:
Nesta aula foi introduzido o conceito de árvore de prova associado a uma interrogação sobre um programa. Noção informal de unificação e de substituições derivadas pelo processo de unificação. Foram apresentados exemplos de árvores de prova com a noção de ramo de sucesso e de falhanço. Os alunos adquiriram a noção informal de execução de um programa em problema quando exposto a uma query sendo esta usada para expor a noção de 'backtracking' e de derivação de múltiplas respostas. Exemplos recursivos e árvores de prova. Foi apresentado o cálculo de expressões aritméticas em Prolog com o operador 'is'. Exemplos com unificação usando expressões aritméticas incompletas. Os exemplos serviram para expor aos alunos a noção de regra de pesquisa (de cima para baixo no uso das cláusulas) e regra de computação (da esquerda para a direita na execução do corpo de uma regra).

Semana 5 TPb

Tópicos:
Resumo:
Nesta aula foi discutida longamente a história da evolução das linguagens, em particular das linguagens orientadas a objectos (OOP) de modo a contextualizar a necessidade de linguagens de modelação que abrangessem as componentes estática e dinâmica dos SIs nas várias fases da análise de um problema e o aparecimento do UML como linguagem unificadora de várias abordagens à modelação; filosofia diagramática do UML.
Depois foram vistos os Diagramas UML mais importantes e normalmente usados: Diagrama de Classes, de Objecto e de Pacotes (diagramas estáticos); Diagrama de Sequência como caso particular de um Diagrama de Interacção, de Estados (State-Machine) e de Actividades (diagramas de comportamento, ou dinâmicos); Diagrama de Casos-de-Uso (Use-Cases).
Por fim foi deixado como trabalho de casa, modelar os CS1 com os diagramas que os grupos acharem mais apropriados.


Semana 6 TPa

Tópicos:
Resumo:
Nesta aula foi apresentado um pequena programa de derivação matemática. O objectivo é ilustrar o poder da unificação para manipulação simbólica. O programa apresenta-se como uma tradução quase directa das regras de derivação matemática. Foi introduzido a estrutura de dados lista em Prolog. Definição recursiva de lista. Noção de cabeça da lista e cauda. Lista como uma estrutura de dados de elementos polimórficos. Usa da unificação para decompor listas. Acesso a elementos da lista. Noção de variável incógnita (uso do símbolo '_' para identificar variável não usada). Exemplos com cumprimento de lista, acesso ao elemento da n-ésima posição, soma dos elementos da lista, etc.

Semana 6 TPb

Não houve aula: ida à Argentina na qualidade de orientador de Mario Berón para participar no seu doutoramento no âmbito do projecto Alfa-LERNet.


Semana 7 TPa

Tópicos:
Resumo:
Esta aula foi usada especificamente para mostrar o tratamento e construção de listas recorrendo às potencialidades da unificação. Foram introduzidos detalhes como a noção de variável incógnita ("_") e construção recursiva de listas.

Semana 7 TPb

Tópicos:
Resumo:
Nesta aula pretendeu-se apresentar a linguagem de modelação UML como uma notação diagramática UML para especificar sistemas de informação numa óptica orientada a objectos, ou seja, concebendo uma apliacção informática como um conjunto de objectos concorrentes e cooperantes que interagem para resolver um problema estimulando-se entre si via troca de mensagens.
Desta forma foram passados em revisão todos os conceitos basilares da Programação Orientada a Objectos (POO): objecto, formado por atributos (componente estática, para armazenar o seu conhecimento interno) e métodos (componente comportamental, para determinar como responder aos estímulos, ou mensagens); encapsulamento, para encerrar e proteger os dados específicos de cada objectos; mensagens dos dois tipos -- "devolve-me esta informação", ou "executa esta operação" -- e seus parâmetros; classe como mecanismo de abstracção para programar uma só vez todos os objectos da mesma família, que serão designados por instâncias da classe; o operador new para instanciar uma classe, criando um novo objecto em memória; herança e respectivas relações classe / superclasse ou classe / subclasse, como novo mecanismo de abstracção para melhor estruturar o universo de discurso e optimizar o armazenamento de dados e a implementação das operações comuns de uma classe, e o conceito associado de extensão de atributos ou métodos.
Os Diagramas de Classe para descrever a estrutura, ou forma (sintaxe), do universo de discurso, caracterizando os atributos e métodos de cada classe e as relações entre elas; os Diagramas de Sequência para descrever o comportamento, ou interacção, entre as classes definindo a dinâmica do universo de discurso.
Depois desta discussão detalhada, que visou sistematizar conhecimento já adquirido noutras disciplinas, procedeu-se à discussão, participada por toda a turma, do Diagrama de Use-Cases (e respectivos Actores) propostos pelo Gr.1 (João e Nelson) para modelar o CS1, tendo sido provado pragmaticamente a importância da modelação para clarificação dos conceitos envolvidos nos enunciados/descrições de sistemas de informação (complexos).
Os alunos foram solicitados a enviar por email os modelos propostos para esse mesmo case-study.


Semana 8 TPa

Tópicos:
Resumo:
Inverter uma lista, remover ocorrências de um elemento numa lista, uso do predicado $append$ para diferentes funções e.g. retirar último elemento, obter lista sem um determinando elemento, etc.
O predicado $append$ como exemplo das capacidades do Prolog em usar o mesmo procedimento com diferentes configurações de input e output.

Semana 8 TPb

Tópicos:
Resumo:
A aula foi particularmente focada a juntar as duas partes da disciplina, programação lógica e modelação orientada a objectos.
Assim na aula, e para além de se ver e discutir os use-cases do CS1 propostos por um grupo, ocupou-se grande parte do tempo a modelar um pequeno sistema de informação escolhendo os predicados que modelam a componente estática (atributiva) das classes em causa (pessoa/7 e boneco/3), bem como os predicados que relacionam essas classes (possui(pessoa,boneco)). Depois definiram-se regras de validação que asseguram a cardinalidade das relações (1:1, 1:N, N:1) de modo a manter a integridade da BF (base-de-factos).


Semana 9 TPa

Tópicos:
Resumo:
O quicksort em Prolog. Poda em árvores de prova. O operador cut como um operador de 'commit'. Regras de uso e 'semântica' do operador nas cláusulas. Exemplos para implementar exclusão mútua. Exercícios com corte de ramos redundantes da árvore de prova. Implementação de negação por falhanço à custa do cut.
Uso do 'trace' do Prolog para execuções passo-a-passo e verificação dos cortes obtidos.

Semana 9 TPb

Tópicos:
Resumo:
Usando todas as ideias e trabalho de análise e modelação UML já feito pelos vários grupos (que entretanto foram enviando os seus contributos), iniciou-se um processo de análise sistemática de modo a termos o modelo da turma para o S1.
1ªEtape: Identificação dos actores: 2ªEtape: Identificação dos Cenários de Uso do SI e Diagrama de Estados: Diagrama: Sc1 --> Sc2 --> Sc3
3ªEtape: Caracterização dos Cenários:
4ªEtape: Identificação dos Classes e Suas Relações: 5ªEtape: Desenhar os Diagramas Actores/Funções para cada um dos Cenários de Uso (Use-Cases) tendo em vista as Classes envolvidas nas Operações: (TPC).


Semana 10 TPa

Tópicos:
Resumo:
Introdução à estrutura de dados árvore binária. Conceito e aplicações. Comportamento e principais operações. Implementação em Prolog. Representação de árvores usando termos Prolog. Árvores ordenadas, inserção e pesquisa. Expressões aritméticas representadas por árvores binárias. Travessias: pré-fixa, in-fixa, pós-fixa. Exercícios.

Semana 10 TPb

Tópicos (aula de substituição dada por PJA):
Resumo:
Continuação dos exercícios com estrutura de dados árvore binária e sua implementação em Prolog.


Semana 11 TPa

Tópicos:
Resumo:
Inserção ordenada, nível de um nó numa árvore. Árvores equilibradas, etc.

Semana 11 TPb

Tópicos:
Resumo:
Toda a aula foi ocupada com a resolução do 1ªTeste, cujo enunciado já está afixado na página web da disciplina.


Semana 12 TPa

Tópicos:
Resumo:
Representação de expressões aritméticas. Um pequeno gerador de código para calcular uma expressão aritmética.

Semana 12 TPb

Tópicos:
Resumo:
Em relação ao primeiro tópico foi feita uma análise geral da estrutura e conteúdo de cada relatório e foram tecidos comentários aos modelos UML e Prolog apresentados.

Na sequência deste trabalho e da discussão tida em torno dele, foi feito um novo desafio: preparar para o dia 14 de Janeiro mais um estudo, seguindo esta mesma abordagem, focado num dos outros enunciados disponíveis e ainda não tratado pelos grupos (S3 a S5).

Quanto ao segundo tópico, foram lidos todos os enunciados propostos e relembrado o objectivo essencial de cada jogo, dando uma ou outra sugestão relativa à estrutura de dados a usar em Prolog para sua implementação.
Relativamente ao terceiro tópico, foi realizada a 5ªetape do processo de modelação do sistema de software S1, como se mostra a seguir.
5ªEtape: Desenhar os Diagramas Actores/Funções para cada um dos Cenários de Uso (Use-Cases) tendo em vista as Classes envolvidas nas Operações:


Semana 13 TPa

Tópicos:
Resumo:
Predicados de sistema para coleccionar conjuntos de respostas a uma query: O setof, bagof e findall. Exercícios.

Semana 13 TPb

Tópicos:
A aula foi dada pelo professor de Microprocessadores para compensar a do dia 7, em que se irão usar 3h para receber os trabalhos práticos.
Resumo:
nil.


Semana 14 TPa

Tópicos:
Resumo:
Uso das características inerentes ao formalismo relacional do Prolog para produzir soluções "força-bruta" com pesquisa exaustiva num espaço de soluções. Uso do não-determinismo do Prolog em programas do estilo "Gerar e Testar". Optimização destes programas recorrendo à inclusão de certas características dos problemas na componente de "Gerar". Aplicações a problemas clássicos: O problema das 8 (N) rainhas. O "SEND+MORE=MONEY". Outros exercícios.

Semana 14 TPb

Tópicos:
1ª Avaliação parcial dos Trabalhos Práticos: (P1) modelação de Sistemas de Computação em UML e sua descrição em Prolog.
Resumo:
A aula foi toda reservada para receber, discutir e avaliar o 1º trabalho prático.


Semana 15 TPa

Tópicos:
Resumo:
Resolução de vários exercícios que fazem uso da aproximação "gerar e testar".

Semana 15 TPb

Tópicos:
Resumo:
A 1ªparte da aula foi toda devotada a fazer um balanço dos problemas de modelação e prototipagem de sistemas de informação e dos resultados obtidos no 1ºTrabalho Prático.
Na 2ª parte discutiu-se o conceito de Árvore e da sua aplicação à resolução de problemas reais.


Semana 16 TPa

Tópicos:
Resumo:
Resolução do problema de "Gestão de submissão de projectos de investigação na FCT". Uso de predicados de obtenção de conjuntos de soluções e.g. bagof, findall.

Semana 16 TPb

Tópicos:
Resumo:
A aula toda foi devotada a ver o 2ºTP realizado por alguns grupos e a discutir o uso da recursividade (e listas) para resolução de Jogos.
A maioria dos alunos faltou à aula (com aviso prévio) para terminar trabalhos e estudar para outros testes.


Semana 17 TPa

Tópicos:
Resumo:
Revisões da matéria dada. Aula de oportunidade para os alunos esclarecerem dúvidas sobre partes específicas da matéria dada.

Semana 17 TPb

Tópicos:
Resumo:


Semana 18 TPa

Tópicos:
Não houve aula pelo facto do Docente estar doente.

Semana 18 TPb

Tópicos:


Semana 19 TPa

Tópicos:

Semana 19 TPb

Tópicos:


Semana 20 TPa

Tópicos:

Semana 20 TPb

Tópicos:


Semana 21 TPa

Tópicos:
Resumo: Sistemas de suporte à decisão. Exemplos. Sistemas Periciais. Implementação em Prolog. Uso de meta-interpretadores. Respostas a interrogações com explicações. Implementação de um sistema com justificação da resposta dada.

Semana 21 TPb

Tópicos:


Semana 22 TPa

Tópicos:
Não houve aula pelo docente se encontrar doente.

Semana 22 TPb

Tópicos:
Não houve aula pelo docente estar ausente no estrangeiro nas conferências SAC e ETAPS/LDTA.


Semana 23 TPa

Tópicos:
Não houve aula: Férias de Páscoa.

Semana 23 TPb

Tópicos:


Semana 24 TPa

Tópicos:
Resumo: O utilizador como uma base de conhecimento. Desenvolvimento de um meta-interpretador com explicações e com interrogações ao utilizador.

Semana 24 TPb

Tópicos:


Semana 25 TPa

Tópicos:
Resumo: Terminação de programas em Prolog. Sistemas de "lemma generation" e sua implementação. Implementação num meta-interpretador. Exemplos.

Semana 25 TPb

Tópicos:


Semana 26 TPa

Tópicos:
Resumo: Continuação da aula anterior.

Semana 26 TPb

Tópicos:


Semana 27 TPa

Tópicos:
Resumo: Docente em missão no estrangeiro.

Semana 27 TPb

Tópicos:


Semana 28 TPa

Tópicos:
Resumo: Aplicação destes princípios na derivação de respostas com factores de certeza associados.

Semana 28 TPb

Tópicos:


Semana 29 TPa

Tópicos:
Resumo: Programação do jogo "quatro-em-linha". Computador versus jogador humano. Estruturas de dados para representação do tabuleiro. Aplicação do algoritmo MiniMax neste jogo específico.

Semana 29 TPb

Tópicos:


Semana 30 TPa

Tópicos:
Resumo: Desenvolvimento do programa "quatro-em-linha".

Semana 30 TPb

Tópicos:


Semana 31 TPa

Tópicos:

Semana 31 TPb

Tópicos:

author: prh@di.uminho.pt
Last modified: quarta-feira, Junho 23, 2010 at 07:27