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