Departamento de Informática e Estatística

Planos de Ensino
Visitante (Entrar)

Plano de Ensino

Aprovado pelo Departamento em: 14-7-2017

  1. Identificação: Visualizar em PDF
    • Disciplina: INE5416 - Paradigmas de Programação
    • Turma(s): 04208
    • Carga horária: 90 horas-aula      Teóricas: 30      Práticas: 60
    • Período: 2º semestre de 2017
  2. Curso(s):
    • Ciências da Computação (208)
  3. Requisito(s):
    • Ciências da Computação (208)
      • INE5408 - Estruturas de Dados
  4. Professor(es):
    • Alexandre Goncalves Silva (alexandre.goncalves.silva@ufsc.br)
    • Joao Candido Lima Dovicchi (joao.dovicchi@ufsc.br)
  5. Ementa:
    • Caracterização e classificações dos paradigmas. Problemas tratáveis pelos paradigmas. Definição e caracterização dos principais paradigmas declarativos e imperativos. Programação em Lógica. Programação Funcional. Prática de programação com os principais paradigmas apresentados.
  6. Objetivo(s):
    • Geral: Capacitar o aluno a compreender os principais aspectos inerentes ao projeto de linguagens de programação e suas principais construções, as características inerentes aos paradigmas de construção de linguagens de programação e a desenvolver programas utilizando o Paradigma de Programação em Lógica e o Paradigma de Programação Funcional.
    • Capacitar o aluno a compreender os principais aspectos inerentes ao projeto de linguagens de programação e suas principais construções, as características inerentes aos paradigmas de construção de linguagens de programação e a desenvolver programas utilizando o Paradigma de Programação em Lógica e o Paradigma de Programação Funcional.
    • Específicos:
      1. Descrever os aspectos históricos das principais linguagens de programação.
      2. Compreender o processo de descrição formal de linguagens de programação.
      3. Identificar as características do Paradigma de Programação Imperativo.
      4. Descrever os principais aspectos associados à implementação de linguagens de programação.
      5. Compreender o uso de funções matemáticas como base de programação.
      6. Compreender o cálculo de predicados e sua utilização como base de programação.
      7. Utilizar o paradigma de Programação Funcional.
      8. Utilizar o paradigma de Programação em Lógica
  7. Conteúdo Programático:
    • Descrever os aspectos históricos das principais linguagens de programação [6 horas-aula]
    • Descrição formal de linguagens de programação: sintaxe e semântica [6 horas-aula]
    • O paradigma imperativo [18 horas-aula]
      • Nomes, tipos, escopos
      • Expressões e atribuição
      • Estruturas e subprogramas
    • Funçoes e Cálculo Lâmbda [6 horas-aula]
    • Cálculo de Predicados [6 horas-aula]
    • Linguagens Funcionais [10 horas-aula]
      • Lisp
      • Scheme
      • ML
      • Haskel
    • Linguagem em Lógica [8 horas-aula]
      • Prolog
    • Prática de programação Funcional [15 horas-aula]
    • Prática de programação em Lógica [15 horas-aula]
  8. Metodologia:
    Aulas teóricas expositivas com apresentação de slides e discussão de textos retirados da bibliografia básica indicada
    Aulas práticas realizadas a partir do desenvolvimento de exercícios de programação com a implementação de algoritmos baseado nos conceitos estudados em aula e pequenos projetos práticos ilustrando o uso das linguagens estudadas

    Em algumas aulas práticas, os alunos serão acompanhados por aluno de pós graduação em estágio de docência
  9. Avaliação:
    As avaliações serão feitas através de seis trabalhos práticos, sendo três referentes ao paradigma de programação funcional e três referentes ao paradigma de programação em lógica
    A nota final será calculada com base na média aritmética das notas dos trabalhos

    Dado que a disciplina apresenta pelo menos 50% da carga horária consistindo de aulas práticas, conforme deliberação do Colegiado do Curso de Ciências da Computação de 18 de março de 2008, ela não prevê a realização de avaliação no final do semestre (recuperação) de que trata o parágrafo 2º do artigo 70 da Resolução 17/CUn/97.

  10. Cronograma:
    O cronograma da disciplina segue a ordenação dos tópicos descritos no programa, intercalando as aulas referentes aos tópicos do paradigma funcional e em lógica.
    Os trabalhos práticos de avaliação serão realizados a partir da 5a semana de aula com intervalo médio de duas semanas entre cada um deles
  11. Bibliografia Básica:
    • SEBESTA, Robert W. Conceitos de Linguagens de Programação. 5a. Ed. Porto Alegre: Bookman, 2003.
    • BRATKO, Ivan. Prolog programming for Artificial Intelligence. Glasgow: Berkeley, 1986.
    • HUDAK, Paul. The Haskell School of Expression: Learning Functional Programming through Multimedia, Cambridge University Press, New York, 2000, 416 pp, ISBN 0521644089, ISBN 0521643384.
    • DE SÁ, Claudio Cesar, DA SILVA, Marcio Ferreira. Haskell: Uma Abordagem Prática, Novatec Editora Ltda., 2006, 296 pages, ISBN 85-7522-095-0.
  12. Bibliografia Complementar:
    • DERSHEM, H. & JIPPING, M. Programming languages: Structures and Models. Belmont: Wadsworth Publishing Company, 1990.
    • GHEZZI, Carlo; JAZAYERI, Mehdi. Conceitos de Linguagens de Programação. Rio de Janeiro: Campus, 1991.
    • FRIEDEMAN, Daniel P., WAND, Mitchell, HAYNES, Chistopher T. Fundamentos de linguagem de programação. São Paulo: Berkeley, 2001.ISBN: 85-7251-605-0
    • STERLING, Leon, SHAPIRO, Ehud. The Art of Prolog. MIT Press. Cambridge, 1999.
    • CURRY, Haskell B. Foundations of mathematical logic. New York: Dover, c1977. 407p ISBN 0486634620
    • MEIRA, Silvio Romero de Lemos. Introdução a programação funcional. Campinas: UNICAMP, 1988.
    • BARENDREGT, Hendrik Pieter. The lambda calculus: its syntax and semantics Rev. ed.- Amsterdam: North-Holland, 1984, ISBN 0 444 87508 5.