TIE-20306 Principles of Programming Languages, 5 cr
Person responsible
Matti Rintala
Lessons
Implementation 1: TIE-20306 2015-01
Study type | P1 | P2 | P3 | P4 | Summer |
|
|
|
|
|
|
Requirements
Examination, seminar project, and weekly exercises.
Completion parts must belong to the same implementation
Learning Outcomes
Student is able to explain general principles, paradigms and basic concepts of programming languages at a higher level than that of a single programming language. Student understands the effects of these principles to language implementation and use, and is able to choose a suitable programming language for his purposes.
Content
Content | Core content | Complementary knowledge | Specialist knowledge |
1. | Phases of translation: lexical analysis, syntax analysis, semantical analysis | Expressing lexems using regular expressions and syntax using BNF. | Attribute grammars, LL and LR parsing |
2. | Object models and other implementation choices and implementation principles of the most common programming language features. | Detailed implementation of some features in a certain programming language. | |
3. | Principles of memory management, e.g., the content and importance of activation records. | Implementation of activation records in a certain computer architecture. | |
4. | Basic knowledge of different programming paradigms. Understanding programs written in different paradigms (functional, logic, concurrent, scripting, object-oriented). | Writing small programs in different programming paradigms. | Writing real programs in a certain paradigm other than the most common ones. The basics of monads in Haskell. |
5. | Type systems. Differences between static and dynamic typing. | Type inference. How static/dynamic typing affects other aspects of a programming language. | Genericity and type systems. Higher order types and type classes in Haskell. |
Study material
Type | Name | Author | ISBN | URL | Additional information | Examination material |
Lecture slides | Harsu, Geldenhuys, Rintala | Yes | ||||
Online book | Programming Languages: Principles and Paradigms | Maurizio Gabbrielli, Simone Martini | 978-1-84882-914-5 | ISBN of printed version: 978-1-84882-913-8 | Yes |
Prerequisites
Course | Mandatory/Advisable | Description |
TIE-02400 Ohjelmoinnin tekniikat | Mandatory |
Correspondence of content
Course | Corresponds course | Description |
TIE-20306 Principles of Programming Languages, 5 cr | OHJ-2050 Principles of Programming Languages, 5 cr | |
TIE-20306 Principles of Programming Languages, 5 cr | OHJ-2056 Principles of Programming Languages, 5 cr |