PA 8001 Ed 2015

Jump to: navigation, search

Embedded Systems Programming - Edition 2015



Mohammad Mousavi

  • Office: E 305
  • Telephone 035 16 71 22
  • Email: []

Lab Instructors

Essayas Gebrewahid

  • Office: E 309
  • Telephone 035 16 73 27
  • Email: []


On completion of the course students will be able to

  • program embedded applications
  • understand and use a kernel to support concurrency, real-time and reactivity
  • design, structure and analyze programs for embedded systems
  • explain different mechanisms for communication and synchronization between processes
  • explain characteristics of real-time systems and constructions to deal with them in programs
  • compare, select and apply programming language constructs designed for concurrency and real-time


Taking part in the lab is mandatory and one cannot pass the course without doing the practicals. In addition, there will be a final written examination. During the lectures, some bonus questions will be asked, each of which will contribute 0.1 mark to the final mark (can come in handy when rounding up).

Assessment Guide 2015

Past Examinations

Examination Date Questions Answers
April 2012 Questions Answers
August 2012 Questions Answers
November 2013 Questions Answers
January 2014 Questions Answers

Course Material and Resources

Slides and Handouts

Lecture Handouts / Slides Other Material
Lecture 1: Introduction

September 7

Slides A Raspberry-Pi Intro Clip

Manfred Broy's Talk at Halmstad Colloquium

Lecture 2: Memory-Mapped I/O

September 9

Lecture 3: Concurrency (Motivation and Mutual Exclusion)

September 17

Slides CUnit Examples
Lecture 4: Concurrency (Context Switch) and

Test Driven Development

September 18 from 09:15

Slides CUnit Examples
Lecture 5: Real Time (Periodic Tasks and Deadline)

September 21


A Clip about the Halting Problem

Lecture 6: Real Time (Schedulability)

+ Research methodology

September 22

Slides Proof of Liu and Layland's Theorem
Lecture 7: Real Time (Schedulability, Cont'd)

September 24

Slides of Lecture 5 are now updated with the material for this lecture.
Lecture 8: Java Programming for Android (Basics)

October 5

Lecture 9: Java Programming for Android (UI and Concurrency)

October 12


Local Echo Example

Echo Server Example

Lecture 10: Java Programming for Android (Communication and Services)

+ Model Examination

October 13

Model Examination

Model Examination with Solutions

Network Echo Example

Practical Descriptions

Please note that the solutions to the practical have to be submitted via blackboard before the deadline.

Practical Description Deadline Notes
Practical 0: Introduction to C and Raspberry PI PA_8001_2015_Practical_0 September 18, 2015 20:00
Practical 1: Concurrency: Manual Interleaving PA_8001_2015_Practical_1 September 25, 2015 20:00
Practical 2: Scheduling and Concurrency PA_8001_2015_Practical_2 October 2, 2014 20:00
Practical 3: Android Programming PA_8001_2015_Practical_3 | October 16, 2014 20:00

Studying, Summarizing and Presenting Research Papers

Two groups of students (thus, 4 people) join to read, summarize and present one of the following papers.

  • G.R. Andrews and F.B. Schneider, Concepts and Notations for Concurrent Programming, ACM Computing Surveys, 15(1):4--43, 1983. (This paper is split into 2 parts: Sections 1--3 to be presented by one group and sections 1, 4--6 by another group.)
  • E.W. Dijkstra, The structure of THE multiprogramming system. Comm. ACM 11(5): 1--346, 1968. and E.W. Dijkstra, Solution of a problem in concurrent programming control. Comm. ACM 8(9): 569, 1965. L. Lamport. A New Solution of Dijkstra's Concurrent Programming Problem. Comm. ACM 17(8):453--455, 1974. (These three papers are to be presented in one report and one presentation.)
  • John Hughes. Software Testing with QuickCheck. In Poc. of CEFP 2009, vol. 6299 of LNCS, pp. 183-223, 2009.
  • D. Janzen and H. Saiedian. Test-Driven Development: Concepts, Taxonomy, and Future Direction. IEEE Computer 38(9):43--50, 2005.
  • L. Lamport. Specifying Concurrent Program Modules, ACM Tran. Prog. Lang. 5(2):190--222, 1983. (Only up to and including section 3.5)
  • C. Liu and J. Layland. Scheduling algorithms for multiprogramming in a hard real-time environment",Journal of the ACM 20 (1): 46–61, 1973.
  • L. Sha, R. Rajkumar, and J.P. Lehoczky. Priority inheritance protocols: an approach to real-time synchronization, IEEE Transactions on Computers 39 (9): 1175–1185, 1990.
  • W. Taha, V. Gaspes, and R. Page. Accurate Programming: Thinking about programs in terms of properties, Proc. of DSL'11, vol. 66 of EPTCS, pp. 236-260, 2011.

  • Suggestions for papers from the groups are also welcome and should be sent by email to the lecturer of the course.

The presentations will be held during the last lectures. The deadline for submitting the summary reports is October 2, 2015, 20:00. The summaries should be sent by email to the lecturer of the course. The summary reports are to be typeset in LaTex using this template. The structure of the report and the presentation will be posted here and discussed during the lectures.

Please email your presentations before 08:00AM on the day of presentation (October 15 or October 19) to the lecturer of the course.

Presentation Groups 2015

Resources for C Programming

Recommended Text

We will occasionally use / refer to parts of the following books:

Alan Burns and Andy Wellings, Real-Time Systems and Programming Languages (4th Ed.), Addison Wesley, 2009.

James W. Grenning, Test-Driven Development for Embedded C, The Pragmatic Bookshelf, 2010.

These are only optional resources for the course.

Raspberry PI

For the first half of the course, we will use the Raspberry PI board. The boards will be provided at the lab and you will have access to the lab even outside lab hours. However, if you would like to have your own Raspberry PI and have a lot of fun, you can buy a Raspberry PI B+ board (e.g., from [1], which usually includes also a Micro SD card). You need to buy/have your own micro USB adapter. In order to use a computer display you need an HDMI cable or a converter to the appropriate input for your display monitor.


The course is based on the earlier editions of the course given by Veronica Gaspes. Also, the material provided by Johan Nordlander has been essential in the set up of this course.

Back to Home