Introduction to Computer Systems

This is an introductory course for computer systems. The course content includes representation of integer and floating point, machine-level instructions, relationship with assembly code and high-level programming language, virtual memory and program optimization.

It is a prerequisite for most up-level system courses including processor architecture, memory hierarchy (main memory, cache), peripheral devices, exceptions and processes, linker and loader and concurrent programming.

The participation of this course involve four forms of activity: attending the lectures, homework, lab assignments, and exams.


Notes

  • The weekly homework will be released on canvas as the semester moves along.
  • The contents of this calendar for days more than one week in the future may be changing.
  • Some supplementary content from OSTEP, here is a Chinese translation version, needy students can have a look

Schedule (Fall)

Date Lecture/Tutorial/EXE Material Preparation Homework/Lab

Week1
LEC 1: Introduction Lecture-1 1.2, 1.4.1, 1.7(before 1.7.1), 1.7.3, 1.8, 1.9.2 (the first paragraph), the first 4 asides in chapter 1

Week2
LEC 2: Bits & Bytes Lecture-2 Book sections 1.1, 2.1.1
Homework #1 is released on OC (canvas).
Note: Handin the Homework Answer through OC.

TUT 1: Env Setup: Docker, Linux Tutorial-1 Setup Reference
Bring your own computer, charger, and U-disk (you can copy some images from TAs if the network is slow).

Week3
National Day

Week4
LEC 3: Information Storage
Lecture-3 The first paragraph of 2.1, 2.1.2, 2.1.3, 2.1.4, 2.1.5 1.7.3
Solution #1 and Homework #2

TUT 2 Shell
Tutorial-2 Preparation: Linux & Shell
Tasks: Shell(Part3)

Week5
LEC 4: Encodding
Lecture-4 Book sections 2.2

Week6
LEC 5: Arithmetic Operations
Lecture-5 Book sections 2.3 Solution #2 and Homework #3

TUT 3 Git
Tutorial-3 Lab #1 (Bit-level Ops) is released.

Week7
LEC 6: Sequential
Lecture-6 Book sections 3.2, 3.3 Solution #3 and Homework #4

TUT 4: Vim+VSCode+Lab1 Tutorial-4

Week8
LEC 7: Machine-Level Representation of Programs
Lecture-7 Book sections 3.4, 3.5 Solution #4 and Homework #5

LEC 8: Control
Lecture-8 Book sections 3.6 DUE Lab #1

Week9
LEC 9: Procedure Call
Lecture-9 Book sections 3.7

TUT 5: Assembly Tutorial-5 Preparation: Assembly
Tasks: Assembly
Lab #2 (Bomb) is released online and the PDF can be found in canvas.
Lab2 Scoreboard
Solution #5 and Homework #6

LEC 10: Array
Lecture-10 Book sections 3.8

Week10
LEC 11: Heterogeneous Data Structures
Lecture-11 Book sections 3.9, 3.10 Lab #3 (Attacking) is released online and the PDF can be found in canvas.
Lab3 Scoreboard
Solution #6 and Homework #7

TUT 6: Make Tutorial-6

LEC 12: Buffer Overflow
Lecture-12 Book sections 3.11, 3.13

Week11
LEC 13: Exceptions
Lecture-13 Book sections 1.7, 8.1 DUE Lab #2
Solution #7 and Homework #8

LEC 14: Process Lecture-14 Book sections 8.2, 8.3, 8.4.1, 8.4.2

Week12
LEC 15: Wait
Lecture-15 Book sections 8.4 Lab #4 (Tiny Shell) is released online
Solution #8 and Homework #9

Week13
LEC 16: Signal
Lecture-16 Book sections 8.5 DUE Lab #3
Solution #9 and Homework #10

Online Test for Lab2 and Lab3

LEC 17: Signal2 && ljmp Lecture-17 Book sections 8.5, 8.6

Week14
LEC 18: System-Level I/O
Lecture-18 Book sections 10.1~10.4, 10.6~10.9 Solution #10 and Homework #11

Week15
LEC 19: Sched
Lecture-19 Book sections Solution #11 and Homework #12

LEC 20: Floating Point
Lecture-20 Book sections 2.4

Week16
LEC 21: Floating Point instructions
Lecture-21 Book sections 3.11
Review DUE Lab #4
Solution #15