PROG2006 - Advanced Programming


Examination arrangement

Examination arrangement: Aggregate score
Grade: Letters

Evaluation Weighting Duration Grade deviation Examination aids
School exam 40/100 3 hours B
Portfolio 60/100

Course content

The course will introduce the students to a wider spectrum of programming languages and programming paradigms, focusing on multi-paradigm aspects and modern features of programming languages. The course will cover the fundamentals of lambda calculus and functional programming style, lazy computations, memory management, event-driven and reactive programming, as well as multi-threaded and concurrent programming patterns. Languages used might cover, but not be limited to, modern C++, Rust, Haskell, Golang, Java/Kotlin.

Learning outcome

At the end of the course students shall possess specialized knowledge and skills:

Knowledge - Understand fundamentals of multi-paradigm programming - Understand the fundamentals of lambda calculus and functional programming style - Understand the main features of a lazy functional language - Understand the computation and memory management issues affecting the sequential implementation of lazy functional languages - Understand event-driven programming, reactive programming, functional programming - Understand multi-thread/concurrent programming

Skills - Be able to discuss various programming paradigms: OO, functional, reactive, event-driven, defensive - Be able to write programs in a functional style, reactive style, and others - Reason formally about functional programs - Use polymorphism in OO and Functional programming paradigms - Be able to use higher-order functions - Reason about the time and space complexity of programs - Be able to use modern approaches to multi-threaded and concurrent programming tasks

General competence - Have improved programming abilities - Be able to discuss various solutions to different programming problems - Be able to contribute to a wide spectrum of programming environments

Learning methods and activities

  • Lectures
  • Tutorials and exercises
  • Web-based learning (online resources, online lectures, tutorials)
  • Internal assignments
  • Project work

Further on evaluation

Forms of assessment: - Practical internal portfolio, internally assessed (counts for 60%) - Written electronic 3-hours exam (counts for 40%) - Both parts must be passed to pass the course. Re-sit examination: - Re-sit examination in August for the written exam. - No re-sit examination for the internal portfolio work. Internal portfolio work must be done the next time the course is run. The grades for each of the two parts are valid the following academic year.

Specific conditions

Admission to a programme of study is required:
Bachelor of Game Programming (BSP)
Computer Science (BIDATA)
Engineering - Computer Science (BIDAT)
Programming (BPROG)

Required previous knowledge

PROG1003 Object Oriented programming

Course materials

The exact course material is subject to variations from year to year, based on the developments in programming languages, and new versions and updates to standards. Example course material might contain, but not be limited, to the following: - Haskell and/or Rust programming patterns - C++ meta-programming, multi-threading patterns - Advanced C++ techniques using new revisions of C++ standard - Functional programming patterns: functors, monads, pure functions, higher order functions - Abstract data types (Haskell/Rust) - Domain modelling using OO and Functional paradigms - Languages used for examples: Haskell, Rust, C++, Python, Golang - Reactive programming - Advanced security techniques: defensive programming

More on the course



Version: 1
Credits:  7.5 SP
Study level: Intermediate course, level II


Term no.: 1
Teaching semester:  SPRING 2022

Language of instruction: English

Location: Gjøvik

Subject area(s)
  • Computer Science
Contact information
Course coordinator: Lecturer(s):

Department with academic responsibility
Department of Computer Science


Examination arrangement: Aggregate score

Term Status code Evaluation Weighting Examination aids Date Time Examination system Room *
Spring ORD School exam 40/100 B 2022-06-02 09:00 INSPERA
Room Building Number of candidates
Spring ORD Portfolio 60/100
Room Building Number of candidates
  • * The location (room) for a written examination is published 3 days before examination date. If more than one room is listed, you will find your room at Studentweb.

For more information regarding registration for examination and examination procedures, see "Innsida - Exams"

More on examinations at NTNU