INF205 Resource-efficient programming

Credits (ECTS):5

Course responsible:Martin Thomas Horsch

Campus / Online:Taught campus Ås

Teaching language:Norsk

Course frequency:Annually

Nominal workload:125h = 26h lectures + 26h computer lab + 73h self-study including work on programming tasks

Teaching and exam period:The course starts in the spring parallel. The course has teaching/assessment in the spring parallel.

About this course

This course introduces students with programming experience in high-level programming languages (e.g., Python) to programming in a compiled programming language with explicit memory management, with a focus on efficient use of computational resources (CPU time and memory). Specific topics are:

  • Modern C++ syntax and semantics
  • Compiling and building projects
  • Pointers, memory allocation and deallocation
  • Working with the C++ Standard Library
  • Generic programming with templates
  • Implementing containers from first principles
  • Interprocess communication (MPI)
  • Programming and sustainability
  • Responsible use of high-performance computing infrastructure
  • Interfacing with ROS (e.g., for embedded systems)

Learning outcome

After completing the course you will be able to

  • implement solutions in modern C++
  • manage memory safely
  • make use of capabilities provided by the C++ Standard Library and third-party libraries
  • implement data types from "first principles"
  • assess programs and their use in terms of sustainability metrics
  • write code suitable for embedded systems and high-performance computing
  • create interfaces allowing your code to interact with other software
  • Lectures, computer lab and programming tasks.
  • Course room on Canvas, assistance in the computer lab, public course website (
  • INF120, INF200
  • Evaluation based on programming project. A-F.

  • An external examiner participates together with the internal examiner in the design of the project assignment and the evaluation guidelines.
  • Programming-related exercises and mandatory reports on the progress of the programming project. Details will be given at the beginning of the course.
  • 26h lectures, 26h computer lab