This syllabus is only indicative and subject to change.
(mine) The famed science fiction writer Arthur C Clarke once said that any sufficiently advanced technology is indistinguishable from magic. While computers are sufficiently advanced, this course will attempt to "demagic-ify" them. We will study how computers have been built from ground up, and why the digital universe behaves the way it does. This course is the foundation of nearly all work in computer systems, the area of computer science that actually breathes life into computation and gives it an existence independent of us. In this course, we will be most concerned with the ``inner life'' of programs as they live in the digital universe we have created.
(from CDCS) Introduction to computer architecture and the layering of hardware/software systems. Topics include instruction set design; logical building blocks; computer arithmetic; processor organization; the memory hierarchy (registers, caches, main memory, and secondary storage); I/O—buses, devices, and interrupts; microcode and assembly language; virtual machines; the roles of the assembler, linker, compiler, and operating system; technological trends and the future of computing hardware. Several programming assignments required.
At the end of this course, you will know about:
Ultimately, though, the goal of this course is to make you a better programmer by teaching you about the internals of modern computers.
This course requires CSC172 and MTH150.
CSC173 and/or experience in C/C++ programming is strongly recommended. Please consult with peer advisors and students who've taken this class before to check if your level of preparation is adequate for this course.
In particular, if you've never programmed in C/C++ before, please take CSC173 before you take this course.
This course requires that you be able to program in C and work in the Unix/Linux environment. Check out the textbook's student website for a wealth of resources on using C, Linux and GDB.
This course follows the College credit hour policy for four-credit courses. The course meets twice weekly for 3 academic hours per week. The course also includes independent out-of-class assignments for one academic hour a week. In this course, students will complete independent study using readings and other course materials. These activities include defined reading assignments.
Students taking the 4xx version of this course will have more independent work, and different exams.
CSC PhD students taking this course for breadth MUST seek permission from the instructor.
We will use Computer Systems: A Programmer's Perspective, 3/e by Randall E. Bryant and David R. O'Hallaron. This book is required for this course.
Over the course of the semester, you will also read parts of von Neumann's original EDVAC report. The goal of this reading is to compare and contrast von Neumann's proposed design to computer systems of today.
Grades are assigned on an absolute scale. Here is the scale I plan to use, which can change, though the scale I ultimately use will not be stricter than this:
Score | CSC252 | CSC452 |
---|---|---|
>= 96 | A | A |
>= 92 | A- | A- |
>= 88 | B+ | B+ |
>= 84 | B | B |
>= 80 | B- | B- |
>= 76 | C+ | C |
>= 72 | C | C |
>= 70 | C | C |
>= 68 | C- | E |
>= 60 | D | |
< 60 | E |
All assignments and activities associated with this course must be performed in accordance with the University of Rochester's Academic Honesty Policy. More information is available at: http://www.rochester.edu/college/honesty.
You may submit two assignments up to a day late each, PROVIDED YOU INFORM THE INSTRUCTOR BEFORE THE ASSIGNMENT DEADLINE.
Late submissions will only be graded at instructor's discretion.
There will be no make-up exams, or opportunities to make up assignments if you've missed them.
This instructor follows The College's policy on incompletes.