UCR CS 61: Computer Organization & Assembly Language
Spring quarter, 2004
Lecture Schedule  
Lab Schedule  
Turnin  
Previous CS61's  
In this course we start with transistors, logic gates, latches, logic structures,
and memory circuits. We cover the von Neumann model of computing, and then use all
these tools to understand thoroughly the Instruction Set Architecture of a simple
computer, the LC-3. This leads on to assembly language programming of the LC-3.
Catalog description :
Lecture, three hours / week; laboratory, three hours / week.
Prerequisite: CS10
Class web site:
www.ilearn.ucr.edu
Enrolling in this course gives you automatic access to the
UCR "ilearn" site: your login id is the name part of your ucr
student email address, and your initial password is your Student
ID (no dashes or spaces).
ALL communication with the class (announcements, assignments,
handouts, etc.) will be via the ilearn site.
Some communications may be made only via the
ilearn site, so you are expected to check it regularly.
Instructor :
Dr. Brian Linard (blinard@cs.ucr.edu)
Office hours: Tuesday 10:00 am to 6:00 pm (by appointment)
Office:
Surge Bldg. 340.
Teaching Assistants and office hours:
Shalendra Chhabra schhabra@cs.ucr.edu
Asheq Khan kasheq@cs.ucr.edu
Ya-Lee Tsai ytsai@cs.ucr.edu
Office hours held in
Surge Bldg. 282.
Lectures:
Section 001: MWF 3:10 to 4:00 pm
SPR. 2340
Labs:
Lab attendance is mandatory. Plan to stay in the lab for the entire
lab session, working on material related to this course.
Section 021 R 8:10 to 11:00 am S170
Section 022 R 8:10 to 11:00 am S171
Section 023 R 11:10 to 2:00 pm S170
Text Book:
Introduction to Computing Systems , 2nd edition, by Patt & Patel (McGraw-Hill)
ISBN 0-07-246750-9
Course grading:
Letter grades are assigned (approximately) according to the usual
90/80/70/60 scale out of 100 total course points, with 90 and
above corresponding to an A, 80 and above to a B, 70 and above to a
C, 60 and above to a D, and less than 60 to an F. +/- grades will
likely be given. A+'s will be given to students in the high 90's who
also have turned in all required material and many of the challenge
Lab excercises. The course is divided into two grading components,
combined as a weighted sum to total 100 points:
65: Theory component (mostly Machine Organization):
10: Quizzes (expect a 10 - 15 min. quiz each Friday)
5: Homeworks
25: Midterm exam
25: Final exam
35: Practical component (mostly Assembly Language Programming):
10: Lab programming exercises and attendance
5: Lab practical exams
20: Home programming assignments
To ensure minimum competency in successive courses requiring a
C- or better in this course, the following grading scheme will be used:
a C- minimum in both components is necessary to achieve a C-
minimum for the final course grade, regardless of the components'
weighted sum; otherwise, the final course grade will be no greater
than a D+. For example, a B in the practical component and a D in the
theory component might yield a weighted sum of a C, but would instead
result in a final course grade of D.
Approximate Time Requirements:
This is a four-unit CS course. As such, you should expect to spend
the following approximate amount of time:
3 hours/week in lecture
3 hours/week in lab
5 to 10 hours/week doing individual study (readings,
homework, programming, lab preparation, etc).
Please don't underestimate the time you will need to spend on this
course. These are real time amounts spent by average successful past
students. Computer Science and Engineering are challenging disciplines
requiring extensive time to master.
Subject to change as the quarter progresses.
Read the book before lecture! Reading ahead is one of the most effective
ways of doing better in class -- you'll be amazed how much more
comprehensible and useful the lectures will be.
Submission due times
- Homework problem sets (hw): normally set on Fridays, due via e-turnin
by the following Friday at 11 pm
- Home programming assignments (assn): normally set on Fridays, due via
e-turnin by the Saturday of the following week at 11 pm
- Quizzes: Generally on Fridays (but pop-quizzes can be sprung at any
time of day or night <g>).
Make sure you have a few copies of your
personalized answer sheet
with you in all classes (only the first page is needed).
- Week 1: Introduction to concepts of Computer Organization
and LC-3 Assembly language (Chap 1)
slides
             
Homework 1 Due via e-turnin by 11 pm, Friday 4/2
             
Programming assignment 1
Due via e-turnin by 11 pm, Saturday 4/3
- Week 2: Binary arithmetic & data types (Chap 2)
slides
             
Homework 2 Due via e-turnin by 11 pm, Friday 4/9
             
Programming assignment 2
Due via e-turnin by 11 pm, Saturday 4/10
- Week 3: Logic operations, Boolean algebra (Chap 2)
slides
             
Hardware basics: transistors, logic gates (Chap 3)
slides
             
Homework 3 Due via e-turnin by 11 pm, Friday 4/16
             
Programming assignment 3
Due via e-turnin by 11 pm, Saturday 4/17
- Week 4: Logic circuits & Memory (Chap 3)
slides
             
Homework 4 Due via e-turnin by 11 pm, Friday 4/23
             
Programming assignment 4
Due via e-turnin by 11 pm, Saturday 4/24
- Week 5: von Neumann model & the Instruction cycle (Chap 4)
slides
             
Homework 5 Due via e-turnin by 11 pm, Friday 4/30
             
Programming assignment 5
Due via e-turnin by 11 pm, Saturday 5/1
             
Midterm
- Week 6: LC-3 Instruction Set in detail; LC-3 data path (Chap 5)
slides
             
Homework 6 Due via e-turnin by 11 pm, Friday 5/7
             
Programming assignment 6
Due via e-turnin by 11 pm, Saturday 5/8
- Week 7: LC-3 data path (cont.)(Chap 5)
slides
             
Homework 7 Due via e-turnin by 11 pm, Friday 5/14
             
Programming assignment 7
Due via e-turnin by 11 pm, Saturday 5/15
- Week 8: Assembly Language programming: the process; intro to I/O (Chaps 7 & 8)
Ch7 slides
Ch8 slides
             
Homework 8 Due via e-turnin by 11 pm, Sunday 5/23
             
Programming assignment 8
Due via e-turnin by 11 pm, Monday 5/24
- Week 9: i/o, traps to os, subroutines (Chaps 8 & 9)
Ch8 slides
Ch9 slides
             
Homework 9 Due via e-turnin by 11 pm, Saturday 5/29
             
Programming assignment 9
Due via e-turnin by 11 pm, Sunday 5/30
- Week 10: Stacks (Chap 10); Using Assembly language to inplement some HLL functionality (Chap 14)
Ch10 slides
Intro to Part II slides
             
Miscellaneous & Review
Subject to change as the quarter progresses.
- Week 1: Lab 1 (3/29):
Basic systems intro; Assembly language tools; Turnin
- Week 2: Lab 2 (4/5):
Using LC-3 registers; adding integers
- Week 3: Lab 3 (4/12): Memory addressing modes; loops
- Week 4: Lab 4 (4/19): Storing and retrieving data
- Week 5: Lab 5 (4/26): Subroutines
- Week 6: Lab 6 (5/3): Bit manipulation
- Week 7: Lab 7 (5/10): Lab Practical Exam 1 & Character arrays
- Week 8: Lab 8 (5/17): Tables
- Week 9: (5/24): Lab Practical Exam 2, and review
- Week 10: (5/31): no lab (holiday)
- Material covered: As mentioned above, the course consists of
all material covered in lectures, labs, assigned reading, programming
assignments, etc. While there is considerable overlap among these elements,
they are to be considered separate and individually essential building
blocks of your introduction to Machine Organization and Assembly Language Programming.
- Collaboration policy
In general, we have found that one of the best predictors of success in these
courses is participation in a study group of some kind. We encourage you to
work together and learn from each other in as many ways as possible, and we will
provide any assistance we can to make this happen.
However, we also have to assess each student individually, so there are very
explicit boundaries to collaboration:
- Midterm, final, quizzes, lab practical -- Obviously
no collaboration
- In-lecture exercises -- Dependent on instructor instructions for
particular exercise.
- Homeworks -- Collaboration is strongly ENCOURAGED, although of course,
you should still submit your own solutions. In the past, many questions
on the midterm and final exams have been taken directly from homeworks.
- In-lab exercises -- Collaboration is strongly ENCOURAGED. If you
complete an exercise, feel free to help others -- teaching
enhances your own learning.
- Home programming assignments -- Collaboration is strictly FORBIDDEN.
Programs must represent YOUR OWN original
work. Sharing code or team-coding are not allowed. Copying
code from ANY source (any book, current or past students, past
solutions, the web, etc.) is not allowed.
Cooperation to the extent of helping to debug, or
discussing the general approach to solving the problem is encouraged, but
should never involve communicating code or even pseudo-code or explicit algorithms.
Your code must be unique -- if it is not, we will find out,
and will treat it as a case of flagrant academic dishonesty.
- Academic dishonesty: cheating of any sort is severely punished.
Report cheating (anonymously if you wish)
at:
https://www.cs.ucr.edu/cheating/.
We regularly catch several cases of copying in the course EVERY QUARTER,
with severe penalties given.
Other forms of cheating, such as lying to an instructor in order to
be allowed to make up a test, or copying on a quiz, etc., are all treated
with the same severity.
PLEASE, don't risk it!! We hate failing students!!
- Regrade policy: regrade requests must be submitted in
writing and within one week of the posting of the relevant grades.
Likewise, grade-database errors should be pointed out within one week of posting.
- Communicating with the instructors and TAs: when emailing your
instructors or TAs, please remember that
many students have the same name, and your instructor may be teaching
other courses too. So please give your full name and list the
course you are referring to, and preferably include your student ID
number. You should use your UCR email account
(remember that UCR sends many official notices now only
by email). Please try to be polite and professional, and use
reasonable grammar and formatting.
- Assignments and lab reports: All turned-in assignments
will be turned in electronically.
Each file should be headed with your name, student id, email, lab
& lecture section numbers.
Also, you must include a section explaining the
design, structure, etc of your program and how it works. Comments in
source code are important, but they are
not a replacement for an explanatory section. Please
remember that successfully writing a computer program that compiles and
runs correctly is not something anyone can do in just a few minutes,
even when it looks easy. Debugging typically takes three times
longer than figuring out how to write your program. So don't leave
your programming assignments to the last minute!
- Reading: Read the current book sections before coming
to lecture, and attend all lectures in their entirety. To encourage these
important college study habits, we may give a few simple pop quizzes
during the quarter, at any time during lecture.
- Students are required to stay the full three hours of lab session
every week. You'll have Lab exercises, discussions, and possibly
practical exams. Work ahead or on extra course-related material if you
finish early.
- During lab discussion time, students should not use the computers.
Ideally, students would move their chairs to the whiteboard area.
- Prepare for lab before arriving.
- To reduce disruptions and provide for the best educational
environment, all persons in lab during scheduled lab time
should be formally registered in that section. In general, no
swapping sections and no unregistered people in the lab are allowed,
even if there are extra computers.