ECE 650: Systems Programming and Engineering — Spring 2019

Class meeting time and location: TTh 11:45–1:05, FITZPATRICK SCHICIANO A 1464


Instructor: Dr. Rabih Younes
Duke e-mail: rabih.younes
Office: Hudson Hall 204
Office phone: 660-5051
Office hours: T 2:55–3:55 and W 10:45–11:45, or by appointment (the link to make appointments is posted on Sakai)
To provide anonymous feedback about anything related to the course: follow this link.

TAs: TAs office hours (location: Hudson Hall 214):

Course Description

Focuses on a range of topics that are central to both the design of operating systems and the programming system-level software. Students will apply knowledge of basic concepts in operating systems, networking, and programming towards these two areas. Topics covered will include concurrency, process management, hypervisors, networking, security, databases, and file systems. Students will be expected to demonstrate their understanding in these areas through a series of programming assignments covering these topics. Prerequisites: ECE 550D and ECE 551D. Instructor: Younes. 3 Units.

Textbook and Other Course Material

No textbook is required for this course. All material will be posted on Sakai. I will always try to have slides posted before class time so that you can take notes on them if you would like to.

Grading Policy


All announcements are posted on Piazza. Make sure you get Piazza email notifications.

Contacting the instructor and the TAs:


Detailed Schedule

Week Date Topic Homework
1 1/10 Introduction
2 1/15 Concurrency: Intro
2 1/17 Concurrency: Inter-Process Communication (IPC)
3 1/22 Networking: Intro
3 1/24 Networking: Sockets 1 due
4 1/29 Networking: Link Layer
4 1/31 Networking: Link Layer
5 2/5 Networking: Network Layer 2 due
5 2/7 Networking: Network Layer
6 2/12 Networking: Transport Layer
6 2/14 Networking: DHCP and DNS
7 2/19 Databases: Relational Databases
7 2/21 Databases: Introduction to SQL
8 2/26 Databases: Introduction to SQL 3 due
8 2/28 Databases: Database Transaction Processing
9 3/5 Review
9 3/7 Midterm Exam
10 3/12 NO CLASS: Spring Recess
10 3/14 NO CLASS: Spring Recess
11 3/19 OS: User-Kernel Interaction 4 due
11 3/21 OS: Process Management
12 3/26 OS: Protection and Security
12 3/28 OS: IO Handling
13 4/2 OS: File Systems
13 4/4 OS: Virtual Memory Management
14 4/9 OS: Virtual Memory Management
14 4/11 OS: Hypervisors & CPU Virtualization
15 4/16 Course review 5 due
17 4/29 Final Exam (9:00–12:00)