UCR CS 61: Computer Organization & Assembly Language
Spring, 2005
Lecture Schedule  
Lab Schedule  
Resources  
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, 3 hours; laboratory, 3 hours. An introduction to computer organization.
Topics include number representation, combinational and sequential logic,
computer instructions, memory organization, addressing modes, interrupt,
input/output (I/O), assembly language programming, assemblers, and linkers.
Prerequisite: CS 010 with a grade of "C-" or better
IMPORTANT NOTICE:
If for any reason your official enrollment in this course is delayed,
you are still expected to attend all lectures and labs, and submit all assignments,
from the beginning of class. Make-ups for missed labs, tests, assignments etc. are
generally not granted.
Class communications
ALL communication with the class will be via the CS61 mailing list
- so be sure to read your mail regularly
All course assignments and other material will be posted to this site.
Instructor :
Teaching Assistants and office hours:
Mailing List:
Lectures:
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: M 8 - 11 am, Surge 171
Section 022: T 8 - 11 am, Surge 171
Section 023: W 11 am - 2 pm, Surge 170
Text Book:
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.
There are two types of coursework: one designed to help you develop your skills
and understanding (DRILL), and the other designed to measure, as objectively as
possible, your mastery of those skills (ASSESSMENT). You will receive recognition
for your efforts in both components, but obviously ASSESSMENT items carry most of
the weight:
DRILL (30%)
- 10%: Homework (8 or 9: will count best 7)
- 10%: Programming assignments (8 or 9: will count best 7)
- 10%: Labs (10: will count all 10)
ASSESSMENT (70%)
- 15%: Quizzes (8 or 9: will count best 7)
- 15%: Lab Practicals (5: will count best 4)
- 20%: Mid-Term exam
- 20%: Final exam
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
8 to 10 hours/week doing individual study (readings,
homework, programming, lab preparation, etc).
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.
Submission due times
- Homework problem sets: normally set on Tuesdays, due via e-turnin
by the following Sunday, at 11 pm
- Home programming assignments: normally set on Tuesdays, due via e-turnin
by the following Sunday, 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 every class (only the first page is needed).
- Week 1 (3/28 - 4/3): Introduction to concepts of Computer Organization
and LC-3 Assembly language (Chap 1)
slides
             
Homework 1 Due via e-turnin by 11 pm, Sunday 4/3
             
Homework 1 solution
             
Programming assignment 1
Due via e-turnin by 11 pm, Sunday 4/3
             
Quiz 1 solution
- Week 2 (4/4 - 4/10): Binary arithmetic & data types (Chap 2)
slides
             
Homework 2 Due via e-turnin by 11 pm, Sunday 4/10
             
Homework 2 solution
             
Programming assignment 2
Due via e-turnin by 11 pm, Sunday 4/10
             
Quiz 2 solution
- Week 3 (4/11 - 4/17): Logic operations, Boolean algebra (Chap 2)
slides
             
Hardware basics: transistors, logic gates (Chap 3)
slides
             
Homework 3 Due via e-turnin by 11 pm, Sunday 4/17
             
Homework 3 solution
             
Programming assignment 3
Due via e-turnin by 11 pm, Sunday 4/17
             
Quiz 3 solution
- Week 4 (4/18 - 4/24): Logic circuits & Memory (Chap 3)
slides
             
Homework 4 Due via e-turnin by 11 pm, Sunday 4/24
             
Homework 4 solution
             
Programming assignment 4
Due via e-turnin by 11 pm, Sunday 4/24
             
Quiz 4 solution
- Week 5 (4/25 - 5/1): von Neumann model & the Instruction cycle (Chap 4)
slides
             
Homework 5 Due via e-turnin by 11 pm, Sunday 5/1
             
Homework 5 solution
             
Programming assignment 5
Due via e-turnin by 11 pm, Sunday 5/1
Midterm - in class Friday 4/29
SAMPLE MIDTERM EXAM
SAMPLE EXAM SOLUTION
MIDTERM EXAM SOLUTION
- Week 6 (5/2 - 5/8): LC-3 Instruction Set in detail; LC-3 data path (Chap 5)
slides
             
Homework 6 Due via e-turnin by 11 pm, Sunday 5/8
             
Homework 6 solution
             
Programming assignment 6
Due via e-turnin by 11 pm, Sunday 5/8
             
Quiz 6 solution
- Week 7 (5/9 - 5/15): LC-3 data path (cont.)(Chap 5)
slides
             
Homework 7 Due via e-turnin by 11 pm, Sunday 5/15
             
Homework 7 solution
             
Programming assignment 7
Due via e-turnin by 11 pm, Sunday 5/15
             
Quiz 7 solution
- Week 8 (5/16 - 5/22): 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/22
             
Homework 8 solution
             
Programming assignment 8
Due via e-turnin by 11 pm, Sunday 5/22
             
Quiz 8 solution
- Week 9 (5/23 - 5/29): i/o, traps to os, subroutines (Chaps 8 & 9)
Ch8 slides
Ch9 slides
             
Homework 9 Due via e-turnin by 11 pm, Monday 5/30
             
Homework 9 solution
             
Programming assignment 9
Due via e-turnin by 11 pm, Monday 5/30
             
Quiz 9 solution
- Week 10 (5/30 - 6/5): Stacks (Chap 10); Using Assembly language
to inplement some HLL functionality (Chap 14)
             
NOTE: 5/30 is an academic holiday
Ch10 slides
Intro to Part II slides
Quiz 10 solution
SAMPLE FINAL EXAM
solution
Final Exam
Thursday 6/9, 11:30 am to 2:30 pm, SPRL 1340
Subject to change as the quarter progresses.
- Week 1: Lab 1:
Basic systems intro; Assembly language tools; Turnin
- Week 2: Lab 2: Lab Practical Exam 1 &
Using LC-3 registers; adding integers
- Week 3: Lab 3: Memory addressing modes; loops
- Week 4: Lab 4: Lab Practical Exam 2 & Storing and retrieving data
- Week 5: Lab 5: Subroutines
- Week 6: Lab 6: Lab Practical Exam 3 & Bit manipulation
- Week 7: Lab 7: Character arrays
- Week 8: Lab 8: Lab Practical Exam 4 & Tables
- Week 9: Lab 9: Stacks
- Week 10: Lab Practical Exam 5 & Review
- 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.
To put it very bluntly: I will examine you on any material covered in assigned reading,
in homework problem sets, or in labs, whether or not I have mentioned it in lecture,
and vice-versa!
- 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 practicals -- Obviously
no collaboration
- In-lecture exercises -- mostly done as teams requiring active participation.
- Homeworks -- Collaboration is strongly ENCOURAGED, although of course,
you should still submit your own solutions (cut & paste submissions will be
treated as academic dishonesty - see below).
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 strongly
ENCOURAGED, within a programming team: again, you will be working
in teams, but the programs you submit must still
represent YOUR OWN original work.
Teams should work on the algorithm together, and help debug/test
each others code.
However, copying code from ANY outside source
(any book, current or past students, past solutions, web sites,
etc.) is STRICTLY FORBIDDEN: we test every submission for
copying, and when we find it we treat it as flagrant academic
dishonesty (see below).
Team-mates' code is expected to be similar, but you may not
just copy a team-mate's solution.
- 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.
REMEMBER: 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.
Electronic assignment turn-in
Anonymously report suspected cheating
Anonymously Provide Comments/Suggestions
- Grades will be mailed to you on a regular basis thriughout the quarter.