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:

  • C++ as a modern programming language
  • Compiling and building projects
  • Pointers, memory allocation and deallocation
  • Working with the C++ Standard Library
  • Generic programming with templates
  • Implementing containers from first principles
  • Programming and sustainability
  • Interfacing with ROS (e.g., for embedded systems)

Learning outcome

After completing the course you will be able to

  • implement algorithms in modern C++
  • manage memory safely
  • use the C++ Standard Library and third-party libraries
  • implement data types from first principles
  • develop code suitable for embedded systems
  • create interfaces allowing the code to interact with other software
  • assess programs and their use in terms of sustainability metrics
  • Learning activities

    Lectures, computer lab and programming tasks.
  • Teaching support

    Course room on Canvas and assistance in the computer lab.
  • Syllabus

    • B. Stroustrup, A Tour of C++, 3rd edn., Pearson Education (ISBN 978-0-13-681648-5), 2023.
    • B. Stroustrup, H. Sutter (eds.), C++ Core Guidelines, 2015-2025.
  • Prerequisites

    INF120 or equivalent
  • Assessment method

    Portfolio evaluation comprising delivered code and oral presentation. A-F.

    Portfolio Karakterregel: Letter grades
  • About use of AI

    K2. Specified use of AI. Generative AI tools may be used to develop code that will be submitted for portfolio evaluation only if this is expressly stated in the task description.

    The use of AI must comply with the guidelines for the use of artificial intelligence (AI) at NMBU.

    Descriptions of AI-category codes.

  • Examiner scheme

    The examiner approves the portfolio evaluation setup.
  • Mandatory activity

    Mandatory attendance and active participation in computer lab sessions.
  • Teaching hours

    24h lectures, 12h computer lab
  • Admission requirements

    REALFAG