|
Course Catalog 2014-2015
TIE-20306 Principles of Programming Languages, 5 cr |
Person responsible
Matti Rintala
Lessons
Study type | P1 | P2 | P3 | P4 | Summer | Implementations | Lecture times and places |
|
|
|
|
|
|
|
|
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 | Edition, availability, ... | Examination material | Language |
Book | Ohjelmointikielet - periaatteet, käsitteet, valintaperusteet | Maarit Harsu | 952-14-0981-9 | No | Suomi | ||
Lecture slides | Harsu, Geldenhuys, Rintala | Yes | English | ||||
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 | English |
Prerequisites
Course | Mandatory/Advisable | Description |
TIE-02400 Ohjelmoinnin tekniikat | Mandatory |
Prerequisite relations (Requires logging in to POP)
Correspondence of content
Course | Corresponds course | Description |
|
|
|
|
|
More precise information per implementation
Implementation | Description | Methods of instruction | Implementation |
Lectures Excercises |
Contact teaching: 0 % Distance learning: 0 % Self-directed learning: 0 % |