ECE 650: Systems Programming and Engineering — Spring 2023

Class meeting time and location: TuTh 10:15–11:30am and 12:00–1:15pm (2 sections) — FITZPATRICK SCHICIANO B 1466 and Wilkinson 132

Image

Instructors: Dr. Rabih Younes (ry65), Dr. Afsaneh Rahbar (ar694)
Instructor 1-on-1 office hours are available 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: TA office hours found here. 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 Sakai.

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:

Misconduct

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 gcc-pratt@duke.edu.

Tentative Schedule

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