Syllabus

Intro to Computer Organization (CS33)

Course Objectives:

Introduce key concepts in computer systems and architecture. More specifically:

  1. Introduction to many areas:
    • Computer Architecture
    • Operating Systems
    • A little: Parallel Programming
    • Tiny bit: security, compilers, languages, storage systems, etc.
  2. Be able to answer basic computer questions:
    • How are numbers represented in a computer?
    • What are the basic operations a computer performs?
    • How do CPUs exploit parallelism?
    • What are the basic roles of the operating system?
    • What, beyond algorithm complexity, affects program performance?
  3. Practical Skills:
    • Get more comfortable with Linux + C programming.
    • Basic performance optimizations.
    • Debugging with GDB

Course Components:

Dual Grading Scheme

The dual grading scheme encourages, but does not require attending discussions. We will compute your grade both ways and just take the higher one.

With-Participation:

Without-Participation:

Curving

The class uses the conventional curve as the baseline (90+ for A-,A,A+, 80-90 for B-,B,B+, etc.), and I may make those cutoffs easier. I will never make the curve more difficult to limit the number of As. All students can achieve an A in the course.

Late Policy

10% Late penalty on labs/homeworks, max 3 days late.

Words of Advice

The labs are fun, but they are challenging and time consuming! Please make sure you start the labs as soon as possible! Please, Please! I am literally begging you!

I highly recommend reading the textbook chapters before lecture. This is especially important if you are brand new to these topics: there is a lot of material and it does take time to get comfortable.

Academic Honesty

  1. Unless stated otherwise, each student must turn in her/his own homework assignment. The code in this assignment must be your code; the words must be your words. (you must be able to explain the code if asked)

  2. You can learn a lot from others in the class, and other people in general. Therefore, you are allowed to talk to others about the course content, in person and on Piazza. You may also talk to others about assignments, but you should never read another student’s answers, including answers to assignments from prior years.

  3. Similarly, you should never show your answers to anyone else and should never post your code in a public place, such as Github, either now or in the future.

  4. Further, you must list the people with whom you interact at the top of your assignment. (You cannot violate the policy by listing extra names, only by omitting names.) You are also allowed to use resources such as books or the Web. Again, you must simply list these resources at the top of your assignment. However, you may not use or look at old solution sets from this or any other class for any reason (except any that are provided by an instructor). This rule does not apply to labs with no hand-in (bomb-lab).

  5. During exams, you may not communicate with anyone in any way besides the instructor or TAs/proctors.