ECE 650: Systems Programming and Engineering — Spring 2021

Class meeting time and location: TuTh 08:30–09:45 am EST, Zoom (check Sakai Zoom Meetings)


Instructor: Dr. Rabih Younes
Duke e-mail: rabih.younes
Office: Hudson Hall 204
Office phone: 660-5051
Office hours: Zoom meetings by appointment (link to make appointments posted on Sakai)
To provide anonymous feedback about anything related to the course, please follow the Qualtrics link posted on Sakai.

TAs: TAs office hours (location: Zoom):

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.

Learning Objectives

Having successfully completed this course, the student should be able to:

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

Important Notes

***Extremely important advice:

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

We can only grade what we receive. Always check what you are submitting and make sure you submit the right files.

Contacting the instructor and the TAs:

I started using Nudge last year, which is a tool developed by Duke Learning Innovation that helps students retain information learned in class. Click here if you would like to voluntarily sign up for it and receive one short question to answer (by text or email) one day after each lecture.


Tentative Schedule

Week Date Topic Homework
1 Thu 1/21 Syllabus + Intro
2 Tue 1/26 Concurrency: Introduction
2 Thu 1/28 Concurrency: Inter-Process Communication (IPC)
3 Tue 2/2 Networking: Introduction
3 Thu 2/4 Networking: Sockets Proj 1 due
4 Tue 2/9 Networking: Link Layer
4 Thu 2/11 Networking: Link Layer
5 Tue 2/16 Networking: Network Layer Proj 2 due
5 Thu 2/18 Networking: Network Layer
6 Tue 2/23 Networking: Transport Layer
6 Thu 2/25 Networking: DHCP and DNS
7 Tue 3/2 Databases: Relational Databases Proj 3 due
7 Thu 3/4 Databases: Introduction to SQL
8 Thu 3/11 Databases: Introduction to SQL Paper 1 review due
9 Tue 3/16 Databases: Database Transaction Processing + Paper 1 Discussion
9 Thu 3/18 Review
10 Tue 3/23 Midterm Exam
10 Thu 3/25 OS: User-Kernel Interaction
11 Tue 3/30 OS: Process Management Proj 4 due
11 Thu 4/1 OS: Protection and Security
12 Tue 4/6 OS: IO Handling
12 Thu 4/8 OS: File Systems
13 Tue 4/13 OS: Virtual Memory Management
13 Thu 4/15 OS: Virtual Memory Management Paper 2 review due
14 Tue 4/20 OS: Hypervisors & CPU Virtualization + Paper 2 Discussion
14 Thu 4/22 Course Review Proj 5 due
15 Fri 4/30 Final Exam (9:00am–12:00pm)