Programming Embedded Systems in “C”

1. Course Title Programming Embedded Systems in “C”
2. Code 4ФЕИТ05022A
3. Study program Dedicated Embedded Computer Systems and Internet of Things
4. Organizer of the study program (unit, institute, department) Faculty of Electrical Engineering and Information Technologies

Ss. Cyril and Methodius University in Skopje

5. Degree (first, second, third cycle) Second cycle
6. Academic year/semester Year 1 Semester 1
7. Workload measured by number of ECTS credits 6
8. Lecturer (In case of several lecturers to note the responsible one) Dr. Zoran Ivanovski
9. Language of teaching Macedonian and English
10. Course Prerequisites None
11.

Course Goals (acquired competencies) and study results: By completing the course, the student acquired knowledge and understanding of programming concepts and techniques necessary for optimal and efficient programming of embedded systems. The acquired knowledge enables him to design software for embedded systems, its implementation, testing and deployment. The course is also the basis for following some of the other courses in the field of software for embedded systems.

12. Course Syllabus (with Chapters) and study results for each chapter:

1. Embedded systems development environments.

Being familiar with installation, configuring and utilization of development environments.

2. Basic programming techniques: program flow control, arrays, functions.

3. Memory management: pointers, arrays of pointers, function pointers, advanced pointer techniques, structures and unions.

4. Data structures: temporal analysis and memory utilization; linked lists, stacks and ques.

Up to this point the student will understand the basics of code implementation and optimization for Embedded platforms.

5. Conditional compilation, preprocessing directives, operations with files.

Acquiring knowledge and experience with code control and compiler optimization.

6. Functions with variable arguments, command-line arguments. Introduction to processes.

7.  Introduction to system calls.

The student will know how to efficiently utilize system calls for building optimal software implementations.

8. Advanced compiler and linker features.

The student will be able of using advanced compiler and linker features for fast and easy software development management. 

13.

Interconnection of Courses: The course is a base for other advanced courses in the Program, like Dedicated and contemporary computer networks, IoT Standards and Protocols, Design of Smart IoT Devices and others. Most of the programing in the other courses in the Study Program, as well as in Embedded systems in general, is implemented in C; Hence, knowledge of optimal C programming is step 1 for other activities in the Program. 

14.

Detailed description of teaching and work methods: Lecturing, consultations, project works and presentations

 

15. Total number of course hours 180
16.

 

Forms of teaching 

 

16.1 Lectures-theoretical teaching 45 hours

 

16.2 Exercises (laboratory, practice classes), seminars, teamwork 45 hours

 

16.3 Practical work (hours): 25 hours
17.

 

 

Other course activities

 

17.1 Projects, seminar papers 20 hours
17.2 Individual tasks 0 hours
17.3 Homework and self-learning 45 hours
18. Conditions for acquiring teacher’s signature and for taking final exam: 60% of all required course activities
19. Grading
19.1 Quizzes 0 points
19.2 Seminar work/project (presentation: written and oral) 50 points
19.3 Final Exam 50 points
20. Grading criteria (points) up to 50 points 5 (five) (F)
from 51 to 60 points 6 (six) (E)
from 61 to 70 points 7 (seven) (D)
from 71 to 80 points 8 (eight) (C)
from 81 to 90 points 9 (nine) (B)
from 91 to 100 points 10 (ten) (A)
21. Method of monitoring of teaching quality Self-evaluation and student surveys
 
22. Literature
22.1. Required Literature
No. Author Title Publisher Year
1. A.N.Sloss, D.Symes and C. Wright ARM System Developer’s Guide: Designing and Optimizing System Software Elsevier Inc. 2004
22.2. Additional Literature
No. Author Title Publisher Year
1. Jonathan W. Valvano  Developing Embedded Software in C Using ICC11/ICC12/Metrowerks University of Texas 2006
2. Elecia White Making embedded systems: design patterns for great software O’Reilly Media 2011