Information

Class MeetingsMon and Wed 3:30-4:45pm in CIWW 312
RecitationsThu 12:30-1:45pm in CIWW 312
First LectureSep 4, 2019
Last LectureDec 11, 2019
Midterm ExamOct 23, 2019, 3:30-4:45pm in CIWW 312
Final ExamDec 18, 2019, 4:00-5:50pm in CIWW 312
InstructorThomas Wies, Office 60FA 403, Office Hours Tue 4:00-5:00pm, or by appointment
Recitation leaderGoktug Saatcioglu, Office WWH 905, Office Hours Fri 3:00-4:00pm
GraderOwura Asare, Office Hours Mon 2:00-3:00pm in WWH 412

Overview

This course aims to give students an understanding of what's "under the hood" in a modern computer system. Take this class to boost your confidence on a computer and to understand how everything works like never before! We'll cover basic topics including how machines represent and execute programs, how user program interact with the OS, as well as advanced topics including how to write networked and concurrent programs. These topics are supported by a series of challenging lab assignments in C.

Prerequisites: You need to be comfortable with programming (e.g. in Java) and the UNIX environment.

Topics

Throughout the semester, we will investigate the following topics in detail among others:

  • Programming in C
  • Machine Programming and Assembly
  • Memory Management
  • Concurrency

Details

Piazza

We will use Piazza for course-related discussions and announcements. I encourage you to ask questions when you are struggling to understand a concept - you can even do so anonymously.

Grading

Assignments (30%), midterm exam (30%), final exam (40%).

Late Submission Policy

Late submissions will be graded with a 10% penalty per day of late submission. Solutions will not be graded if they are submitted later than one week after the specified deadline.

Academic Integrity

Please review the departmental academic integrity policy. In this course, you may discuss assignments with other students, but the work you turn in must be your own. Do not copy another student's work. You should help other students on specific technical issues but you must acknowledge such interactions. Copying code or other work without giving appropriate acknowledgment is a serious offense with consequences ranging from no credit to potential expulsion.

Syllabus

The syllabus can be subject to change, so please refresh frequently.

Slides are adapted from Mohamed Zahran

Week Date Topics Materials Further Reading
1 09/04
  • Introduction
1 09/05
  • Recitation
2 09/09 Programming in C - Basics
  • Compilation
  • Expressions
  • Associativity and Precedence
  • Read KR Ch. 1-4
2 09/11 Programming in C - Basics
  • Operators
  • Statements and control
  • Functions
  • Read KR Ch. 1-4
2 09/12
  • Recitation
3 09/16 Programming in C
  • Pointers
  • Structures
  • Arrays and Strings
  • Read KR Ch. 5 (except 5.7,5.9,5.11,5.12)
  • Read KR Ch. 6.1 and 6.2
3 09/18 Programming in C
  • Multidimensional arrays
  • Nested structures
  • Dynamic memory allocation
  • Read KR Ch. 5.7, 5.9, 5.12
  • Read KR Ch. 6.3-6.5 and 6.7
3 09/19
  • Recitation
4 09/23 Programming in C
  • Dynamic memory allocation
  • Input/Output
  • Read KR Ch. 7 (except 7.3)
4 09/25 Programming in C
  • Preprocessor
Data representation
  • Bits and Bytes
  • Read KR Ch. 4.11
  • Read BO Ch. 2.1
4 09/26
  • Recitation
5 09/30 Data representation
  • Bits and Bytes
  • Integer Representation
  • Read BO Ch. 2.1 and 2.2
5 10/02 Data representation
  • Integer Representation
  • Read BO Ch. 2.2 and 2.3
5 10/03
  • Recitation
6 10/07 Data representation
  • Floating Point Representation
  • Read BO Ch. 2.4
6 10/09 Machine Programming
  • Overview of x86-64
  • Assembly basics
  • Read BO Ch. 3.1-3.4
6 10/10
  • Recitation
7 10/14
  • No class (fall recess)
7 10/15 Machine Programming
  • Assembly basics
  • Moving data
  • Arithmetic and logical operations
  • Read BO Ch. 3.4, 3.5
7 10/16 Machine Programming
  • Arithmetic and logical operations
  • Condition codes
  • Read BO Ch. 3.5, 3.6.1, 3.6.2
7 10/17
  • Recitation
8 10/21
  • Recitation (Exam Prep)
8 10/23
  • Midterm Exam
8 10/24 Machine Programming
  • Condition codes
  • Control
  • Translating conditionals and loops
  • Read BO Ch. 3.6
9 10/28 Machine Programming
  • Control
  • Translating for loops and switch statements
  • Read BO Ch. 3.6
9 10/30 Machine Programming
  • Function Calls
  • Read BO Ch. 3.7
9 10/31
  • Recitation
10 11/04 Machine Programming
  • Data manipulation
  • Low-level representation of arrays and structs
  • Read BO Ch. 3.8 and 3.9
10 11/06 Linking and Loading
  • Read BO Ch. 7
10 11/07
  • Recitation
11 11/11 Memory Management
  • Dynamic allocators
  • Read BO Ch. 9.9
11 11/13 Memory Management
  • Dynamic allocators
  • Virtual memory
  • Read BO Ch. 9.9
11 11/14
  • Recitation
12 11/18 Memory Management
  • Virtual memory
  • Read BO Ch. 9
12 11/20 Memory Management
  • Virtual memory
  • Caching
  • Read BO Ch. 9
12 11/21
  • Recitation
13 11/25 Memory Management
  • Caching
  • Read BO Ch. 6.2-6.6
13 11/27
  • No class (Thanksgiving recess)
13 11/28
  • No recitation (Thanksgiving recess)
14 12/02 Concurrency
  • Multithreading
  • Read BO Ch. 12.3
14 12/04 Concurrency
  • Synchronization and Locking
14 12/05
  • Recitation
15 12/09 Concurrency
  • Condition Variables
15 12/11 Concurrency
  • Concurrent Objects
  • Linearizability
  • Progress
15 12/12
  • Recitation
16 12/16 Final exam preparation (WWH 512)
16 12/18
  • Final exam