The course syllabus is posted here.
Students are required to have previously taken CS 367 (Computer Systems & Programming).
This is a programming-intensive course. You need to be comfortable with programming in one of the following languages including C, Python, Java. Knowing a language serves as a soft prerequisite and would get you prepared to learn a new language (if you haven’t already) and do the programming assignments in this course.
Yes! This semester you will be learning a new language Go as all assignments will be in Go.
It is also not a good idea to take this class if your course/work schedule is already quite full.
There are no official textbooks. Required readings are (most frequently) in the form of research papers and/or selected textbook chapters. There are several books that might be useful, however:
Distributed Systems 3rd edition (2017), by Maarten van Steen and Andrew S. Tenenbaum (suggested optional readings will most frequently be drawn from this book).
Operating Systems: Three Easy Pieces (OSTEP), by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Aug, 2018 (v 1.00).
The Go Programming Language. Alan A. A. Donovan and Brian W. Kernighan (Web page).
Here is a tentative list of programming assignments:
Students must work individually on all programming assignments. We encourage you to have high-level discussions with other students in the class about the assignments.
However, we require that when you turn in an assignment, it is only your work. That is, copying any part of another student’s assignment is strictly prohibited. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.
Never look at another student’s code or share your code with any other student.
You must not make your code public (on GitHub/GitLab or by any other means).
10% will be deducted for late assignments each day after the due date. That is, if an assignment is late, we’ll grade it and scale the score by 0.9 if it is up to one day late, by 0.8 if it is up to two days late, and by 0.7 if it is up to three days late.
Late assignments will only be accepted for 3 days after the due date. Assignments submitted more than 3 days late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.
Assignment that does not compile or run will receive at most 50% credit.
Your grade will be calculated as follows:
The final grade is computed according to the following rules:
Refer to GitLab Setup for detailed instructions on setting up GitLab repos.