Courses‎ > ‎

[2016 Spring] System Programming (Classes 1 & 2)


JeongGil Ko (Paldal Hall 604)

Teaching Assistants:

Jinhyuk Yim (Paldal Hall 901)
Namkyung Kim (Paldal Hall 901)
Seungmin Kim (Paldal Hall 901)
Jiwoong Park (Paldal Hall 901)

Class objectives:

With increasing interest in ubiquitous computing, the attractiveness of embedded systems are catching the attention of many computer scientists and application system designers. At the basis of such embedded systems programming is the knowledge that will be discussed in this course. We will learn the basics of what one should know to perform programming in the embedded systems and distributed systems environments. Specifically, this course will discuss topics such as assemblers, linkers, loaders, basic operating system principles, device drivers and also learn how to combine these topics and design real-world systems. This course also includes a practice portion where we will deal with loaders, cross-compilers, operating systems and device drivers in an embedded Linux programming environment. 

Text book:

Leland Beck, "System Software", Addison Wesley


 Week TopicsLecture Notes Misc. 
 1 What is System Programming?, Basic Linux practice  
 2  I/O (stream, file, pipe), Intro to embedded board  
 3 Program Management, Embedded board porting practice  
 4 SIC Machine Architectures, Kernel Compile and Porting HW#1
 5 Assemblers, Kernel Compile and Porting Practice  
 6 Assembler functionalities, Embedded file system practice HW#2 
 7 Introduction to embedded systems, Embedded bootloader practice  
 8Midterm exam   
 9Project proposal, Embedded Device Drivers   
 10 Loaders & Linkers, Embedded Device Drivers  
 11Loader & linker functionalities, Embedded device control practice  
 12 System Calls (Process, Libraries), Projects  
 13 System Calls (Signal, Socket), Projects  
 14Recent issues in system programming  
 15Final Project Presentation   
 16 Final Exam  


HW#1: Arduino-related homework
HW#2: Assembler-related homework


Make your own project! Design, pitch and convince me and fellow students that you project is awesome and it relates heavily with embedded systems and system programming. We will provide you with an embedded computing board (eCube), an Arduino device, and a set of sensors. Use these platforms to design an application system that can also interact through the Internet to a PC or mobile device.