CSC 252

Computer Organization

Fall 2020

Class time: 3:25-4:40 p.m., Mondays and Wednesdays
Class location: online (zoom link via blackboard)

Course Description

The term Computer Systems refers to the underlying machinery, both hardware and software, required to run computer applications. Computer architecture refers to the interface between software and and hardware technology, and describes the functionality, organization, and implementation of computer systems. As the field of computer architecture continually evolves to leverage technological innovations and meet runtime and application needs, this course will focus on the principles behind their design. Computer Organization is the study of how the various components of computer systems fit together and interact. In this course, you will learn the nuts and bolts of how computer systems are designed, from the hardware building blocks and the impact of advances in technology, to the interaction of computer architecture (high-level hardware design) with compilers and operating systems.

The goal of this course is to lay the foundation to give you a better understanding of how modern computer systems work. In CSC 172, you learned how to write a human-readable program that executes on a computer system. In CSC 252, you will learn what a computer system does with your program in order to produce your desired result. Understanding what a computer does with your program will both make you a better programmer, allowing you to make better algorithmic, complexity, accuracy, and security choices, and prepare you for future courses in the design and implementation of computer systems.

Topics to be covered include:

Across all these areas we will focus on design principles, tradeoffs, and implications for system performance.

Instructor and TAs:


Sandhya Dwarkadas (Instructor)
e-mail: [sandhya at cs dot rochester]
Office hours: by appointment; feel free to reach out via e-mail.
Zoom link for office hours
 
Nathan Reed (Undergraduate TA)
e-mail: [nreed7 at u dot rochester]
Office hour: Monday 2-3 p.m.
Zoom link for office hours
 
Yudi Yang (Undergraduate TA)
e-mail: [yyang116 at u dot rochester]
Office hour: Tuesday 8-9 a.m.
Zoom link for office hours
 
Elana Elman (Undergraduate TA)
e-mail: [eelman2 at u dot rochester]
Office hour: Tuesday 2-3 p.m.
Zoom link for office hours
 
Shuang Zhai (Graduate TA)
e-mail: [szhai2 at cs dot rochester]
Office hour: Wednesday 11 a.m. - noon
Zoom link for office hours
 
Sudhanshu Gupta (Graduate TA)
e-mail: [sgupta45 at cs dot rochester]
Office hour: Thursday 2-3 p.m.
Zoom link for office hours
 
Loc Bui (Undergraduate TA)
e-mail: [lbui3 at u dot rochester]
Office hour: Friday 11 a.m.-noon
Zoom link for office hours
 
Vladimir Maksimovski (Undergraduate TA)
e-mail: [vmaksimo at u dot rochester]
Office hour: Friday 2-3 p.m.
Zoom link for office hours
 

Questions and Answers

E-mail is best. Please use the class DISCUSSION BOARD for questions of general interest. Also make sure to subscribe to the discussion board --- I will post answers of general interest there (which may contain hints for the assignments). It is also a great way to share information (other than verbatim solutions) among yourselves.

Prerequisites:

Students must complete CSC 172 and MTH 150, or their equivalents, before enrolling in CSC 252. Completion of CSC 173 is recommended but not required. The course will require you to program in C and work in the Unix/Linux environment. If you are unsure of your background, please contact the instructor.

CSC 252 is in turn a prerequisite for all further elective courses in Systems, including CSC 255 (Advanced Programming Systems), CSC 256 (Operating Systems), CSC 257 (Networks), and CSC 258 (Parallel and Distributed Systems).

Course textbook:

The textbook for the course is Bryant and O'Hallaron's Computer Systems: A Programmer's Perspective [3rd edition].

The website includes a host of supplemental material (including a C tutorial), which you might find useful when preparing to implement your programming assignments.

Other references:

Assignments and Grading

There will be approximately seven assignments, at least five of which will require programming, and two exams. Most programming assignments will be written in C, but several will require knowledge of assembly language as well. All will be done under Linux. The student website that accompanies the textbook has a wealth of resources, including on C and Linux. I highly recommend that you get started on getting familiar with them. The programming projects are bound to be time-consuming, with the idea that you learn from the experience, so be sure to start on them as soon as they are handed out. There will also be occasional in-class quizzes and additional (non-programming) homeworks. Class participation is encouraged. Your grade will be based on a combination of the assignments/quizzes and two exams (midterm and final), with a tentative division being 65% for the programming and written assignments and quizzes, and 35% for the two exams. Those taking the course as CSC 452 will have extra requirements.

Academic Honesty:

Student conduct in CSC 252 is governed by the College Academic Honesty Policy and the Undergraduate Laboratory Policies of the Computer Science Department.

The following are additional details relevant to CSC 252/CSC 452:

Exams in CSC 252/CSC 452 must be strictly individual work.

Collaboration on assignments among team members is of course expected. Collaboration on assignments across teams (or among individuals on non-team-based assignments) is encouraged at the level of ideas. Feel free to ask each other questions, brainstorm on algorithms, or work together at a whiteboard. You may not claim work as your own, however, unless you transform the ideas into substance by yourself. You can use the following guideline: when it comes time for you to write your program or your homework paper, do not use any written material from the discussion. This means you must leave any brainstorming sessions with no written notes. If you can reconstruct the discussion and complete the solution on your own, then you have learned the material (and that is the objective of this course!).

For team projects, you should make sure to identify division of labor in your README. While projects will generally be graded as a team rather than separately for each individual, corrective action could be taken.

Similarly, you are welcome to read anything you find on the web, but you must close all web pages before beginning to write your code. You are not permitted to repeatedly consult a source. You can read it, understand it, put it away, and write your own similar code, but you must not copy anything. Both electronic copy-and-paste and copying through short-term memory are expressly forbidden.

To minimize opportunities to steal code, all students must protect the directories in which they do their work.

Posting homework and project solutions to public repositories on sites like GitHub is a violation of the College’s Academic Honesty Policy, Section V.B.2 “Giving Unauthorized Aid.”

Finally, if you have any questions about what is permitted and what is not, please ask! While I trust that you are all here to learn and that each of you will adhere to the policies laid out above, any violations detected will be strictly dealt with in accordance with the university's procedures as laid out in the College Academic Honesty Policy.

Late homework and absences from exams:

Late assignments will have 10% of the maximum score deducted for each 24-hour period after the due date that the assignment is late (assignments may be turned in only up to a maximum of 3 days late, after which they will not be accepted), except under extenuating circumstances.

In order to accommodate unforeseen circumstances fairly across all students, you will be allowed 3 slip days across all assignments without penalty. In order to take advantage of the slip days, you must email the assigned TA for the assignment in advance of the deadline indicating who your partner/s for the assignment are and how many of your slip days you plan to utilize for the assignment.

Examinations will be given at alternate times only with appropriately documented medical excuses.