CCO - 210 - Programming Languages Paradigms

Amount of credits: 8
Total hours of theoretical classes: 60
Total hours of exercise classes, seminars or directed studies): 60

Objective

At the end of the discipline, the student must be able to:

  • Know the main paradigms of programming languages and some typical languages of each paradigm.
  • Know characteristics of each paradigm, especially those that allow us to differentiate one from the other.
  • Know the basic constructions of the main studied languages.
  • Write programs in each one of the studied languages using the resources presented in the discipline.
  • Recognize the different paradigms according to the criteria of imperative, declarative, compiled, interpreted.

Catalog Description

  • Overview of Programming Languages Paradigms)
  • Overview - Why study programming paradigms)
  • Criteria adopted to the study of paradigms)
  • General descriptions of programming languages paradigms)
  • Evolution of the main programming languages)
  • Logic Programming)
  • Basic notions of logic programming and introductions Prolog language: facts, queries, unification rules, recursion)
  • Arithmetic in Prolog
  • List structures and operations with lists
  • Backtracking control (cut)
  • Modifications in the Database
  • Metaprogramming
  • Functional Programming
  • Basic notions of functional programming and introduction to LISP: data objects, functions, procedures, list processing
  • Functions that operate on lists. functions to build lists
  • Control flow, logic connectives, macros, free and bound variables
  • Higher order functions, recursion versus iteration lexical and dynamic scope
  • Imperativa
  • Revision of the basic notions of imperative and procedural languages
  • Binding and time binding of attributes to variables
  • Type checking
  • Control structures at unity level
  • Parameters passing methods
  • Subprograms implementation
  • Object Oriented Programming
  • Basic notions of object oriented programming
  • Introduction to JAVA
  • Inheritance and polymorphism in JAVA
  • Abstract classes and interfaces in JAVA
  • Data collections in JAVA
  • Concurrent Programming
  • Introduction to concurrent programming
  • Concurrent unities in JAVA - Threads and Runnable classes
  • Main methods of Thread class
  • Synchronized methods

Main Bibliography

  1. Sebesta, R.W. Concepts of Programming Languages.11a.edição/Addison-Weley, 2015.
  2. Varejão, F. Linguagens de Programação – Conceitos e Técnicas. Editora Campus, 2004.
  3. Bratko, I. - Prolog Programming for Artificial Intelligence. Addison Wesley, 1986.
  4. Winston, P. ; Horn, B. LISP. Addison-Wesley, 1984.
  5. Santos, R. ; Introdução à Programação Orientada a Objetos usando JAVA. Editora Campus, 2003.
  6. Sebesta, R. W. Conceitos de Linguagens de Programação. Tradução de José Carlos Barbosa dos Santos, 5ª ed. Bookman, Porto Alegre, 2003.
  7. Sethi, R. Programming Languages - Concepts and Constructs, 2nd. edition, Addison-Wesley, 1996.
  8. Nicoletti, M. C. A Cartilha Prolog. Série apontamentos, Editora da UFSCar, 2003.
  9. Sieera, K., Bates, B. Head Fisrt JAVA: A Brain-Friendly Guide. 2nd edition. O´Reilly Media, 2005.
  10. Horstmann, C. , Cornell, G. ; Core JAVA 2 – Volume I - Fundamentos. Tradução de João Eduardo Nóbrega Tortello, Makron Books, 2001.
  11. Block, J. Effective JAVA, 3rd. edition, Pearson Education Inc., 2018.