Programming Paradigms
Keywords |
Classification |
Keyword |
OFICIAL |
Programming |
Instance: 2013/2014 - 2S (of 10-02-2014 to 06-06-2014) ![Requerida a integração com o Moodle Ícone do Moodle](/feup/pt/imagens/MoodleIcon)
Cycles of Study/Courses
Acronym |
No. of Students |
Study Plan |
Curricular Years |
Credits UCN |
Credits ECTS |
Contact hours |
Total Time |
MIEIC |
16 |
Syllabus since 2009/2010 |
4 |
- |
6 |
56 |
162 |
Teaching language
Suitable for English-speaking students
Objectives
BACKGROUND
In previous years of the course the students learn several programming languages. Nevertheless,they missi a global view of Programming Languages.
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.
Learning outcomes and competences
After attending the course the student should be able to:
- Distinguish the role of high-level programming languages
- Distinguish the different programming paradigms
- Describe problems associated with the implementation of proramming languages
- Enumerate the innovative topics introduced by the LISP language
- 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
- Describe features and limitations of the imperative language Pascal
- Describe features and limitations of the imperative C language: arrays vs. pointers
- Describe the features of ML, namely: garbage collection, higher-order functions, partial functions and curried functions, patterns, reference cells, imperative features
- Describe the use of types in programming languages
- Describe the type inference algorithm of ML
- Describe the implementations of polymorphism
- Understand the process of memory management required by function calls and by the different ways of passing parameters.
- Understand the main concepts underlying the control of program execution.
- Describe the purpose and semantic of exception handling in ML and C++.
- Descrive the support for program modularity.
- Descrive the support for abstraction in programs.
- Describe the main concepts of the Object Oriented paradim.
- Describe the main features of Simula programming language.
- Describe the main features of Smalltalk programming language.
- Describe the main features of C++ programming language.
- Describe the main features of Java programming language.
- Describe the main features of Prolog programming language.
- Describe the main features of "Scripting" programming languages such as Perl and Python.
- Know the advantages of programming using concurrency.
Working method
Presencial
Pre-requirements (prior knowledge) and co-requirements (common knowledge)
Students should have programming skills in languages such as Scheme, C, C++, Java or Prolog.
Program
- Introduction and the role of programming languages.
- Functions, recursion, lists and Lisp.
- Compilers and syntax,lambda-calculus and denotational semantics.
- The Algol family and ML.
- Type systems and type inference.
- Scope, functions and memory management.
- Data abstraction and modularity.
- Concepts in Object-oriented languages, Simula and Smalltalk.
- Objects and runtime execution in C++.
- Portability and security in Java.
- Logic programing and Prolog.
- Concurrency
- 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 and discussions of relevant topics. There are also classes were students work on a semester's project.
Software
Yap Prolog
DrScheme
Java SE 6
keywords
Physical sciences > Computer science > Programming
Evaluation Type
Distributed evaluation without final exam
Assessment Components
Designation |
Weight (%) |
Trabalho escrito |
30,00 |
Trabalho laboratorial |
70,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
Designation |
Time (hours) |
Frequência das aulas |
42,00 |
Trabalho de investigação |
30,00 |
Trabalho laboratorial |
90,00 |
Total: |
162,00 |
Eligibility for exams
N/A
Calculation formula of final grade
Classification = 70% Project + 30% Oral presentaion of a tutorial.
Where, Project = 60% quality of the work + 20% technical report + 20% oral presentation and discussion.
Examinations or Special Assignments
There are no special works.
Special assessment (TE, DA, ...)
Students taking exams under special regimes are expected to previously submit the project required for this course as ordinary students.Students not atteding the classes have to submit and present their work in the established deadlines. These later students should take the initiative to establish with the teatcher periodic meetings to report work progress.
Classification improvement
Students may only improve the mark obtained in the project in the next edition of the course. In order to improve the tutorial's mark a new topic has to be chosen and a new presentation session should be established by the teatcher.