This is an archive of a course I taught Spring 2018, preserved here as a resource for future students.

ECE 650: Systems Programming & Engineering

Section 02, Spring 2018


Fig. 1: Learn to program well enough that the dinosaurs stay in.

Overview

Lecture location: Teer 203
Lecture time: Mon/Wed - 1:25PM to 2:40PM

Instructor: Dr. Tyler Bletsch
Email: Tyler.Bletsch AT duke.edu
Office Hours: Mondays 11am-12pm in Hudson 106

Teaching Assistants:

TA Office Hours: See pinned Piazza posts

Optional Course Textbook: Operating System Concepts, 8th edition. David A. Patterson and John L. Hennessy. (Amazon, AddAll)

Links:

Schedule

Note: not all slides, resources, and assignments have been posted yet.

#DateLectureReading/ResourceHomework due
(11:55:00pm)
1 Wed 1/10 Introduction
Mon 1/15 Martin Luther King Jr Day holiday
2 Wed 1/17 Concurrency: Intro Example code: mmul.cpp
3 Mon 1/22 Concurrency: Inter-Process Communication (IPC) IPC example code
4 Wed 1/24 Networking: Intro TCP example code Homework 1,
homework1-kit.tgz
5 Mon 1/29 Networking: Sockets
6 Wed 1/31 Networking: Link Layer
7 Mon 2/5 Networking: Link Layer
8 Wed 2/7 Networking: Network Layer Homework 2
homework2-kit.tgz,
9 Mon 2/12 Networking: Transport Layer
10 Wed 2/14 Networking: DNS 
11 Mon 2/19 Databases: Intro
12 Wed 2/21 Databases: SQL Overview Homework 3:
Programing part,
Written part,
13 Mon 2/26 Databases: ACID, Transactions
14 Wed 2/28 Databases: PostgreSQL Example C++ API (code), Reference
15 Mon 3/5 Finish database topics; additional review (time permitting)
16 Wed 3/7 MIDTERM EXAM Midterm info
Mon 3/12 SPRING BREAK
Wed 3/14 SPRING BREAK
17 Mon 3/19 OS: User-Kernel Interaction
18 Wed 3/21 OS: Process Management Homework 4
homework4-kit.tgz,
19 Mon 3/26 OS: Protection and Security
20 Wed 3/28 OS: IO Handling
21 Mon 4/2 OS: IO Handling
22 Wed 4/4 OS: Filesystems
23 Mon 4/9 OS: Virtual Memory Management
24 Wed 4/11 OS: Hypervisors Paper Reading: link
25 Mon 4/16 Course review Updated 4/10!
(Due 4/16)
Homework 5
homework5-kit.tgz,
Mon 4/30 FINAL (2pm-5pm)

Syllabus & policies

Course synopsis

(Adapted from Prof. Brian Rogers's original syllabus)

This course 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 their 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.

Prerequisite: ECE 550 (Fundamentals of Computer Systems and Engineering) and ECE 551 (Programming, Data Structures, and Algorithms in C++).

Grading breakdown

Category%
Homework 18%
Homework 28%
Homework 312%
Homework 412%
Homework 515%
Midterm exam15%
Final exam30%
^ Homework breakdown clarified 3/29/2018

Assignment grading

You are expected to complete the assignments individually unless otherwise stated. However, you may discuss topics covered in the class.

Late homework submissions incur penalties as follows:

NOTE: If you feel in advance that you may need an extension, contact the instructor. We can work with you if you see a scheduling problem coming, but extensions cannot be granted at or near the due date!

Your homework grade will be based on what you submit to Sakai and when you submit it. The common excuses listed below will be rejected for the reasons shown:

ExcuseThing you could have done which invalidates excuse
My internet was slow or flaky so my submission was late.Submit with plenty of margin. There's no reason the assignment can't be submitted HOURS OR DAYS in advance.
I meant to submit, but I forgot to click the submit button.After submission, leave and re-visit the submission page to make double-sure your file is uploaded properly.
My computer broke and I lost my work!It's the modern era. Use one of the dozens of data mirroring or backup services: Dropbox, Google Drive, Box (free at Duke!), Crashplan, or just good old fashioned local backups. You should be able to set your laptop on fire and lose zero bytes of work.
I submitted the wrong file, let me send you the right file!After submission, re-download your files from Sakai to verify it's correct. Test it from scratch to ensure it's what you expect.
One tiny thing was wrong, and I can fix it! Let me get a regrade!The time to find those bugs is before submission. When you've built your program/circuit, you're not done...that's when testing begins! Test your solution under a variety of conditions. See here for a primer on software testing.
I didn't understand the requirements, let me fix my program and get a regrade!If you're the slightest bit unsure if your program meets the requirements, ask for clarification in lecture, recitation, or Piazza. If you're worried your submission won't pass our testing, run through it with a TA or the instructor.

I'm not trying to be a jerk, but this course seeks to mirror the real world, where oversights can be costly.

Grade appeals

All regrade requests must be in writing. Email the TA who graded the relevant portion with your questions. After speaking with the TA, if you still have concerns, contact the instructor.

All regrade requests must be submitted to the instructor no later than 2 weeks after the assignment was returned to you.

Academic integrity

I take academic integrity extremely seriously. Academic misconduct will not be tolerated, and all suspected violations of the Duke Undergraduate Honor Code will be referred to the Office of Student Conduct. A student found responsible for academic dishonesty faces formal disciplinary action, which may include suspension. A student twice suspended automatically faces a minimum 5-year separation from Duke University.

In addition to the measures taken by the Office of Student Conduct, the affected assignment(s) will receive zero credit, or possibly -100% in egregious 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.