TIE-20306 Principles of Programming Languages, 5 cr


Matti Rintala


Toteutuskerta Periodi Vastuuhenkilö Suoritusvaatimukset
TIE-20306 2019-01 1 - 2 Matti Rintala
Examination, programming assignment, and weekly exercises + lecture essays.


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.


Sisältö Ydinsisältö Täydentävä tietämys Erityistietämys
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. 


Tyyppi Nimi Tekijä ISBN URL Lisätiedot Tenttimateriaali
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   


Opintojakso P/S Selite
TIE-02402 Ohjelmointi 3: Tekniikat Mandatory   1
TIE-02408 Programming 3: Techniques Mandatory   1

1 . Jompikumpi kursseista / Either one of the courses


Opintojakso Vastaa opintojaksoa  Selite 
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  

Päivittäjä: Kunnari Jaana, 05.03.2019