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:
- Wending Lin (wl177) — Head TA
- Prathikshaa Rangarajan (pr109) — Lead TA for Projects
- Simeng Wang (sw404) — Lead TA for Grading
- Xinyi Gong (xg51) — Lead TA for Piazza and Cheating Detection
TAs office hours (location: Hudson Hall 214):
- MW 1:30–3:30: Simeng and Xinyi
- TTh 4:30–6:30: Wending and Prathikshaa
- F 2:00–4:00: TA's rotate weekly by pairs
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%):
- Midterm exam: 15%
- Final exam: 25%
-
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!
- Try to review class lectures the evening (or next day) of every class.
- 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!
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:
- For questions that can be answered by any TA or the instructor: use Piazza
- To contact a specific TA or the instructor: use email (do not text, facebook, ...)
- If you have questions related to understanding a project: email the Lead TA for Projects
- If you have questions related to grading: email the Lead TA for Grading
- If you have questions about other logistical and administrative issues: email the Head TA
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.
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/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)
|
|