Programming Languages and Environments (2017/2018) - Departamento de Informática

Additional information: http://ctp.di.fct.unl.pt/miei/lap/

Description

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.

Objectives

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.

Syllabus

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.

Bibliography
Prerequisites

Students should have completed the Introduction to Programming (Introdução à Programação) and the Object-Oriented Programming (Programação Orientada pelos Objectos) courses.

Student work
  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