Embedded System Programming

CourseT-738-EMBE
Semester20243
ETCS8
CoreNo

Year1. year
SemesterFall 2024
Level of courseFirst cycle - Advanced / Second cycle - Introductory
Type of courseElective
PrerequisitesT-201-FOR1, Programming for Engineering
T-411-MECH, Mechatronics I
ScheduleNo schedule found.
Lecturer
Torfi Þórhallsson
Content
Level of course:  3. Undergraduate (First cycle), advanced / 4. Graduate (Second cycle), introductory.
Type of course:  Core in MSc Mechatronics Engineering, elective for other programs.
Prerequisites (mandatory):  Programming (T-201-FOR1 or T-111-PROG). Additional recommended prerequisites: Mechatronics I (T-411-MECH).Learning the basics of programming in resource limited systems such as that found in microcontrollers. The course teaches embedded software development using the C++ programming language. Basic programming skills are assumed. The course covers the following six main topics: memory management, object oriented programming, generic programming, embedded software design, performance validation, and code optimization. Each topic is accompanied by a software project using C++ and open software tool chains.
Reading material:  Real-Time C++: Efficient Object-Oriented and Template Microcontroller Programming by Christopher Kormanyos.  Alternatively, the following three on-line texts used together:
  • Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers by Peter Gottschling. Addison-Wesley Professional, 2015.
  • Software Engineering for Embedded Systems, 2nd Edition by Mark Kraeling; Robert Oshana. Newnes, 2019.
  • Hands-On Embedded Programming with C++17 by Maya Posch. Packt Publishing, 2019.
Learning outcome - Objectives
  • Write embedded programs in C++ and execute them on microcontrollers
  • Explain the important features of the C++ programming language
    Basic control structures (if, while, collections, etc.)
    Memory management (representations, data structures, and dynamic memory allocation)
    Object oriented programming (classes, abstract data types)
    Generic programming (templates, inheritance)
    Scheduling
  • Testing and debugging embedded code
  • Explain the importance of real-time operating systems
  • How to choose data structures and algorithms
Course assessment
Practical online exam. Grades given on lab assignments are part of the final grade. Late assignments are not accepted.
Reading material
No reading material found.
Teaching and learning activities
Taught for 12 weeks. A combination of lectures and on-line labs.
Language of instructionEnglish