Paradigmas de programação – CI1062 (PaP)
Ensino Remoto Emergencial 3
Página com informações gerais da disciplina: ementa, datas das provas, bibliografia, exercícios, etc.
Avisos
================================
=> Especificação do trabalho 2 disponível.
=> Especificação do trabalho 1 disponível.
=> Locais dos encontros virtuais: https://bbb.c3sl.ufpr.br/b/mar-d3c-kdz
=> Publicado um conjunto de Notebooks Haskell com código ilustrando conceitos de programação funcionalista.
=> Publicado um conjunto de Notebooks Java com código ilustrando conceitos de programação orientada a objetos.
================================
Material de aula
Slides :
Videos (ERE 3)
- Paradigmas de programação e modelos conceituais: introdução
- Modelos conceituais
- Classes e instâncias
- Métodos e atributos
- Herança
- Polimorfismo
- Classes abstratas e interfaces
- Padrões de projeto
- Programação funcionalista: introdução
- LIstas em Haskell
(aulas gravadas no ERE 2)
- Aula gravada: Apresentação da disciplina
- Aula gravada: Classes e Instâncias
- Aula gravada: Métodos de instância e de classe (estáticos)
- Aula gravada: Herança
- Polimorfismo, interfaces
- Tipos genéricos, API reflexiva
- Design patterns: visão geral
- Programação funcionalista: introdução
- Funções como entidades de primeira classe, listas
Programação OO
=> Exercicio das formas geométricas
=> Conta em banco
=> Calculadora
=> Notebooks Java com exemplos ilustrativos
=> Lista de exercícios 01
=> Extrato do modelo de sistema acadêmico
=> Sistema de controle de pós graduação – contém o sistema completo: o modelo completo, interfaces, acesso aos dados, etc.
Sites externos
=> Tutorial sobre reflexão em Java
=> Outro Tutorial sobre reflexão em Java
=> Java Reflextion API
=> Material da Oracle sobre tipos genéricos
=> ‘Resumão’ sobre design patterns no Wikipedia
=> Anti-patterns: anti-padrões de desenvolvimento…
Padrões de projeto
Padrões de projeto: visão geral
Singleton
FactoryMethod
Composite
Observer
Visitor
Programação funcionalista
Outros recursos (sites externos)
=> Funcões como entidades de primeira ordem
=> Curso online – introdução à programação funcional
=> Curso de programação funcional usando Haskell – Univ. de Edinburgo
=> Apostila de Haskell
Programação funcionalista e Apache Spark
=> Tutorial em português http://www.inf.ufpr.br/erlfilho/tutorials/spark/
=> Página com Quick Start da Apache
Execução nas máquinas locais : /home/soft/linux/eclipsemodeling/spark-2.1.1-bin-hadoop2.7/bin/spark-shell
Modalidades e meios:
Atividades síncronas: aulas por videconferência
Atividades assíncronas: textos, listas de exercícios e trabalhos. Calendário:
Início: 20/05/2021
Fim: 12/08/2021
Trabalho 1: 01/07/2021
Trabalho 2: 29/07/2021
Prova final: 12/08/2021
Horário dos encontros síncronos (ES): Quintas-feiras 13h30
Cronograma detalhado:
20/05/2021 Apresentação da disciplina. Modelo Conceitual
27/05/2021 Modelo Conceitual ES
10/06/2021 Classes e Instâncias ES/EX
17/06/2021 Métodos e atributos ES/TP1/ML /EX
24/06/2021 Herança ES/EX
01/07/2021 Polimorfismo ES
08/07/2021 Classes Abstratas e Interfaces ES/EX
16/07/2021 Padrões de projeto GOF ES
22/07/2021 Programação funcionalista ES/TP2/ML/EX
29/07/2021 Funções lambda ES / EX
05/08/2021 Listas ES/EX
12/08/2021 Exame Final
Legenda:
ES: Encontro síncrono (2 horas)
ML: Disponibilização pelo professor de material de leitura (tempo necessário para leitura e estudo complementar ao trabalho prático: 4 horas)
EX: Disponibilização pelo professor de exercícios (tempo necessário para realizar a tarefa: 3 horas)
TPn: Disponibilização pelo professor de trabalho prático (tempo necessário para leitura, estudo e implementação do trabalho prático: 9 horas)
Avaliação
Uma provas e dois trabalhos (ver datas acima).
Cálculo da Média Parcial: t1*0.40 + t2*0.60
Cálculo da média final:
– igual à média parcial, se esta é igual ou superior a 7.0 ou inferior a 4.0
– média aritmética entre a média parcial e a nota no exame final, caso contrário.
Será aprovado o aluno que apresentar freqüência mínima igual ou superior a 75% das aulas e obtiver média final igual ou superior a 5.0.
Bibliografia
Programção orientada a objetos: os 4 primeiros livros serão os mais usados
1 => Boratti, Isaias Camilo, Programação orientada a objetos em JAVA, Ano 2007, ISBN: 9788575021996 Florianopolis : Visual Books, 2007
2 => Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides. Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a objetos. Bookman
3 => (o mesmo livro acima em inglês) Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides. Elements of Reusable Object-Oriented Software. Addison-Wesley Professional;
4 => Bruce Eckel, Thinking in Java, 4th Edition, Prentice Hall, 1150 pages (English) ISBN: 0131872486
5 => Cox, Brad J, Programaçao orientada para objeto, Rio de Janeiro : Makron : MacGraw-Hill, 1991
6 => PREISS, Bruno R. Estruturas de dados e algoritmos: padroes de projetos orientados a objetos com Java. Rio de Janeiro: Campus, c2001. xvi, 566. Inclui bibliografia e índice. ISBN 8535206930 (broch.).
7 => Sidnei Wazlawick. Análise e Projeto de Sistemas de Informaçao Orientados a Objetos. Editora Campus, 1994.
8 => JANDL JUNIOR, Peter. Java: guia do programador : atualizado para Java 8. 3. ed São Paulo: Novatec, c2015. 704 p., il. Inclui referências e índice. ISBN 9788575224441 (broch.).
9 => BOENTE, Alfredo. Aprendendo a programar em Java 2: orientado a objetos. Rio de Janeiro: Brasport, 2003. 216 p., il. Inclui bibliografia e índice. ISBN 857452140X (broch.).
10 => ANSELMO, Fernando. Aplicando lógica orientada a objetos em Java. 2. ed. atual. e ampl Florianópolis: Visual Books, 2005. 178 p., il. ISBN 8575021621 (broch.).
——————————-
Programação funcionalista
Os 4 primeiros itens serão os mais utilizados no curso.
1 => Wiki da linguagem Haskell. https://wiki.haskell.org/, https://wiki.haskell.org/A_brief_introduction_to_Haskell
2 => A Gentle Introduction to Haskell – Version 98 (June 2000) https://www.haskell.org/tutorial/
3 => A general introduction to Functional Programming using Haskell. Matteo Rossi. Dipartimento di Elettronica e Informazione. Politecnico di Milano. https://cazzola.di.unimi.it/ps/haskell-p1.pdf
4 => Bird. Introduction to Functional Programming using Haskell. Prentice Hall, New York, 1998.
A.Davie. Introduction to Functional Programming System Using Haskell. Cambridge University Press, 1992.
5 => P. Hudak. Conception, evolution, and application of functional programming languages. ACM Computing Surveys, 21(3):359–411, 1989.
6 => Introduction to Funcional Programming. E.P. Wentworth http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.57.4846&rep=rep1&type=pdf
7 => Haskel: Uma abordagem Prática. De Sá, C. C.; Ferreira da Silva, M. Novatec. São Paulo, 2006