CS 201: Computer organization and assembly language

Winter 2009

Professor: David Bunde, SMC E-203, 341-7479, dbunde@knox.edu
Office hours: Whenever my office door is open; email for an appointment.
Website: http://courses.knox.edu/cs201

Course overview

This class explores computers at a lower level of abstraction than previous courses. We will discuss the hardware components that make up modern computers and how they are organized into systems. In addition, we will learn how to write programs in assembly language to illustrate how programs interact with the hardware. The overall goal of the course is to familiarize you with the hardware issues that affect program performance.

Meetings

We meet for lecture on Monday, Wednesday, and Friday during 5th period (1:20-2:30) in SMC-C203.

In addition, we have lab at the same time on Thursdays in the Crash and Burn lab (SMC-A215).

There will be no class on 2/2 so you can work on the midterm.

Resources

Our book is the fourth edition of "Computer Organization and Design" by Patterson and Hennessey. The library is currently acquiring this book; it will be placed on reserve in the SMC library once it arrives. The Lectures page will tell you what sections we covered in each lecture and give links to outside notes.

In addition, we will be using two simulators.

  1. The SPIM simulator to run assembly programs. This website includes links to resources to learn how to write assembly. (Though I suggest Appendix B of the textbook as your primary reference.)
  2. Logisim to build digital circuits. Again, this website has useful documentation about how to use the simulator.

Extra help

If you find yourself struggling in this course, get help right away. The term will move quickly and concepts in this course build on one another so you can't afford to get too far behind. Don't hesitate to come by my office or email me a question.

I believe there will be a CS tutor available in the Red Room (second floor of Seymour library). It is also possible to arrange for an individual tutor through the Center for Teaching and Learning (CTL).

Rough schedule

The following is a rough schedule of what we'll cover each week. I will refine it as the term progresses so don't expect this to be our exact schedule. For a list of what we've actually done, see the Lectures page.

Week 1: Introduction to assembly. Integers in binary.

Week 2: Reading memory in assembly; arrays and pointers. Floating point numbers in binary.

Week 3: Functions and recursion in assembly.

Week 4: Logic design. Karnaugh maps and gray codes.

Week 5: Instruction data paths. Midterm

Week 6: Pipelining. Caching.

Week 7: Virtual memory. I/O.

Week 8: Superscalar processors. Amdahl's law. GPUs and CUDA.

Week 9: Multicore processors. Hardware multithreading. Clusters and multiprocessor systems.

Week 10 (AKA "the last day"): Overview/review.

Assignments

The class will feature a mixture of written and programming homework assignments. These will include the assignments given during the lab period, many of which will be assigned as homework.

In addition, we will have a takehome midterm exam due near the beginning of February and a final exam (probably also takehome) during the normal final time. The final will be cumulative, with an emphasis on material covered since the midterm.

Late work

You should plan on submitting all work by the due date, but I know this is not always possible. Therefore, you will get two "late days" that may be used on homework assignments during the term. Each allows you to submit one homework 24 hours late without penalty. They can be used for the same or different assignments. To use them, write a note on the top of your submission. Late assignments without such a note will lose 10% of their points for each 24 hours they are late. Late submissions will not be accepted once solutions have been posted so let me know if you intend to work on something past its normal deadline. Individual extensions beyond these two days will require extraordinary circumstances.

Extra credit

I assign extra credit problems infrequently. I will however give extra credit for attending colloquium talks sponsored by the CS department (possibly other departments, depending on the content of the talk) and submitting a short writeup about the talk. Give a quick summary and any impressions you had in a couple of paragraphs (~1 page). This offer applies to any qualifying talk you are not otherwise getting credit to attend.

Absences

Regular attendance is expected, but there will not be a specific penalty for missing lecture. You are responsible for your own education. This means that you need to find someone to turn in homework if you are absent on the due date and you must find a way to learn the material covered during absences. In addition, please send me an email if you will be missing class so I know what is going on.

Policy on Collaboration

Exams in this class must be completed individually. You are allowed to talk with your classmates about homework. When you do this, however, you must do two things:

  1. First of all, you must acknowledge all collaborators by adding a note to your solution describing who helped you and how.
  2. Secondly, you must avoid "collaborations" where one person gives the solution to another. When working together, each person should contribute ideas. If one person is helping another, the helper can explain concepts and guide the "helpee" toward a solution, but cannot tell them how to solve the problem. In all collaborations, everyone is expected to understand the entire solution and each individual must write up their solution separately.

The same policies apply to getting help from inanimate sources. If you use the web or a textbook other than the one we're using, you must cite this source. As in collaborations with another person, you are expected to write you own solution; do not copy text or code from any source. In addition, you may look at other sources for examples or conceptual help, but not actual solutions. Some problems assigned for this class may have been previously assigned to other classes, but you are expected not to deliberately seek solutions. (If you come across one accidently, let me know and I will give you a modified assignment.)

Please feel free to contact me if you have any questions about this policy.

Grading

At the end of the term, all of your work will combined into an overall course percentage based on the following weights:

Homework45%
Midterm25%
Final30%

The range of scores mapping to each grade will be determined at the end of the term. In general, spend your time learning the material rather than worrying about your grade, but feel free to talk with me if you are concerned about it.