Difference between revisions of "PA 8001 Ed 2014"
(41 intermediate revisions by one user not shown) | |||
Line 35: | Line 35: | ||
In addition, there will be a final written examination. | 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). | 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). | ||
+ | |||
+ | === [[media:assessment_guide_2014.pdf|Assessment Guide 2014]] === | ||
+ | |||
+ | '''Please note that assessment guide 2013 is now obsolete and is replaced by the above-mentioned document.''' | ||
=== Past Examinations === | === Past Examinations === | ||
Line 52: | Line 56: | ||
|} | |} | ||
− | |||
Line 64: | Line 67: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
− | ! Lecture !! Handouts / Slides !! | + | ! Lecture !! Handouts / Slides !! Other Material |
|- | |- | ||
− | | Lecture 1: Introduction || [[media:lecture1_handouts_2014.pdf| Handouts]] [[media:lecture1_slides_2014.pdf| Slides]] | + | | Lecture 1: Introduction || [[media:lecture1_handouts_2014.pdf| Handouts]] [[media:lecture1_slides_2014.pdf| Slides]] || [https://www.youtube.com/watch?v=U7Dj7R8bu4k A Raspberry-Pi Intro Clip]. |
|- | |- | ||
− | | Lecture 2: Memory-Mapped I/O || | + | | Lecture 2: Memory-Mapped I/O || [[media:lecture2_handouts_2014.pdf| Handouts]] [[media:lecture2_slides_2014.pdf| Slides]] || [[media:read_str.zip| C code for the past bonus question]] |
|- | |- | ||
− | | Lecture 3: Concurrency (Motivation and Mutual Exclusion) || | + | | Lecture 3: Concurrency (Motivation and Mutual Exclusion) || [[media:lecture3_handouts_2014.pdf| Handouts]] [[media:lecture3_slides_2014.pdf| Slides]] || |
|- | |- | ||
− | | Lecture 4: Concurrency (Context Switch) || || || | + | | Lecture 4: Concurrency (Context Switch) || [[media:lecture4_handouts_2014.pdf| Handouts]] [[media:lecture4_slides_2014.pdf| Slides]] || |
|- | |- | ||
− | | Lecture 5: | + | | Lecture 5: Test Driven Development (Exercise) || || [[media:fibproject_2014.zip| Xcode Project for the Fibonacci Series]] |
+ | |||
+ | (main.c is the file to look into if you do not use Xcode) | ||
|- | |- | ||
− | | Lecture 6: | + | | Lecture 6: Real Time (Periodic Tasks and Deadline) || [[media:lecture6_handouts_2014.pdf| Handouts]] [[media:lecture6_slides_2014.pdf| Slides]] || |
|- | |- | ||
− | | Lecture 7: Real Time ( | + | | Lecture 7: Real Time (Schedulability) || [[media:lecture7_handouts_2014.pdf| Handouts]] [[media:lecture7_slides_2014.pdf| Slides]] || [https://www.youtube.com/watch?v=92WHN-pAFCs A Clip about the Halting Problem] |
|- | |- | ||
− | | Lecture 8: Real Time ( | + | | Lecture 8: Real Time (Schedulability, Cont'd) |
+ | + Research methodology | ||
+ | || [[media:lecture8_handouts_2014.pdf| Handouts]] [[media:lecture8_slides_2014.pdf| Slides]] || | ||
+ | [[media:liu_layland_proof_2014.pdf|Proof of Liu and Layland's Theorem]] | ||
+ | |||
+ | [https://www.youtube.com/watch?v=KbSPPFYxx3o A Clip about Power Point Slides] | ||
|- | |- | ||
− | | Lecture 9: | + | | Lecture 9: Java Programming for Android (Basics) || [[media:lecture9_handouts_2014.pdf| Handouts]] [[media:lecture9_slides_2014.pdf| Slides]] || [[media:HelloWorld2014.zip|(Extended) Hello World Android Application]] |
|- | |- | ||
− | | Lecture 10: Java Programming for Android ( | + | | Lecture 10: Java Programming for Android (UI and Concurrency) || [[media:lecture10_handouts_2014.pdf| Handouts]] [[media:lecture10_slides_2014.pdf| Slides]] || [[Java Android Echo Application Instructions|Step-by-step guide to the echo application]] |
|- | |- | ||
− | | Lecture 11: Java Programming for Android ( | + | | Lecture 11: Java Programming for Android (Communication and Services) |
− | + | + Model Examination | |
− | | | + | || [[media:model_exam_2014.pdf| Model Examination]] [[media:model_exam_2014_with_solutions.pdf| Model Examination with Solutions]] || |
|- | |- | ||
|} | |} | ||
Line 102: | Line 112: | ||
| Practical 0: Introduction to C and Raspberry PI || [[PA_8001_2014_Practical_0]] || September 19, 2014 20:00 || | | Practical 0: Introduction to C and Raspberry PI || [[PA_8001_2014_Practical_0]] || September 19, 2014 20:00 || | ||
|- | |- | ||
− | | Practical 1: Concurrency: Manual Interleaving || | + | | Practical 1: Concurrency: Manual Interleaving || [[PA_8001_2014_Practical_1]] || September 26, 2014 20:00 || |
|- | |- | ||
− | | Practical 2: Scheduling and Concurrency || || October | + | | Practical 2: Scheduling and Concurrency || [[PA_8001_2014_Practical_2]] || October 10, 2014 20:00 || |
|- | |- | ||
− | | Practical 3: Android Programming | + | | Practical 3: Android Programming || [[PA_8001_2014_Practical_3]] || October 24, 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. | ||
+ | |||
+ | |||
+ | * The list will be augmented in the coming days; 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 17, 2014, 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 [[media:term_paper_template_2014.zip|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 20 or October 22) to the lecturer of the course. | ||
+ | |||
+ | |||
+ | === [[Presentation Schedule (Edition 2014)]] === | ||
+ | |||
+ | |||
+ | === Extra Practicals === | ||
+ | |||
+ | For students requiring assistance in programming skills, extra practicals are organized on Fridays. | ||
+ | |||
+ | |||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! Practical !! Description !! Deadline !! Notes | ||
+ | |- | ||
+ | | Extra Practical 0: C programming: Linked Lists || [[PA_8001_2014_Extra_Practical_0]] || September 19, 2014 20:00 || | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | |||
+ | Resources for C Programming: | ||
+ | |||
+ | * [http://www.eskimo.com/~scs/cclass/notes/top.html C Programming Notes] | ||
+ | * [http://www2.its.strath.ac.uk/courses/c/ C Programming] | ||
+ | * [http://publications.gbdirect.co.uk/c_book/ The C Book] | ||
+ | * [http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/ C Tutorial] | ||
=== Recommended Text === | === Recommended Text === |
Latest revision as of 22:42, 15 October 2014
Contents
Embedded Systems Programming - Edition 2014
Contact
Lecturer
- Office: E 305
- Telephone 035 16 71 22
- Email: [m.r.mousavi@hh.se]
Lab Instructors
- Office: E 309
- Telephone 035 16 73 27
- Email: [essayas.gebrewahid@hh.se]
Objectives
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
Assessment
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 2014
Please note that assessment guide 2013 is now obsolete and is replaced by the above-mentioned document.
Past Examinations
Examination Date | Questions | Answers |
---|---|---|
April 2012 | Questions | Answers |
August 2012 | Questions | Answers |
November 2013 | Questions | Answers |
Course Material and Resources
Slides and Handouts
Lecture | Handouts / Slides | Other Material |
---|---|---|
Lecture 1: Introduction | Handouts Slides | A Raspberry-Pi Intro Clip. |
Lecture 2: Memory-Mapped I/O | Handouts Slides | C code for the past bonus question |
Lecture 3: Concurrency (Motivation and Mutual Exclusion) | Handouts Slides | |
Lecture 4: Concurrency (Context Switch) | Handouts Slides | |
Lecture 5: Test Driven Development (Exercise) | Xcode Project for the Fibonacci Series
(main.c is the file to look into if you do not use Xcode) | |
Lecture 6: Real Time (Periodic Tasks and Deadline) | Handouts Slides | |
Lecture 7: Real Time (Schedulability) | Handouts Slides | A Clip about the Halting Problem |
Lecture 8: Real Time (Schedulability, Cont'd)
+ Research methodology |
Handouts Slides | |
Lecture 9: Java Programming for Android (Basics) | Handouts Slides | (Extended) Hello World Android Application |
Lecture 10: Java Programming for Android (UI and Concurrency) | Handouts Slides | Step-by-step guide to the echo application |
Lecture 11: Java Programming for Android (Communication and Services)
+ Model Examination |
Model Examination Model Examination with Solutions |
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_2014_Practical_0 | September 19, 2014 20:00 | |
Practical 1: Concurrency: Manual Interleaving | PA_8001_2014_Practical_1 | September 26, 2014 20:00 | |
Practical 2: Scheduling and Concurrency | PA_8001_2014_Practical_2 | October 10, 2014 20:00 | |
Practical 3: Android Programming | PA_8001_2014_Practical_3 | October 24, 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.
- The list will be augmented in the coming days; 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 17, 2014, 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 20 or October 22) to the lecturer of the course.
Presentation Schedule (Edition 2014)
Extra Practicals
For students requiring assistance in programming skills, extra practicals are organized on Fridays.
Practical | Description | Deadline | Notes |
---|---|---|---|
Extra Practical 0: C programming: Linked Lists | PA_8001_2014_Extra_Practical_0 | September 19, 2014 20:00 |
Resources for C Programming:
Recommended Text
We will occasionally use / refer to parts of the following book:
James W. Grenning, Test-Driven Development for Embedded C, The Pragmatic Bookshelf, 2010.
The book is an optional resource for the course. If you want to have your own copy, you can order it, for example, from Amazon.
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.
Acknowledgement
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.