Introduction
Year: 1st
Semester: 2nd
Credits: 7,5 ECTS
Hours/Week: 3h
Lectures:
João Correia Lopes (JCL)
Teaching Language
Portuguese
Objectives, Skills and Learning Outcomes
This course aims at giving the students a global view of the different paradigms with the emphasis on concepts, implementation and suitability to solve the different classes of problems, leading to the understanding of the trade-offs in language design and the advantages and disadvantages of the main languages.
After completing this course, students should be able to:
- Distinguish the role of the higher level programming languages
- Distinguish the various programming paradigms
- Describe the problems associated with the implementation of programming languages
- List the innovations associated with the LISP language
- Describe characteristics and problems of the imperative language Algol 60: type system rich and structured, anomalies in "Pass-by-name", goto and memory management, the principle of orthogonality (assignment of variables procedure)
- Describe characteristics and limitations of imperative language Pascal: array limits are part of the type
- Describe characteristics and limitations of the imperative language C: arrays vs. pointers
- Describe characteristics of ML: garbage collection, higher-order functions, partial functions, curried functions, patterns, cell reference
- Describe the use of types in programming languages
- Describe the algorithm for type inference of the programming language ML
- Describe implementations of polymorphism
- Describe the need for memory management placed by calling functions and passing parameters in its various forms
- Describe key concepts related to control program execution
- Describe the purpose and semantics of exceptions in ML and C++
- Describe the support for the modularity of programs
- Describe the support for abstraction in programs
- Describe the main concepts of the Object-Orientation paradigm
- Describe the main features of the programming language Simula.
- Describe the main features of the Smalltalk programming language
- Describe the characteristics of the programming language C++
- Describe the features of the Java programming language
- Describe some features of the programming language Prolog
- List advantages of using concurrent programming
Program
- Introduction and the role of programming languages.
- Functions, recursion, lists and LISP.
- Compilers, syntax and lambda-calculus.
- 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 and distribution.
Main Bibliography
- John C. Mitchell, Concepts in Programming Languages, Cambridge University Press, 2003, ISBN=0-521-78098-5 [Library]
Complementary Bibliography
- Ravi Sethi, Programming Languages: Concepts and Constructs, 2nd Edition, International Edition, Addison-Wesley, 1996, ISBN=0-321-21074-3 [Library]
- George Springer, Daniel P. Friedman, Scheme and the Art of Programming, MIT Press, 1989, ISBN: 0-262-19288-8 [Library]
- K. Arnold, J. Gosling, The Java Programming Language, Adisson-Wesley, 3rd Edition, 2000, ISBN=0-201-70433-1 [Library]
- Leon Sterling, Ehud Shapiro, The Art of Prolog - 2nd Edition: Advanced Programming Techniques, MIT Press, 1994, ISBN=0-262-69163-9 [Library]
- Simon Thompson, Haskell: The Craft of Functional Programming, 2nd Edition, Addison-Wesley, 1999, ISBN=0-201-34275-8 [Library]
Teaching Procedures
Lectures include theoretical presentation of the course subjects, discussions and examples of computer programs. Practical work will take place outside classes in the form of individual essays.
Software
Evaluation Type
Continuous Evaluation with Final Exam.
Registered Evaluation and Occupation Components
The course as practical work and a final exam.
Description | Type | Time (Hours) | Date of conclusion |
---|---|---|---|
Teaching classes (estimated) | Lectures | 39 | — |
T1: Types and type checking | Work | 24 | 2010/03/18 |
T2: Memory management | Work | 24 | 2010/03/25 |
T3: Objects and efficiency in C++ | Work | 24 | 2010/04/29 |
T4: Portability and security in Java | Work | 24 | 2010/05/15 |
T5: Logic Programming and Prolog | Work | 24 | 2010/05/20 |
Study | 1 | — | |
Total | 160 | — |
Admission to Exams
Minimum required to pass this course: 50% Practical Assignments, 50% Exam.
Final Mark
Classification = 50% Practical Assignments + 50% Final Exam.
Where,
Practical Assignments = T1 + T2 + T3 + T4 + T5
Special Assignments
There are no special assignments. The practical work is required for all enrolled students and must be submitted before the deadlines advertised.
Special Evaluation (Working Students, ...)
Students taking exams under special regimes are expected to previously submit the practical work required for this course as ordinary students.
Improvement of Final/Distributed Classification
Students may improve the mark obtained in the practical component in the subject's next edition. Exam marks may be improved in the resit exam period.