Go to:
Logótipo
You are here: Start > EIC0065

Programming Paradigms

Code: EIC0065     Acronym: PPRO

Keywords
Classification Keyword
OFICIAL Programming

Instance: 2011/2012 - 2S Ícone do Moodle

Active? Yes
Web Page: http://www.fe.up.pt/~rcamacho/cadeiras/PP/
E-learning page: http://moodle.fe.up.pt/
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MIEIC 10 Syllabus since 2009/2010 4 - 6 56 162

Teaching language

Suitable for English-speaking students

Objectives

1- BACKGROUND
In previous years of the course the students learn several programming languages. Nevertheless,they missi a global view of Programming Languages.

2- SPECIFIC AIMS
Provide teh students with a global view of the different programming paradigms enphasising the concepts, implementation and adequacy to the class of problems so they can understand the trade-offs in the design of programming languages.

3- PREVIOUS KNOWLEDGE
Students should have programming skills in languages such as Scheme, C, C++, Java or Prolog.

4- PERCENTAGE DISTRIBUTION
Scientific component: 60%
Technological component: 40%

5- LEARNING OUTCOMES
After attending the course the student should be able to:

1. Distinguish the role of high-level programming languages
2. Distinguish the different programming paradigms
3. Describe problems associated with the implementation of proramming languages
4. Enumerate the innovative topics introduced by the LISP language
5. Describe the features and problems of the imperative language Algol 60: reach and structured type system, shotcomes of "Pass-by-name", goto and memory management
6. Describe features and limitations of the imperative language Pascal
7. Describe features and limitations of the imperative C language: arrays vs. pointers
8. Describe the features of ML, namely: garbage collection, higher-order functions, partial functions and curried functions, patterns, reference cells, imperative features
9. Describe the use of types in programming languages
10. Describe the type inference algorithm of ML
11. Describe the implementations of polymorphism
12. Understand the process of memory management required by function calls and by the different ways of passing parameters.
13. Understand the main concepts underlying the control of program execution.
14. Describe the purpose and semantic of exception handling in ML and C++.
15. Descrive the support for program modularity.
16. Descrive the support for abstraction in programs.
17. Describe the main concepts of the Object Oriented paradim.
18. Describe the main features of Simula programming language.
19. Describe the main features of Smalltalk programming language.
20. Describe the main features of C++ programming language.
21. Describe the main features of Java programming language.
22. Describe the main features of Prolog programming language.
23. Describe the main features of "Scripting" programming languages such as Perl and Python.
24. Advantages of programming using concurrency.

Program

1. Introduction and the role of programming languages.
2. Functions, recursion, lists and Lisp.
3. Compilers and syntax,lambda-calculus and denotational semantics.
4. The Algol family and ML.
5. Type systems and type inference.
6. Scope, functions and memory management.
7. Data abstraction and modularity.
8. Concepts in Object-oriented languages, Simula and Smalltalk.
9. Objects and runtime execution in C++.
10. Portability and security in Java.
11. Logic programing and Prolog.
12. Concurrency
13. Scripting languages

Mandatory literature

Mitchell, John C.; Concepts in programming languages. ISBN: 0-521-78098-5

Complementary Bibliography

Sethi, Ravi; Programming languages. ISBN: 0-321-21074-3
Arnold, Ken; The Java programming language. ISBN: 0-201-70433-1
Sterling, Leon; The Art of Prolog. ISBN: 0-262-69163-9
Springer, George; Scheme and the art of programming. ISBN: 0-07-060522-X
Thompson, Simon; Haskell the craft of functional programming. ISBN: 0- 201-34275-8

Teaching methods and learning activities

Lectures include theoretical presentation of the course subjects, discussions and examples of computer programs. Outside classes practical work will take place.

Software

Yap Prolog
Java SE 6
DrScheme

keywords

Physical sciences > Computer science > Programming

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Description Type Time (hours) Weight (%) End date
Attendance (estimated) Participação presencial 36,00
Pratical work Trabalho laboratorial 70,00 2012-05-18
Presentation of the paper and the pratical work Participação presencial 1,00
Total: - 0,00

Amount of time allocated to each course unit

Description Type Time (hours) End date
Study Estudo autónomo 36
Study of a relevant scientific paper Estudo autónomo 20
Total: 56,00

Eligibility for exams

Minimum required to have "frequência" is: 40% of the final mark

Calculation formula of final grade

Classification = 70% Project + 30% Oral Presentaion and discussion of a relevant paper. Where, Project = 60% quality of the work + 20% technical report + 20% oral presentation and discussion.

Examinations or Special Assignments

There are no special works. The practical work is required for all enrolled students and must be submitted before the deadlines advertised.

Special assessment (TE, DA, ...)

Students taking exams under special regimes are expected to previously submit the practical work required for this course as ordinary students.

Classification improvement

Students may improve the mark obtained in the practical component in the subject's next edition.
Recommend this page Top
Copyright 1996-2025 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2025-06-17 at 22:03:42 | Acceptable Use Policy | Data Protection Policy | Complaint Portal