ECE 650: Systems Programming and Engineering — Spring 2022

Class meeting time and location: TuTh 8:30–9:45am and 10:15–11:30am (2 sections) — Wilkinson 136 and FITZPATRICK SCHICIANO B 1466


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

TAs: TA 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.

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:

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:

You will be able soon to voluntarily sign up for Nudge, which is a tool developed by Duke Learning Innovation that helps students retain information learned in class by recalling that information (based on evidence-based neuroscience and education research). If you sign up, you will receive one short question to answer (by text or email) one day after each lecture.


Tentative Schedule

Week Date Topic Homework
1 Thu 1/6 Syllabus + Intro
2 Tue 1/11 Concurrency: Introduction
2 Thu 1/13 Concurrency: Inter-Process Communication (IPC)
3 Tue 1/18 Networking: Introduction
3 Thu 1/20 Networking: Link Layer Proj 1 due
4 Tue 1/25 Networking: Link Layer
4 Thu 1/27 Networking: Network Layer
5 Tue 2/1 Networking: Network Layer
5 Thu 2/3 Networking: Transport Layer Proj 2 due
6 Tue 2/8 Networking: DHCP and DNS
6 Thu 2/10 Databases: Relational Databases
7 Tue 2/15 Databases: Introduction to SQL
7 Thu 2/17 Databases: Introduction to SQL Paper 1 review due
8 Tue 2/22 Databases: Database Transaction Processing
8 Thu 2/24 Paper 1 Discussion + Review Proj 3 due
9 Tue 3/1 OS: User-Kernel Interaction
9 Thu 3/3 OS: Process Management
10 Tue 3/8 NO CLASS (Spring Recess)
10 Thu 3/10 NO CLASS (Spring Recess)
11 Tue 3/15 Exam 1 (up to databases)
11 Thu 3/17 OS: Protection and Security Proj 4 due
12 Tue 3/22 OS: IO Handling
12 Thu 3/24 NO CLASS
13 Tue 3/29 OS: File Systems
13 Thu 3/31 OS: Virtual Memory Management
14 Tue 4/5 OS: Virtual Memory Management Paper 2 review due
14 Thu 4/7 Paper 2 Discussion + Course Review
15 Tue 4/12 Exam 2 (comprehensive)
15 Mon 4/18 NO CLASS Proj 5 due