TIE-20306 Principles of Programming Languages, 5 cr
Vastuuhenkilö
Matti Rintala
Opetus
Toteutuskerta | Periodi | Vastuuhenkilö | Suoritusvaatimukset |
TIE-20306 2019-01 | 1 - 2 |
Matti Rintala |
Examination, programming assignment, and weekly exercises + lecture essays. |
Osaamistavoitteet
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ö
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. |
Oppimateriaali
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 |
Esitietovaatimukset
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
Vastaavuudet
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 |