Additional information: http://ctp.di.fct.unl.pt/miei/lap/
This course studies the various options in the design of programming languages; compares and applies some noteworthy languages and programming paradigms; explains the techniques used in programming execution environments.
Knowledge:
1 - Understand the characteristics and usage scenarios of a set of programming languages: Caml, C, JavaScript, Java.
2 - Understand the functionality and the architecture of the environments for programming development and execution.
3 - General understanding of all the issues involved from the specification to the execution of programs.
Skills:
4 - Solve small, but characteristic, problems in the programming languages addressed in the course.
5 - Identify common abstractions and the fundamental differences on how those abstractions are supported in different programming languages.
6 - Express or approximate mechanisms available in a given programming language using another language that does not have them as primitive.
A – Programming and execution environments
Interpretation. Virtual Machines. Levels of interpretation. Compilation. Linking. Loading. Execution model. Portability. Security. Interoperability. Tools.
B – Procedural and functional languages
OCaml and C. Types: their role; type checking and inference; polymorphism; overloading; static and dynamic typing. Block structuring: bindings; environments; name resolution. Procedures and Functions: local and global names; parameterization; closures.
C – Object-oriented languages
JavaScript and Java. Classes and prototypes. Information hiding. Subtyping. Inheritance.
D – Scripting languages and domain-specific languages
JavaScript and Bash.
E – Programming techniques
Programming paradigms. Inductive method in OCaml. Handling pointers in C. Modeling in JavaScript. Introduction to client-side Web programming.
F – Selecting a programming language
Factors to consider. Scenarios.
Students should have completed the Introduction to Programming (Introdução à Programação) and the Object-Oriented Programming (Programação Orientada pelos Objectos) courses.
Hours per credit | 28 | ||
Hours per week | Weeks | Hours | |
Aulas práticas e laboratoriais | 28.0 | ||
Aulas teóricas | 42.0 | ||
Avaliação | 4.0 | ||
Self study | 45.0 | ||
Orientação tutorial | 3.0 | ||
Project | 46.0 | ||
Total hours | 168 | ||
ECTS | 6.0 |