Software Systems
Fall 2009
Course Description
Large-scale software systems like Google - deployed over a world-wide network of hundreds of thousands of computers - have become a part of our lives. These are systems success stories - they are reliable, available ("up" nearly all the time), handle an unbelievable amount of load from users around the world, yet provide virtually instantaneous results. On the other hand, many computer systems don't perform nearly as well as Google - hence the now-cliche "the system is down." In this class, we study the scientific principles behind the construction of high-performance, scalable systems. The course begins with a discussion of the relevant features of modern architectures, and moves up the stack from there to programming language runtime systems, concurrency and synchronization, focusing on key operating system features, I/O and networking, and distributed services.Textbook
There is no required text for this course. Course Information
Professor: Emery Berger - office hours by appointment (CMPSCI 344).Class meetings: For questions and answers about class assignments, etc., please visit the bulletin board.
Class mailing list: cs377@elsrv4.cs.umass.eNOSPAMdu (remove NOSPAM) TTh 9:30am - 10:45am, ELAB 323
TA (discussion section leader): Manjunath Narayana:
- discussion section W 12:20pm - 1:10pm, CMPSCI 142
- new office hours
Tuesday - 5:00 PM to 6:00 PM,
Wednesday - 4:00 PM to 5:00 PM, EDLAB.
Plagiarism policy
All projects in this course are to be done by you (or your group, if it's a group project). Violation will result in a zero on the project in question and initiation of the formal procedures of the University. We use an automated program and manual checks to correlate projects with each other and with prior solutions. At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of programming language syntax. You are allowed to consult with other students in the current class to help you understand the project specification (i.e. the problem definition). However, you may not collaborate in any way when constructing your solution: the solution to the project must be generated by you or your group working alone. You are not allowed to work out the programming details of the problems with anyone or to collaborate to the extent that your programs are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of project specifications or solutions prepared elsewhere.
If you have any questions as to what constitutes unacceptable collaboration, please talk to the instructor right away. You are expected to exercise reasonable precautions in protecting your own work. Don't let other students borrow your account or computer, don't leave your program in a publicly accessible directory, and take care when discarding printouts.
University Academic Honesty policy
Projects
You might want to check out the Eclipse development environment, which now has reasonable C++ support.Here's a brief introduction to C++ for Java programmers, courtesy of Mark Corner, lightly edited by me.
For lots more info about C++, visit this C++ FAQ, written by Bjarne Stroustrup (creator of C++).
Previous page: PL/Systems Reading Group
Next page: Lectures