TIE-20306 Principles of Programming Languages, 5 cr

Person responsible

Matti Rintala

Lessons

Implementation Period Person responsible Requirements
TIE-20306 2019-01 1 - 2 Matti Rintala
Examination, programming assignment, and weekly exercises + lecture essays.

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-02402 Ohjelmointi 3: Tekniikat Mandatory   1
TIE-02408 Programming 3: Techniques Mandatory   1

1 . Jompikumpi kursseista / Either one of the courses



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  

Updated by: Kunnari Jaana, 05.03.2019