ECE 650
Systems Programming and Engineering
Spring 2024


Class meeting times and location: TuTh 1:25–2:40pm — Wilkinson Auditorium 021
Instructor: Dr. Rabih Younes
Duke e-mail: rabih.younes
Instructor 1-on-1 office hours are available by appointment (link to make appointments on our Canvas homepage).
To provide anonymous feedback about anything related to the course, please follow the link provided on our Canvas homepage.

Teaching Assistants (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. 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 needed material will be posted on Canvas.

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:


Communications Support at Pratt

Graduate Communications and Intercultural Programs (GCIP) offers customized communications support for all graduate students at Pratt. They offer one-on-one coaching in the Graduate Communications Center (GCC) for all communications needs (e.g., academic writing, cover letters, presentations, pronunciation, master's theses/projects, PhD dissertations/publication/prelims). Additionally, GCIP offers a communication workshop series to help build specific communication skills throughout the academic year. Visit this link or email

Tentative Schedule

Week Date Topic Homework
1 Thu 1/11 Syllabus + Intro
2 Tue 1/16 Concurrency: Introduction
2 Thu 1/18 Concurrency: Inter-Process Communication (IPC)
3 Tue 1/23 Networking: Introduction
3 Thu 1/25 Networking: Link Layer Proj 1 due
4 Tue 1/30 Networking: Link Layer
4 Thu 2/1 Networking: Network Layer
5 Tue 2/6 Networking: Network Layer
5 Thu 2/8 Practice/Q&A Session (professor traveling) Proj 2 due
6 Tue 2/13 Networking: Transport Layer + Application Layer
6 Thu 2/15 Practice/Q&A Session (professor traveling)
7 Tue 2/20 Databases: Relational Databases
7 Thu 2/22 Databases: Introduction to SQL
8 Tue 2/27 Databases: Introduction to SQL
8 Thu 2/29 Databases: Database Transaction Processing Proj 3 due
9 Tue 3/5 Paper 1 Discussion + Exam 1 Review Paper 1 review due
9 Thu 3/7 Exam 1 (up to databases)
10 Tue 3/12 NO CLASS (Spring Recess)
10 Thu 3/14 NO CLASS (Spring Recess)
11 Tue 3/19 Exam 1 Muddiest Points
11 Thu 3/21 OS: User-Kernel Interaction + Process Management Proj 4 due
12 Tue 3/26 OS: Protection and Security
12 Thu 3/28 OS: IO Handling
13 Tue 4/2 OS: File Systems
13 Thu 4/4 Practice/Q&A Session (professor traveling)
14 Tue 4/9 OS: Virtual Memory Management Paper 2 review due
14 Thu 4/11 Paper 2 Discussion + Exam 2 Review
15 Tue 4/16 Exam 2 (comprehensive)
17 Fri 5/3 NO CLASS Proj 5 due