Course repository for Programming 5 (Prog 5) and Programming 6 (Prog 6) of the Embedded Systems Engineering track, Software Engineering, HAN University of Applied Sciences.
Spo2 module v3.0.0 simple dec2024 is an open-source printed circuit board by AEAEmbedded, from the AEAEmbedded/ESE_PROG repository on GitHub. It is a 2-layer board of 45 × 45 mm with 35 parts on 49 nets, routed with 280 tracks and 64 vias.
It is built around the 10103594-0001LF. Its parts include 11 capacitors, 8 resistors, 2 ICs, 2 diodes and 1 connector. It belongs with the SAM D and SAM boards of this library.
Course repository for Programming 5 (Prog 5) and Programming 6 (Prog 6) of the
Embedded Systems Engineering track, Software Engineering, HAN University of Applied Sciences.
Course
Period
When
Folder
Prog 5
Period 1
September - October 2026
Prog5/ - lectures, labs, assignments, example code
Prog 5 and Prog 6 are the final lap of the programming courses in your ESE journey. Together they
work towards one overall goal: becoming a professional embedded software and systems developer.
Prog 5 (period 1) is about object-oriented C++ on microcontrollers (Arduino / SAMD21) and on the
Raspberry Pi: writing sensor libraries, designing them with UML, connecting them to the outside
world (I2C, MQTT) and testing them. Prog 6 (period 2) builds on that with software-engineering
practice - build systems, unit testing, clean code and design patterns - and applies it in the
Hackathon and the Challenge project.
Why everything is done with Git
All work in Prog 5 and 6 is done with Git, because it is the only way to reach our learning
goals. Git:
lets several developers work on the same project at the same time;
keeps a complete history of every change to the code;
makes it easy to revert a change or recover an earlier version;
helps you resolve conflicts between contributions efficiently.
More importantly, it takes you out of an artificial learning environment and into the professional
field: the companies where you will do your internship and, later, land a job use exactly these
tools. Being fluent in them is part of being a professional - see
Coder vs Developer vs Software Engineer: what's the difference?
Handing in your work
Put your assignments in a (private) Git repository and add your lecturer as a collaborator
(GitHub username jakorten). Commit as you go - a
repository with a real history of small, meaningful commits is part of what is assessed.
Prog 5 schedule and deadlines (period 1, 2026-2027)
The course starts on Thursday 3 September 2026 and runs for seven weeks. Every week combines
one design principle, a C++ topic and a UML topic, and every Friday there is a lab. The first two
labs are Git and Requirements; from week 3 onwards the Friday lab is the next step of one sensor
library that grows week by week (the BME280 is the concrete sensor we use; another I2C sensor
works just as well). The same seven-step plan is on the schedule slide of every lecture deck.
Each assignment is introduced in the lecture of the week listed below and is due one week
later, on the Thursday of the following week. Full hand-outs: Prog5/Assignments/.
Week
Lecture
Assignment
Deadline
1
Thu 3 Sep 2026
1. Make a basic stepper motor library and hand it in via your Git repository.
Thu 10 Sep 2026
2
Thu 10 Sep 2026
2. Create a UML use-case diagram with description for a sensor application (e.g. KNMI / weather station).
Thu 17 Sep 2026
3
Thu 17 Sep 2026
3.Sensor library, core + Arduino: Bosch driver wrapped in a class, Bus interface, ArduinoI2cBus, example sketch. Tag v0.3-arduino.
6.Design on paper: class, package and sequence diagrams of the library; vector<EnvironmentSensor*> with a second sensor. Tag v0.6-design.
Thu 15 Oct 2026
7
Thu 15 Oct 2026
7.Unit tests on the host with the MockBus (no mocking framework yet). 8. Review the library against DRY, KISS, SOLID, coupling / cohesion and the lifecycle checklist; add a second sensor and move the shared abstractions (Bus, Clock, EnvironmentSensor) into their own package; refactor and report. Tag v1.0.
Thu 22 Oct 2026
Resit: assignments that were not handed in on time, or that did not pass, can be (re)submitted
until the resit deadline of Thursday 29 October 2026.
Assignments 3-8 all build on the same sensor library (the Friday labs are its steps), so keep it in one repository and let its
history show how it grows: from a first Arduino version to a tested, refactored Pi library that
publishes over MQTT. Starter code per week is in Prog5/Code/ (week2: the
wrapper library, week4: Linux I2C bus, week5: sampler + MQTT).
Learning outcomes
The learning outcomes below follow the HAN engineering competencies used in the rubrics
(Analyze - Design - Manage - Control - Realize - Professionalize). Prog 5 lays the foundation;
Prog 6 raises every outcome to a professional level and assesses it in the Hackathon and the
Challenge.
Prog 5 - after period 1 you can
#
Learning outcome
Competency
P5.1
Analyse a realistic problem into user stories and SMART requirements, categorised with FURPS+ and prioritised with MoSCoW.
Analyze
P5.2
Design software with UML: a use-case diagram with descriptions, a class diagram and a sequence diagram (and a state diagram where behaviour asks for it).
Design
P5.3
Implement object-oriented C++ on embedded targets (Arduino / SAMD21 and Raspberry Pi): classes and encapsulation, constructors/destructors and object lifecycle, inheritance, abstract classes and interfaces, polymorphism, smart pointers, lambdas and callbacks, basic concurrency.
Realize
P5.4
Build reusable sensor libraries: an Arduino library for an (I2C) sensor, a C++ library for an I2C sensor on the Raspberry Pi, and connect it to an MQTT broker.
Realize
P5.5
Apply DRY, KISS, SOLID and loose coupling / strong cohesion, recognise where your own code violates them, refactor it and explain what improved.
Realize
P5.6
Test a library with basic unit tests in C++.
Control
P5.7
Use Git professionally for all your work: meaningful commits, branches, pull requests and a readable history, in a repository you share with your lecturer.
Manage
Prog 6 - after period 2 you can
#
Learning outcome
Competency
P6.1
Set up and maintain a CMake build for a C/C++ project with its own libraries and externally fetched test dependencies, and explain why build systems exist.
Realize
P6.2
Unit test at a professional level with CppUTest, including test doubles and mocks for hardware dependencies, and position tests in the testing pyramid.
Control
P6.3
Write clean, well-commented, maintainable code: recognise code smells, apply MISRA C++:2023 guidelines and use static-analysis tooling to check your own code.
Realize
P6.4
Apply embedded design patterns and architecture (state, observer, hardware proxy, cyclic executive, debouncing, fixed-point arithmetic, humble object) with awareness of their run-time and memory overhead.
Design
P6.5
Realise a working proof-of-concept for a healthcare case (Wilhelmina Children's Hospital, WKZ) - in a team under time pressure in the Hackathon and in the longer Challenge project - from analysis and SOLID design, through technical designs (class, sequence, state), to a tested implementation.
Analyze / Design / Realize
P6.6
Manage code as a team in Git with commits, pull requests, blame and code reviews throughout the project.
Manage
P6.7
Reflect and advise: give substantiated advice based on your analysis and proof-of-concept and present it convincingly (presentation, report or video), communicating professionally with the team, lecturers and domain experts.
Professionalize
Assessment: Prog 5 by the weekly assignments (see schedule below); Prog 6 with the
Hackathon and Prog 6 rubrics.
Hackathon material: the VitalSignsBox modules (ECG lead detection, SpO2 detection, temperature sensors) with firmware, API descriptions and hardware files.
How big is the Spo2 module v3.0.0 simple dec2024 PCB?
It measures 45 × 45 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Spo2 module v3.0.0 simple dec2024 use?
35 parts, built around the 10103594-0001LF. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Spo2 module v3.0.0 simple dec2024 KiCad files?
From the AEAEmbedded/ESE_PROG repository on GitHub, at the commit this page was made from: the board is Prog6/Deprecated/Hackathon/VitalSignsBox/Hardware/Spo2_module_v3.0.0_Simple_dec2024/Spo2_module_v3.0.0_simple_dec2024.kicad_pcb and its schematic Prog6/Deprecated/Hackathon/VitalSignsBox/Hardware/Spo2_module_v3.0.0_Simple_dec2024/Spo2_module_v3.0.0_simple_dec2024.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Spo2 module v3.0.0 simple dec2024 design in my own project?
Its repository states no licence, so its author keeps all rights: ask AEAEmbedded before reusing the design.