ELC117 - Paradigmas de Programação
Primeiro semestre de 2011
Professora: Andrea Schwertner Charão
Carga horária: 60h
Horários: terças e quintas, das 10:30 às 12:30
Sala: 367, CT
Planejamento
- Plano de ensino: informações sobre objetivos, programa, metodologia, avaliação e bibliografia.
- Cronograma: atividades de cada aula.
Avaliações
- Notas
- Primeiro bimestre
- Trabalhos (30%)
- Prova (70%) - Data: 12/05/11
- Segundo bimestre
- Trabalhos (50%)
- Prova (50%) - Data: 12/07/11
- Avaliação final (exame): 19/07/11
Exercícios
- Programação orientada a objetos com Java: (1) (2) (3) (4) (5)
- Códigos de exemplo em Java: ExemploJdbcDAO.zip ExemploJdbcGenericDAO.zip ExemploJdbcJTable.zip
- Programação funcional com Haskell: (1) (2) (3)
- Programação lógica com Prolog: (1) (2) (3) (4)
Slides
- POO em Java:
- Haskell: continuação (aula de 19/04/11)
- Programação lógica / Linguagem Prolog (Pág. 27 corrigida. Valeu, Osvaldo!)
- Listas em Prolog
- Prolog: processo de inferência e bases dinâmicas
Trabalhos
Lista de trabalhos
- Um programa, três linguagens (15/03/11 a 24/03/2011)
- Bom exemplo, mau exemplo (17/03/11 a 21/03/11)
- Gerando código de barras em Haskell (21/04/11 a 09/05/11)
- Chatbot em Prolog (25/05/11 a 12/06/11)
- Gerenciador de ACGs em Java (até 14/07/11)
Instruções gerais para entrega
- No início do semestre, crie um documento nomeado
index.html
e publique-o no endereçohttp://www.inf.ufsm.br/~aluno/elc117
(ondealuno
é o seu identificador de usuário no NCC). Este documento servirá de índice para os trabalhos desenvolvidos ao longo do semestre. Ele deverá conter, no mínimo:- a identificação do aluno;
- um link para a página da disciplina;
- links para os trabalhos desenvolvidos.
- Crie uma pasta separada para cada trabalho, acessível pelo endereço
http://www.inf.ufsm.br/~aluno/elc117/tn
(onden=1,2,...
). Coloque nesta pasta todos os arquivos relativos ao trabalhotn
, juntamente com uma página nomeadaindex.html
. Esta página deverá conter, no mínimo:- o título do trabalho;
- um link para a página de enunciado do trabalho;
- um link para voltar ao índice dos trabalhos do aluno;
- um ou mais links para os programas desenvolvidos.
- Nas pastas dos trabalhos, não armazene arquivos de compiladores, bibliotecas, ou quaisquer outros programas que você usou para desenvolver o trabalho. Use links para fazer referência a ferramentas utilizadas.
- As páginas de trabalhos devem ser "limpas" e organizadas. Evite o uso de recursos gráficos desnecessários. Veja bons exemplos de páginas de alunos que já cursaram a disciplina: apereira, vielmo e arton.
- Todos os arquivos de trabalhos deverão permanecer acessíveis durante todo o semestre.
Avaliação dos trabalhos
- A avaliação dos trabalhos levará em conta a funcionalidade e a legibilidade dos programas desenvolvidos, bem como a pontualidade na entrega.
- Na data de entrega de cada trabalho, os arquivos nos diretórios
http://www.inf.ufsm.br/~aluno/elc117/tn
serão copiados para um diretório de avaliação. - Se for necessário entregar um trabalho atrasado, publique os arquivos conforme as instruções acima e envie um e-mail à professora para justificar o atraso. Se a justificativa for aceita, o trabalho será avaliado mas poderá sofrer penalização pelo atraso, a ser definida caso a caso.
- Somente serão avaliados os trabalhos entregues conforme as instruções acima.
- Atenção: Havendo suspeita de plágio (cópia) de trabalhos, os alunos envolvidos poderão ser submetidos a outra avaliação. A penalização para casos de plágio será de redução da nota de uma ou mais avaliações.
Links
Livro-texto
Curiosidades
- The C Family of Languages: Interview with Dennis Ritchie, Bjarne Stroustrup, and James Gosling
Entrevista com os criadores das linguagens C, C++ e Java. Imperdível. - Mother Tongues of Computer Languages
Poster com a genealogia das principais linguagens de programação. - 99 Bottles of Beer
Um programa em mais de 700 linguagens diferentes. - The Computer Language Benchmarks Game
Benchmarks para comparação de várias linguagens e suas implementações. Você pode submeter seu próprio programa! - Ray tracer language comparison
Um gerador de imagens escrito em diversas linguagens. - The Encyclopedia of Computer Languages
Enciclopédia com a história de mais de 8000 linguagens de programação.
Linguagem Haskell
- haskell.org
Coleção de recursos sobre a linguagem Haskell. - Programação Funcional com a Linguagem Haskell
Tutorial em Português do Prof. André Rauber Du Bois. - Learn You a Haskell for Gread Good!
Ótimo tutorial em inglês, com desenhos :-) - Try Haskell
Tutorial on-line interativo. Permite executar programas simples via Web, sem instalar a plataforma Haskell. - The Haskell Platform
Distribuição Haskell para Windows, MacOS e Linux, incluindo compilador e várias bibliotecas. - Glasgow Haskell Compiler
Compilador Haskell. - Haskell Tutorial for C Programmers
Tutorial para programadores familializados com C - Why Functional Programming Matters
Artigo descrevendo porque linguagens funcionais são interessantes.
Linguagem C++
- Thinking in C++
E-book de Bruce Eckel sobre programação em C++. Neste endereço encontra-se a versão oficial para download (formato HTML compactado). - C++ FAQ Lite
Compilação de perguntas (e respostas) freqüentes sobre C++. - Standard Template Library Programmer's Guide
Guia de referência sobre a STL. É bastante completo e inclui exemplos. - Introdução à Programação em C++
Material de apoio a um curso de extensão ministrado pelo professor Marcelo Johann, da UFRGS.
Linguagem Java
- The Java Tutorial
Tutorial da Sun sobre Java. - Introduction to Programming Using Java
Livro sobre Java de David J. Eck. Todos os exemplos do livro têm código-fonte disponível. - Creating a GUI with JFC/Swing
Tutorial sobre criação de interfaces gráficas em Java. - Thinking in Java
E-book de Bruce Eckel sobre programação em Java, originalmente em inglês. Neste endereço encontra-se a versão oficial para download (formato HTML compactado). Este livro está sendo traduzido para português.
Linguagem Prolog
- Eliza Chatbot
Código Prolog de um chatbot. Executar no SWI-Prolog: ?- [eliza]. Atenção: Eliza só fala inglês :-) - P-99: Ninety-Nine Prolog Problems
Coleção de problemas e suas soluções em linguagem Prolog. - SWI-Prolog Reference Manual
Manual de referência do SWI Prolog.
Linguagem Scheme
- An introduction to Scheme for C programmers
O título diz tudo :-) Sugestão do Vinícius Gottin (inf2007). - schemers.org
Coleção de recursos sobre a linguagem Scheme. - How to Design Programs
Livro on-line sobre algoritmos e programação em linguagem Scheme. - Introdução à linguagem Scheme
Apostila em português. - DrScheme
Ambiente de programação para a linguagem Scheme. - Revised^5 Report on the Algorithmic Language Scheme
Descrição de referência da linguagem Scheme. - PLT MzScheme: Language Manual
Manual do MzScheme. - PLT Scheme
Família de implementações da linguagem Scheme que inclui o interpretador MzScheme.