CS240: Machine Organization, Fall 2014
Course website: http://cs.wellesley.edu/~cs240/
Overview and Goals
By now you are quite comfortable writing and executing your own computer programs. However, you may be less familiar with how exactly the computer works its magic with the programs you have written. This course opens up the "black box" that is the modern digital computer.
In CS111 we learn to view a program as a hierarchy of levels of abstraction. Details at one level may be abstracted away in order to solve problems at the next level up. The same technique may be used to study computer organization. Indeed, given the complexity of today's computer systems, it is hard to image how else we might approach the subject. For most computer scientists, the foundation of computer organization is the digital logic level. However, we will start our studies one level up at the conventional machine level. Once we understand the conventional machine level, we will return to the digital logic level to design the machine's hardware components. Working through the hierarchy, we will spend roughly equal amounts of time investigating the micro-architecture level, instruction-set-architecture (ISA) level, the operating-system (OS) level, and the assembly-language level.
At the end of CS240, students should have an understanding of the conventional machine level of modern digital computers, its interface to software, and its implementation in digital logic. Even if CS240 is the last time you play with computer hardware, its lessons will inform your thinking about the execution of programs you write in higher-level programming languages.
Course requirements are documented below and will be discussed on the first day.
- Prerequisite: CS111
- Distribution: Mathematical modeling
- Semester: Fall, Unit: 1.25
|Role ||Name ||Office/Lab ||Drop-in Hours ||Email (@wellesley.edu) || Phone
|Instructor || Ben Wood || Science Center E128 (across from HCI lab) || Monday 4:00-6:00pm, Tuesday 9:00-10:00am + 3:00-4:00pm, Thursday 4:00-5:30pm, Friday 11:30-12:30pm, or by appointment || bwood5 || x3263
|Lab Instructor || Jean Herbst || Science Center E129 (in micro-focus) || see here || jherbst ||x3162
|Tutor || Nick Manfredi || Science Center S173 (lab) || Thursday 6:00-8:00pm || vmanfred ||-
|Tutor || Susie Carovillano || Science Center S173 (lab) || Wednesday 7:30-9:30pm || scarovil ||-
Google Group: Announcements, Discussion, Questions
The CS240 Google Group will be used for important course announcements and student questions. Please feel free to post questions and answer other students' questions. When discussing homework, keep it general. You may suggest sections in the textbook or lecture materials to help someone get started or you may help clarify an ambiguous question. Do not post solutions in any form, whether partial or complete. Be aware of the collaboration policy below. The course staff is also subscribed to the group and will help answer questions.
There are several ways to get help if you are struggling with a homework problem, a concept in lecture, etc.:
- Drop-in hours: Come to office hours and help sessions. Talking in person is usually most effective.
- Google Group: Post suitable questions on the CS240 Google Group, to be answered by your classmates or the course staff.
- Email: Send questions that are not appropriate for the group (e.g., grading, individual solutions, etc.) to staff members via email.
Reaching Ben: Outside of office hours, if my door is open, feel free to knock -- I probably have time to talk. If my door is closed, I am not available. I will rarely be available on Wednesdays. I will respond to email sent between Monday morning and Friday afternoon within 24 hours (usually much faster). Email sent on weekends or college holidays and breaks may take longer than 24 hours to receive a response.
Participation in CS240 is subject to the Wellesley College Honor Code.
The only prerequisite for CS240 is CS111 or permission of the instructor. We will assume a familiarity with Java, although we will be programming only in assembly language. We will also assume a basic knowledge of elementary data structures such as arrays, stacks and queues. In addition, you should be comfortable with recursion. If any of this is unfamiliar or you have any questions, please visit or get in touch with me as soon as possible.
Textbook: Computer Organization and Design: The Hardware/Software Interface, 4th edition, by David A. Patterson and John L. Hennessy, published by Morgan Kaufmann/Elsevier.
Copies of the text will be available in the College Bookstore or from many other online booksellers where you may find a better deal. Buyer beware:
Make sure you have the correct title and edition. Newer editions make significant changes from the 4th edition. For added confusion, the same authors have published other books with similar titles.
The materials for each lecture will be available in .pdf format on the calendar on the course website (http://cs.wellesley.edu/~cs240/). Paper copies will be available in class.
There are four types of graded course work: problem sets, lab work, midterm exams, and a final exam. The final grade will be computed as a weighted average of your grades for each type of work, with the weights noted below.
Problem sets (20%):
During the term, there will be regular homework assignments in the form of problem sets. Grades for all problem sets are weighted equally.
Lab work (20%):
Weekly lab meetings have pre-lab assignments and a lab report covering the lab activity. The full lab policy is described on the lab web page.
Midterm exams (15% + 20%):
There will be two scheduled in-class midterm exams as shown in the course calendar. Please note these dates in your calendar now; they will not change. The first midterm exam is weighted as 15% of your grade and the second as 20%.
Final exam (25%):
There will be a comprehensive final exam, to be self-scheduled by the standard process during the final exam period.
This course complies with the Wellesley College grading policy. While that policy asks faculty to hold each 100- and 200-level course with 10 or more students to an average of no higher than 3.33 (B+), it does not require faculty to grade on a "curve." There is no arbitrary limit on the number of A, B, or C grades, etc. Every student will be assigned the grade she earns and deserves according to the grading standards of the college.
A typed or neatly hand-written paper copy of your problem-set solutions is due at the beginning of class on the date listed for the problem set. Solutions requiring assembly code will work best if typed and printed (e.g., in MARS -- see Lab 1).
Each student is given a budget of 3 late days for the semester. Late days may be spent to delay problem-set deadlines in 24-hour increments. Any number of available late days may be spent on a single problem-set deadline, in whole-day increments. For example, for a problem set due at 1:30pm on Friday, you could turn it in at 3pm on Friday (or noon on the immediately following Saturday) for one late day. You could also turn it in at 1:30pm on the following Monday for 3 late days, and so on. No late work will be accepted after your late-day budget is exhausted, except in the case of a true emergency, by arrangement with me. Unused late days are not redeemable for credit and there is no way to buy more late days. Spend them wisely!
You are encouraged to talk with other students about the course and to form study groups. Unless otherwise instructed, feel free to discuss problem sets with other students and exchange ideas about how to solve them. However, you must compose your own solution to each assignment. In particular, while you may discuss problems with your classmates, you must always write up your own solutions from scratch individually.
Please acknowledge any collaborative work. If you make use of an idea that was developed by (or jointly with) others, please reference them appropriately in your work.
When working on homework problems, it is reasonable to consult public literature (books, articles, etc.) for hints, techniques, and even solutions. However, you must reference any sources that contribute to your solution and be able to explain your solution if asked. Assignments and solutions from previous terms of CS240 are not considered to be part of the "public" literature. You must refrain from looking at any solutions from previous terms of CS240 unless I explicitly tell you it is OK to do so.
Lab policies are described on the lab web page.
- Exams will be open book, open notes. No other resources are allowed unless explicitly stated in the exam.
- Collaboration on exams is not allowed.
- If you know you will miss an exam date, contact me in advance to schedule an earlier exam date.
- Students who miss a scheduled exam without prior arrangements may elect to (1) take a make-up exam roughly two weeks later or (2) accept a grade of 0 for the missed exam. Along with the original exam material, make-up exams will include some additional material covered by lectures since the scheduled exam date.
CS240 has regular required lecture and lab meetings.
|What ||When ||Where ||Who ||Why|
|Lecture ||Tuesdays and Fridays, 1:30pm-2:40pm ||Science Center E111 ||taught by Ben Wood ||Learn concepts of machine organization.
|Lab ||Mondays 1:30pm-4:30pm or 5:30pm-8:30pm ||Science Center S173 ||taught by Jean Herbst ||Apply concepts to deepen understanding.
Please read the material listed on the calendar in advance of the corresponding lecture (except, of course, for the first class meeting, when you may read it later).
I will ask questions. Please jump in and answer them! Also, interrupt with questions when things are not clear.
Please do not distract us with your personal computing devices while we are trying to learn how they compute. Please silence (vibration is not silent) and stow all phones, tablets, and laptops (anything with an internet connection) such that their displays are not visible to you or anyone else. Talk to me to arrange valid exceptions (e.g., you are on-call caring for someone, or you are unable to take notes efficiently by hand). Unapproved uses of phones and laptops will result in creative examples involving the use of your device and broad classroom participation. It might be fun for the rest of us, but maybe not for you. If you catch me checking my phone, using Facebook, or tweeting, etc., during class, feel free to do the same!
Please feel free to speak with me about concerns or suggestions about how I can make the course more accessible to you. I will keep our conversations confidential and do my best to help. An anonymous feedback form is available in the Google Group if you would prefer.
Students with disabilities who are taking this course and who need disability-related accommodations are encouraged to work with Jim Wice (781.283.2434 or firstname.lastname@example.org), the Director of Disability Services. Jim's office is located in the Pforzheimer Learning & Teaching Center on the third floor of Clapp Library. If you have a physical disability or a learning disability, Jim is the person to see to arrange for accommodations. If your learning disability is undocumented or if you are uncertain as to whether you have a disability, Jim can arrange for you to be tested.
Please share suggestions and comments about the course and my teaching at any time. Tell me what works well and what does not. I will do my best to address it. We will be making changes to CS240 for Spring 2015, so this feedback will also be valuable in guiding design of the new course. An anonymous feedback form is available if you would prefer to use it.
The following is a tentative schedule of lectures, labs, problem sets, and exams. Timing of material may shift slightly, but exam dates will not move.
- Reading listed with each lecture should be completed before the lecture.
- Lecture materials will be linked in the calendar.
- Labs have pre-lab assignments linked from the calendar below and described on the lab page.
- Problem set assignment and due dates are also listed.
- We may schedule optional exam review sessions if there is interest.
- The course is divided into three phases: instruction set architecture (roughly weeks 1-5), digital logic and basic computer architecture (roughly weeks 6-10), optimizations and systems issues (roughly weeks 11-15).