C语言网课代修 | CAS CS210 Computer Systems SYLLABUS


About the course

Most operating systems, and most of the languages that you’ve probably used to this point, are
written in C. The language doesn’t hold your hand like the others do, being nearly devoid of
abstractions, and programming in it makes you think about the underlying hardware and what’s
really happening inside the computer. At its base it isn’t a very complex language, and yet
coding in C can feel very complex. We are rewarded for the effort in speed — when you need a
piece of code that’s about as fast as you can get without breaking out an assembler, C is where
you will turn.

Because the language is so closely tied to its underlying hardware, it is the obvious choice for
examining computer architecture. We can express in a few lines of C ideas that might take
many paragraphs to explain in English. We’ll spend roughly the first half of the course learning
the basics of C, and then use our knowledge to dissect major parts the operating system in the
second half.


This course assumes that students have a solid background in Java or C++ programming from
CAS CS 111 or equivalent. CS 112 is also recommended, but not essential for students with
strong programming skills. A solid working knowledge of operating systems, such as Unix/Linux
and Windows, is also assumed. CS 131 or MA 293 is important for the material on Boolean logic
and data representation.


There are two primary texts for the course — you’ll see them referenced as CSAPP and CPAMA
in various course documents. We use these fairly heavily, so you’ll need copies of both. We’ll be
in CPAMA for the first half of the course.

CPAMA Text: K.N. King, “C Programming: A Modern Approach”, Second Edition,
W. W. Norton & Company, 2008 ISBN 978-0-393-97950-3
CSAPP Randal E. Bryant and David R. O Hallaron, http://csapp.cs.cmu.edu/, “Computer
Systems: A Programmer’s Perspective”, 3rd. Prentice Hall, 2016, ISBN 978- 0-13-610804-7

Two optional (and classic) books you might find useful are:
R. Nigel Horspool, “C Programming in the Berkeley Unix Environment”, 1987.
Brian W. Kernighan and Rob Pike, “The UNIX Programming Environment”, Prentice
Hall, 1984.

Online tools

Most course material will be located on Piazza, including links to recorded lectures, your
assignments, tutorials, and so on. You should be enrolled already, so that when you log on to
the site you’ll see the course listed. Our use of Blackboard for these things will be minimal — for
the most part it’ll just serve as the gradebook.
Your homework will be stored under source control using BU’s GitLab implementation. You’ll get
details on how to set up your account there n the first few days of the course.
Assignments and quizzes / exams are turned in and graded on Gradescope.

Programming tools

CS210 is, at its heart, a programming course. In this case, though, we’ll be coding against the
operating system to learn how the OS is put together, and it makes things a lot easier if we all
are using the same OS.

To make that happen, everyone will use a Docker container running CentOS, a RedHat variant
of Linux, running on their local machine, whether that be Windows, MacOS, or Linux. We also
expect everyone to us Microsoft’s Visual Studio Code editor — it connects directly to a running
container and allows us to edit, compile, and debug our programs inside the container. There
are always folks who want to use vi or Emacs or Atom or some other editor of their liking, and
that’s fine, but we will only support the ‘official’ toolchain, so if something goes wrong, you are
on your own.

A big plus of all of this is that you’ll get some experience using the Linux command line,
something that just about everyone needs when they get to their first real job. We’ll be
discussing all of the pieces of the toolchain in class and on Piazza, especially how to connect
VSCode and Docker.