13M111FP - Functional Programming

Course specification
Course title Functional Programming
Acronym 13M111FP
Study programme Electrical Engineering and Computing
Module Software Engineering
Type of study master academic studies
Lecturer (for classes)
Lecturer/Associate (for practice)
Lecturer/Associate (for OTC)
ESPB 6.0 Status elective
Condition Formal prerequisite does not exist, but it is expected that the student is familiar with Java programming language (the course 13S112OO2)
The goal Understanding and becoming adept in functional programming concepts through Scala programming language. Understanding the specifics of functional programming program structure and differences to imperative programming. Introduction to functional programming techniques. Development of parallel functional programs.
The outcome Upon successful completion of the course, the students will be able to: - understand specifics of functional programming - write sequential and parallel functional programs in Scala programming language - use standard Java or Scala libraries in software development
URL to the subject page
Contents of lectures Overview of Scala programming language. Values, variables and control structures. Objects and companion objects. Classes. Functions and control abstractions. Wrapper objects. Traits as means of code reusability. Mixing Java and Scala code, concurrent programming in Scala language, graphical user interface programming using Scala Swing package.
Contents of exercises Auditory practices. Projects/home works.
  1. Martin Odersky, Lex Spoon, Bill Venners, "Programming in Scala", 2nd ed, Aritma, 2010. (Original title)
  2. Alvin Alexander, "Scala Cookbook", O'Reilly, 2013. (Original title)
  3. Harold Abelson, Gerald Jay Sussman, "Structure and Interpretation of Computer Programs", 2nd ed, MIT Press, 1996. (Original title)
  4. Lecture notes for the course Functional programming
Number of hours per week during the semester/trimester/year
Lectures Exercises OTC Study and Research Other classes
2 2 1
Methods of teaching Lectures are supplied with electronic presentations. Students individually develop projects as home works. Assessment on acquired knowledge through oral presentation of completed projects.
Knowledge score (maximum points 100)
Pre obligations Points Final exam Points
Activites during lectures Test paper 40
Practical lessons Oral examination
Projects 20
Colloquia 40