Implementation of Programming Languages
Keywords |
Classification |
Keyword |
OFICIAL |
Computer Science |
Instance: 2024/2025 - 2S
Cycles of Study/Courses
Teaching Staff - Responsibilities
Teaching language
Suitable for English-speaking students
Objectives
Introduction to the design principles and implementation techniques of functional and imperative languages.
Learning outcomes and competences
Students should adquire the following competencies: (a) understand the principles used for implementating lazy functional language (such as Haskell) on convencional architectures, the technological problems and available solutions; (b) know how to design and implement a runtime system for an imperative programming language (or components like a garbage collector or an interpreter).
Working method
Presencial
Pre-requirements (prior knowledge) and co-requirements (common knowledge)
Knowledge in functional and imperative programming languages (e.g. Haskell and C, Java); knowledge of low-level programming language (e.g. C),
Program
Module on functional languagesDefinition of a minimal functional languages based on the lambda-calculus. Strict vs. non-strict semantics. Call-by-value and call-by-name reduction strategies. Implementation of higher-order functions using closures. The SECD abstract machine. Call-by-need reduction strategy using graph reduction. The architecure of the Glasgow Haskell Compiler. Translation in Core language of some Haskell language features. Translation of type classes using dictonaries. Code optimization by Core-to-Core program transformation. The STG abstract machine. Operational semantics of the STG.
Module on imperative languagesIntroduction to runtime memory management. Reference Counting. Introduction to Garbage Collection. Algorithms for garbage collection - Mark and Sweep, Mark and Compact, Copy Collection, Generational Garbage Collection - and their time and space complexity. Java case-study.
Mandatory literature
S.L. Peyton Jones;
The implementation of functional programming languages. ISBN: 0-13-453325-9
S.L. Peyton Jones;
Implementing functional languages. ISBN: 0-13-721952-0
Richard Jones;
Garbage collection. ISBN: 978-0-471-94148-4
Benjamin J. Evans, James Gough, Chris Newland; Optimizing Java, O'Reilly Media, 2018. ISBN: 1492025798
Teaching methods and learning activities
Lectures presenting concepts aided with illustrative examples of principles of language design and implementation.
Evaluation Type
Distributed evaluation without final exam
Assessment Components
designation |
Weight (%) |
Teste |
40,00 |
Trabalho prático ou de projeto |
60,00 |
Total: |
100,00 |
Amount of time allocated to each course unit
designation |
Time (hours) |
Estudo autónomo |
60,00 |
Frequência das aulas |
42,00 |
Elaboração de projeto |
60,00 |
Total: |
162,00 |
Eligibility for exams
N/A
Calculation formula of final grade
Students are assessed by two practical assignments (graded for 6 points each out of 20) and two written tests (graded for 4 points each out of 20). The minimal grade on the written tests for aproval is 40%.
The rules above apply equally for classification improvment and special assessments.
Special assessment (TE, DA, ...)
The same rules for calculating the final grade apply.
Classification improvement
The same rules for calculating the final grade apply.
Observations
The second sitting exam follows the same classification rules as the two sittings. The classification of midterm projects cannot be improved on the second sitting.