Aller au contenu

Official course description

Module description

Written exam objectives

C++ programming

  • In general, all C++ mechanisms used in the codelabs and in the JetBrains Academy lessons are part of the objectives. Some specific objectives are highlighted below.
  • Memory representation for a simple C++ program.
  • Understanding and proper use of C++ qualifiers used in the codelabs.
  • Understanding and proper use of ways for passing arguments to functions/methods.
  • OO programming:
    • Class definition and inheritance.
    • Pure virtual and virtual methods.
    • Use of C++ qualifiers for class members.
    • Template classes: class/typename arguments, typed parameters (such as in Mbed OS Queue).

Testing

  • Understanding of the test framework available in Mbed OS.
  • Understanding of small test programs using this framework.
  • Given a small specification, programming a test program that allows to verify the specification.

Scheduling

  • Scheduling concept:

    • Task preemption.
    • Timing constraints (formulation, representation).
    • Periodic and aperiodic tasks (formulation, representation).
    • Metrics for performance evaluation (definitions).
  • Scheduling algorithms:

    • Classification of existing algorithms: criteria for classification.
    • Algorithms for periodic task scheduling (RMA, EDF): what they are, optimality.
    • Schedulability principle: definition.
    • Timeline Cyclic Scheduling (TCS): given a set of tasks and their time constraints, formulate a scheduling.
    • TCS: advantages/disadvantages.
    • Preemptive Scheduling Algorithms (RMA, EDF): schedulability criteria.
    • TCS/RMA/EDF: Given a set of periodic tasks, formulate the schedule in a timeline.
    • TCS/RMA/EDF: determine whether a set of tasks if schedulable using one of the algorithms.

    • Round-robin scheduling: principle.

  • Priority inversion:

    • Definition.
    • Given a set of tasks, formulate how priority inversion can arise (on a timeline).
    • Resource Access Protocols: principles and goals.
    • NPP/PIP/HLP: main properties, advantages, disadvantages.
    • NPP/PIP/HLP: given a set of tasks (with access to critical sections), formulate a possible scheduling on a timeline.
  • Interrupts:

    • Understanding of ISR mechanism implementation.
    • Support for Interrupt mechanisms on processors.

Tasks and Concurrency

  • Understanding of threads and of their basic implementation principles on Mbed OS.
  • Mbed OS multi-tasking mechanisms (EventQueue, Mutex, Semaphore, Queue, Mail):
    • Principles.
    • Understand and formulate use in a C++ program.
    • Solve basic multi-tasking problem using those mechanisms in a C++ program.

Memory

  • Explain how a Cortex-M4 image is made.
  • Understand the structure of an image.
  • Understand what memory does a C++ program need.
  • Understand C++ memory related qualifiers.
  • Detect memory related issues in a C++ program.

Bootloader

  • Principle and required components