CS 350 Syllabus - Spring 2018


This is the syllabus for CS 350: Computer Organization and Assembly Language Programming. You can find the PDF version of the syllabus here.

Course Goals

The course goals are that you be able to explain how a classical von Neumann machine is organized, how instructions are executed, how instructions are represented at the machine and symbolic levels, to write simple assembly language programs, and to show how basic high-level programming constructs are implemented at the machine level. In addition, you should be able to describe simple combinatorial and sequential circuits using logic, to describe the different formats for representing numerical data (and convert between formats), to describe the internal representation of characters, strings, records, and arrays.

Course Outcomes

The focus of this course will be how computers work with particular focus on the relationship between software written in a high-level language and the computer systems that compile and execute them. Specifically, we will be uncovering details of the lower layers of abstraction present in computer systems by discussing topics which include:

  1. Digital Logic Hardware
  2. Low Level Data Representation
  3. von Neumann Computing Model
  4. Instruction Set Architectures (ISAs)
  5. Assembly Language
  6. Input/Output (I/O)
  7. Traps and Subroutines
  8. Interrupts
  9. Call Stack
  10. Representation of high-level language constructs at the low level--- Array and list data - Assignment, conditional, and iterative statements - Stack- and heap-oriented memory allocation - Procedure calls and recursive procedure calls.
  11. Students will gain an understanding of all the components of a computer, insight into the interactions between software and hardware, and an appreciation for the advantages and limitations of the abstractions provided by higher-level languages.


You're expected to attend lectures; attendance counts toward the final grade. I will likely post my lecture notes online after lecture, but this is not a guarantee, so come to lecture!

Recommended Textbook

Note that this textbook is not required for this course. I will not be assigning readings. It is, however, recommended, as significant content from the course comes from the book.

Introduction to Computing Systems: From Bits & Gates to C & Beyond (2nd Edition), by Yale Patt and Sanjay Patel, 2004 McGraw-Hill. The text's Student Resources website contains links to the LC-3 Simulator and lab manual.


I will occasionally post required readings on the course webpage. These will vary in content, from historical context to technical readings. The reading content is fair game for quizes and exams. Any readings I post that are required will be freely available either from the web or from me. I may post optional/extra reading as well. These may play into any extra credit I choose to include on quizes and exams.

Labs and Final Project

Links to lab assignments will be on the home page. If solutions to written questions are posted, they will be appended to the assignment pdf. Even though they don't make a large direct contribution to the Final Grade, it's important to do the lab assignments because they will help you prepare for the tests.

The final project will be a simulator (in C) for the LC-3 computer. Parts of the project will be due as labs; on those parts you can work with others. The last part must be done individually. The project description will be posted.

Work Together on Labs!

You're encouraged to work together on labs (but not the final project). Historically, people who work together learn the material better. You can also use the internet and other sources. If you work with someone, you must hand in separate copies of your work. Avoid working with the same partner(s) the whole semester: It's good to learn to work with different people.

Submitting Work

I will have you turn in your work on fourier. Specific turn-in instructions will be included in the handout for each assignment. For purely written assignments (no code), I will accept hard copies as well as electronic copies. Electronic copies will be submitted on fourier. When you submit multiple files, you will be using tar to group them together. For example,

$> tar cvzf khale-lab1.tgz file1.c file2.c file3.c

You can then submit this file as per instructions in the handout. If you submit more than once, we'll grade the latest submission and toss out the earlier ones. For written assignments that you would prefer to submit electronically, it is okay to scan your work into a pdf. DO NOT JUST TAKE A PICTURE OF IT WITH YOUR PHONE unless you're using a high quality scanning app, e.g. Scanbot or Genius Scan. Use discretion. If you think we might not be able to read your work, submit some other way!

For hard copies, submit them in class or to someone at the CS department office, during normal business hours. Get it time-stamped and have it put in the instructor's mailbox. Written assignments slipped under the door after business hours are considered to have been submitted the next business day.

Work is due by 2400 hrs (midnight, end-of-the-day). You must submit electronically if you want to submit work after the department office is closed for the day.

Problematic Labs

Bad Submissions

If you submit the wrong file or a program that doesn't compile or a broken pdf or a bad tar file, you may earn a zero for that assignment. It is your responsibility to make sure that you submit what you intend to submit and that you submit a well-formed, compiles-without-errors file. Badly-organized or badly-submitted material may be penalized up to an additional 10%. An illegible or hard-to-read answer may be penalized up to the full credit for a problem.

Late Lab Work

Work may be handed in up to two days late with a 5% penalty for one day late and a 10% penalty for two days late. (Saturday and Sunday count as days.) After this, work can be discussed but it earns a score of 0. You can't turn in a bunch of things at the end of the semester and get them graded.

If you have an emergency or are ill, it may be possible to excuse you from an assignment or to get you an extension, but contact the instructor (or have a friend or family member contact the instructor) as soon as you can. Please don't wait until you get well / get back into town / start worrying about your Final Grade. Overly delayed requests may be denied. Requests made after classes end will be denied.


If you think assignment or test has been misgraded, then if a TA graded it, discuss it with that TA first. If you still think it's been misgraded, discuss it with the instructor. Regrade requests must be specific: Don't just ask us to regrade an entire problem or assignment. Also, you must include your justification for a higher grade: Don't just say you think you deserve more points. Regrade requests should be timely, else they may be denied. In particular, regrade requests made after classes end will be denied.


One Page of Notes

For all four tests, you can bring one 8.5" × 11" or A4 page of notes (both sides). (Doesn't matter if it's hand-written or printed, etc.) For tests that include the LC-3, you can in addition bring the LC-3 reference sheet and write notes on it, both sides. No other notes, no sharing notes, no books; no phones, no calculators or other aids or devices.

Makeup Tests

If you can't come to a test because you're sick or have an emergency, it may be possible to get you a makeup test, but contact the instructor (or have a friend or family member contact the instructor) as soon as you can. Overly delayed requests may be denied, so don't wait until you get well / get back into town / start worrying about your Final Grade. Requests made after classes end will be denied.

Make-up tests are not a guaranteed right, especially if you ask after the exam. Barring some urgent reason, you must take tests at the scheduled time. (Getting a cheaper airline ticket is not considered to be an urgent reason.) Note the Test Score Replacement policy will let you improve a bad quiz score (though not a bad exam score).

No Retaking Tests

If during the test, you feel too ill to finish it, stop and come up and talk to me so we can work on rescheduling it — don't turn in the test and then come to me later. Similarly, don't turn in Exam 2 if you want a grade of Incomplete.

No Final Exam

We don't have an exam during finals week. We do we have an Exam 2 during the last week of the semester; it covers the last half of the semester.

Test Score Replacement

If you do badly on Quiz 1 but do better on Exam 1, we'll use the Exam 1 score as your Quiz 1 score at the end of the semester. Same for Quiz 2 and Exam 2. However, there's no making up for a bad Exam 1 or Exam 2 score.

70% of Exam 1 will be on material covered after Quiz 1; the other 30% will re-cover the hardest parts of Quiz 1. (Similar for Exam 2 and Quiz 2.)

End-of-Semester Score

EOS PtsCategory
10.0% Lab (Average)
10.0% Final Project
3.0% Attendance
11.0% Quiz 1
27.5% Exam 1
11.0% Quiz 2
27.5% Exam 2
All values are scaled to 100 before taking the final sum

Letter Grade Cutoffs

LetterEOS Pts
A 90 - 100
B 80 - 89
C 70 - 79
D 60 - 69
E 0 - 59
E* Avg Lab < 30%
*At instructor option. (This condition is supposed to scare you, not change your grade: In practice, people with lab scores that low nearly inevitably fail the course.)

Grading Policies


Curving is done by adding a constant ≥ 0 to everyone's total score. In general, I will curve to raise the class average to a middle C or so, but this is not a hard promise. The Midterm Grade curve (if any) is not an indicator of the Final Grade curve (if any). I avoid changing the grade cutoffs, but this also is not a hard promise.

Borderline Grades

Roughly nine times out of ten, there's no ambiguity as to what your Final Grade is; the only judgement comes in at the borders. I will look for every reason I can find to push you up to the next higher grade, such as: Your Final Exam score is much higher than the average, or your Final Exam score is higher than your earlier test scores. In addition, if you're two points short on the Final Exam, I'll give you the benefit of the doubt. On the other hand, if you're five points short, you get the lower grade.

Grading Principles

The Final Grade describes the overall quality of your semester's work: It all gets piled onto a big scale and my job is to tell you what the Quality meter says.

For figuring out Final Grades, there are two ethical/professional principles I must follow. Violating these principles would be unethical and unprofessional of me and it would cheat the other students.

First principle: Grades can be based only on the quality of your work. So unfortunately, you can work hard for the course but still earn a low grade. I'm sorry if a low grade makes your life harder, but that's absolutely not a reason to raise your grade.

The second principle: Grading has to be done on a level playing field: I can't give one person an opportunity that I don't offer to everyone unless it's to re-level the playing field. This is why questions like "Can I retake the an test or can you give me some extra work to raise my grade?” have the answer "No."

Academic Honesty

Students are responsible for maintaining the highest level of academic integrity, as discussed in the IIT Code of Academic Honesty. The normal penalty for violations of this policy, especially copying or other cheating during tests, is an E for the course, plus notification of the student's advisor and/or department and any appropriate administrators.

Disability Policy

Reasonable accommodations will be made for students with a letter of accommodation from The Center for Disability Resources (3424 S. State Street - 1C3-2; 312-567-5744; ). Please discuss any necessary accommodations with me, well ahead of time.