Official course 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