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:
- Zhu Li (zl248) — Head TA for projects
- Hanzhou Shen (hs312) — Head TA for grading
- Qingyu Wu (qw90) — Head TA for online student questions
- Susie Su (ss1097) & Zhening Zhang (zz224) — Head TAs for autograder development
- Feng Wang (fw84) — Head TA for plagiarism checking
TA office hours (location: Hudson Hall 214):
- MW 3:00–5:00
- TuTh 11:30–1:30
- F 10:00–12:00
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:
- program using multiple processes and threads, sockets, and SQL;
- describe the OSI and TCP/IP layers and some of their main protocols;
- create, manupulate, and interface with databases;
- describe the basic functionalities of operating systems; and
- critique academic research papers and write reviews about them.
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
- Projects (50%): Five projects — long (start early!) — with the following tentative grade distribution:
- Project 1: 7%
- Project 2: 7%
- Project 3: 11%
- Project 4: 11%
- Project 5: 14%
- Exams (40%):
-
Paper reviews and discussions (10%): Reviews of about two academic research papers related to course topics. The review for each paper should follow the following format:
- Motivation(s): describe the main motivation(s) behind the work of the paper in 1 sentence
- Contribution(s): state the main contribution(s) of the paper in 1 sentence
- Approach: provide a high-level description of the approach in 1–3 sentences
- Strengths: provide a subjective description of the strengths of the paper in 1–3 sentences
- Weaknesses: provide a subjective description of the weaknesses of the paper in 1–3 sentences
- Late policy: Late submissions are not allowed unless you have a valid excuse. In that case, email the Head TA about it (and CC me) as soon as possible and wait for a decision (might involve a penalty, depending on the excuse). Refer
to this list of common but unacceptable excuses borrowed from Dr. Bletsch's webpage.
- Regrading policy: Regrade requests must be submitted no later than one week after the assignment grade is released.
Important Notes
***Extremely important advice:
- Start as early as you can! Leave ample time for testing!
- Review class lectures after every class (before the next one).
- Manage your time well and work on multiple assignments (in different courses) in parallel. Split bigger task into smaller (realistic) ones. Make sure you use a calendar and a to-do list.
- Use Git to keep track of previous versions of your work. Use a cloud storage service to back up your work.
- Ask questions! We are here to help! We want you to succeed!
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:
- For questions that can be answered by any TA or the instructor: use Ed Discussion
- To contact a specific TA or the instructor: use email (do not text, facebook, ...)
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.
Misconduct
- Academic misconduct will not be tolerated and will be taken very seriously.
- You are expected to complete the assignments individually unless otherwise stated.
- Students are encouraged to share ideas, learn from each other, and learn from online sources, but cheating is not tolerated.
- Any borrowed design/code/etc. — if allowed to be borrowed — should be properly cited.
- Students suspected violating the Duke Community Standard will be reported.
- In addition to the measures taken by the administration, the affected assignment(s) will receive zero credit, or possibly -100% in extreme cases.
- If you are considering this course of action, please see me instead and we can work something out! I want every student in my course to be successful.
- Note that programming submissions will be compared to one another and to previous semesters using state-of-the-art tools to detect signs of plagiarism.
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 |