course-details-portlet

PROG2006 - Advanced Programming

About

Examination arrangement

Examination arrangement: Aggregate score
Grade: Letter grades

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

The final assessment is based on the portfolio (60%) and the electronic written exam (40%). Both are done through Inspera. The exam has a letter grade and the portfolio has a letter grade. The portfolio consists of several tasks, typically between 4-6 tasks. There are some of the tasks marked as required, and the completion of required tasks is necessary to be allowed for the submission of the final portfolio. The portfolio submission consists of individual project repository, assignment repository URLs, reflection documents, and a recorded video presentation of the individual project.

Specific conditions

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 programming patterns
  • Meta-programming, multi-threading patterns
  • Advanced programming techniques
  • 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

No

Facts

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

Coursework

Term no.: 1
Teaching semester:  SPRING 2023

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

Examination arrangement: Aggregate score

Term Status code Evaluation Weighting Examination aids Date Time Examination system Room *
Spring ORD School exam 40/100 B INSPERA
Room Building Number of candidates
Spring ORD Portfolio 60/100 INSPERA
Room Building Number of candidates
Summer UTS School exam 40/100 B INSPERA
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.
Examination

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

More on examinations at NTNU