Implementation of Programming Languages
Keywords |
Classification |
Keyword |
OFICIAL |
Computer Science |
Instance: 2010/2011 - 2S
Cycles of Study/Courses
Teaching language
Portuguese
Objectives
Introduce students to the theoretical and practical concepts related to the design and implementation of functional and logic languages.
Program
Implementation of Functional languages:
Brief introduction to the lambda-calculus; definition of a toy functional language by extension of 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 evaluation and graph reduction. The STG abstract machine. Using Haskell as a meta-language for specifying interpreters and compilers for a minimal functional language.
Implementation of Logic Programming Languages:
SLD resolution and Prolog. The Warren's Abstract Machine (WAM): compilation, unification, execution stacks, environments, choice-points, backtracking and indexing. WAM extensions: tabling. The YapTab tabling system: basic execution model, table space, suspending/resuming the computation, compiling tabled predicates.
Mandatory literature
000001855. ISBN: 0-13-453325-9
000000122. ISBN: 0-262-01123-9
Evaluation Type
Distributed evaluation with final exam
Assessment Components
Description |
Type |
Time (hours) |
Weight (%) |
End date |
Attendance (estimated) |
Participação presencial |
67,50 |
|
|
|
Total: |
- |
0,00 |
|
Eligibility for exams
Students are required to assist a minimum of 3/4 of practical classes.
Calculation formula of final grade
Students are assessed by their performance in the following components:
1) Two practical assignments worth 4 points each out of 20.
2) Written examination: 12 points out of 20.
Furthermore, students are required to have at least 40% in the written examination.