Course Overview
This is an advanced graduate course on system programming
using the C programming language. C is a low-level
system language specially designed to build system
software such as operating system kernels, compilers,
network stacks, database engines, and browsers, among
others.
In this course, we will study the basic design disciplines
of these systems, and investigate how and why C is the
right language for these tasks.
We will be employing a "learning-by-doing" rational in
course, that is, we will be building diverse and practical
systems using C: a compiler, a shell, a Web server,
a network sniffer,
a concurrence library, a debugger, and a MapReduce library.
To realize this rational, we have 7 labs planned
in this course:
- Lab 0: Software Setup
- Lab 1: Compiler
- Lab 2: Shell
- Lab 3: Network Sniffer
- Lab 4: Debugger
- Lab 5: Concurrency
- Lab 6: MapReduce (Tentative)
We hope that, by the end of this course, you will not only
learn the essence of C programming, but also (and more
importantly) gain
a deeper understanding of computer systems
and system-level programming.
People
Instructor:
TAs:
- Ma, Jingnan; majingnan - mail.ustc.edu.cn
- Xu, Hao; xuhaoo - mail.ustc.edu.cn
- Zhao, Jiacheng; jiachengz - mail.ustc.edu.cn
Class Time & Location
- Saturday 7-10; Sunday 1-4
- Online
Contact
- Office Hour: After every class.
Otherwise, send us emails in advance to appoint,
if you would like to meet and discuss.
- Piazza Forum:
Create a new post in Piazza if you have any problems with
assignments or course topics, and we also encourage anyone
to answer questions asked by others.
- QICQ Group: 885032859. This group is used only
for course announcements, and we will discuss homework
or course content problems in Piazza.
Homework Policy
- Lab should be attempted
individually. If you have any difficulty in
solving these problems, you may discuss
with your classmates, the instructor or the TAs etc.,
but final submitted work should be your own.
- Late homework will NOT be considered, for whatever
reason.
- Do not post your solutions to any public websites.
Evaluation
- No tests.
- Score: 80% for assignments and 20% for class attending.