First cycle
degree courses
Second cycle
degree courses
Single cycle
degree courses
School of Engineering
Course unit
IN01122661, A.A. 2019/20

Information concerning the students who enrolled in A.Y. 2019/20

Information on the course unit
Degree course Second cycle degree in
IN0529, Degree course structure A.Y. 2011/12, A.Y. 2019/20
bring this page
with you
Number of ECTS credits allocated 9.0
Type of assessment Mark
Course unit English denomination EMBEDDED SYSTEMS PROGRAMMING
Department of reference Department of Management and Engineering
E-Learning website
Mandatory attendance No
Language of instruction Italian
Single Course unit The Course unit can be attended under the option Single Course unit attendance
Optional Course unit The Course unit can be chosen as Optional Course unit

Teacher in charge MONICA REGGIANI ING-INF/05

ECTS: details
Type Scientific-Disciplinary Sector Credits allocated
Educational activities in elective or integrative disciplines ING-INF/05 Data Processing Systems 8.0
Other -- -- 1.0

Course unit organization
Period First semester
Year 1st Year
Teaching method frontal

Type of hours Credits Teaching
Hours of
Individual study
Lecture 9.0 72 153.0 No turn

Start of activities 23/09/2019
End of activities 18/01/2020
Show course schedule 2019/20 Reg.2011 course timetable

Examination board
Board From To Members of the board
12 2019 01/10/2019 15/03/2021 REGGIANI MONICA (Presidente)
TRAMARIN FEDERICO (Membro Effettivo)
11 2018 01/10/2018 15/03/2020 REGGIANI MONICA (Presidente)
TRAMARIN FEDERICO (Membro Effettivo)

Prerequisites: For the successful achievement of the course objectives, basic knowledge of Computer Engineering (data representation, computer architecture, operating systems) and Sequential Programming (data types, conditional and loop statements, arrays) is required.
Target skills and knowledge: The course provides the opportunities for students to learn fundamental knowledge as well as practical developments in the area of embedded systems programming. Topics will introduce techniques for concurrency, real-time, and reactivity.

After succesfully complete the course, students will achieve the following target skills:
- understand the specifics of embedded computer systems
- explain different mechanisms for communication and synchronization between processes
- understand characteristics of real-time systems to deal with them in programs
- program concurrent embedded applications
- design, structure, and analyze programs for embedded systems
- compare, select, and apply programming language constructs designed for concurrency
Examination methods: Grading is based on the combination of three components:
20%: Homework programming assignment
20%: Written exam
60%: Oral examination on course content
Assessment criteria: The homework programming assignment evaluates student's capabilities to design and develop a software application of practical importance.
The written exam focuses on the solution of a critical section problem.
Oral examination assesses student's knowledge about the fundamental issues presented in the course. This examination also assesses the ability to present engineering designs verbally.
Course unit contents: Introduction to embedded systems. Programming close to hardware. Programs that react to events.
Process management: concept, scheduling.
Concurrent programming: Critical Section Problem, Semaphores, Monitors, Distributed Algorithms, Consensus. Deadlock and starvation.
Real-Time Systems: reliability and repeatability, synchronous and asynchronous systems, priority inversion and priority inheritance.
Scheduling in Real-Time Systems: cyclic scheduling, rate-monotonic scheduling, EDF, resource sharing, deadlock analysis, and schedulability analysis.
Practical developments: C programming language, automatic builds, profiling, POSIX Threads, Sockets, Real-Time Linux, Raspberry Pi.
Planned learning activities and teaching methods: Concepts, methods, problems and solutions are proposed in a series of lectures. Lectures are complemented with supervised short computer based exercises. Four more complex activities, with supervision, allow the students to formulate their own implementations.
Additional notes about suggested reading: Lectures are based on the proposed textbooks.
Additional online material and articles handed out in class and available on the moodle platform will also be required.
Textbooks (and optional supplementary readings)
  • Burns, Alan; Wellings, Andy, Real-Time systems and programming languagesAda, Real-Time Java and C/Real-Time POSIXAlan Burns and Andy Wellings. Harlow [etc.]: Addison-Wesley, 2009. Cerca nel catalogo
  • Ben-Ari, Mordechai, Principles of concurrent and distributed programmingM. Ben-Ari. Harlow [etc.]: Addison-Wesley, 2006. Cerca nel catalogo
  • Kerrisk, Michael, <<The >>linux programming interfacerisorsa elettronicaa Linux and UNIX system programming handbookMichael Kerrisk. San Francisco: No Starch Press, 2010. Cerca nel catalogo