ECE 650: Systems Programming and Engineering — Spring 2020

Class meeting time and location: TTh 03:05–04:20, Teer 203


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

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.

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 this semester, 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.


Detailed Schedule

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