\
UCR CS 61: Computer Organization and Assembly Language
UCR CS 61: Computer Organization & Assembly Language
Summer session II, 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 course assignments and other material will be posted to this site.
Instructor :
Teaching Assistants and office hours:
Mailing List:
Lectures:
MTWR 10:00 - 11:30 am
Sproul 2360
Labs:
Lab attendance is mandatory. Plan to stay in the lab for the entire
lab session, working on material related to this course.
MW 1:00 - 4:00 pm
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 (35%)
- 5%: Homeworks
- 20%: Programming assignments
- 10%: Labs
ASSESSMENT (65%)
- 10%: Quizzes
- 15%: Lab Practicals
- 20%: Mid-Term exam
- 20%: Final exam
Approximate Time Requirements:
This is a four-unit CS course. The fact that it is over the
summer does not reduce the amount of work required. As such, you
should expect to spend the following approximate amount of time:
6 hours/week in lecture
6 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 Thursday, at 11 pm
- Home programming assignments: normally set on Tuesdays and
Thursdays, due via e-turnin the following Friday and Monday,
respectively, at 11pm.
- Quizzes: Generally on Wed. (but pop-quizzes can be sprung at any
time).
Make sure you have a few copies of your
personalized answer sheet
with you in every class (only the first page is needed).
- Topic 1: Introduction to concepts of Computer Organization
and LC-3 Assembly language (Chap 1)
slides
- Topic 2: Binary arithmetic & data types (Chap 2)
slides
- Topic 3: Logic operations, Boolean algebra (Chap 2)
slides
             
Hardware basics: transistors, logic gates (Chap 3)
slides
- Topic 4: Logic circuits & Memory (Chap 3)
slides
- Topic 5: von Neumann model & the Instruction cycle (Chap 4)
slides
- Topic 6: LC-3 Instruction Set in detail; LC-3 data path (Chap 5)
slides
- Topic 7: LC-3 data path (cont.)(Chap 5)
slides
- Topic 8: Assembly Language programming: the process; intro to I/O (Chaps 7 & 8)
Ch7 slides
Ch8 slides
- Topic 9 (5/23 - 5/29): I/O, traps to OS, subroutines (Chaps 8 & 9)
Ch8 slides
Ch9 slides
- Topic 10 (5/30 - 6/5): Stacks (Chap 10); Using Assembly language
to inplement some HLL functionality (Chap 14)
Ch10 slides
Intro to Part II slides
Final Exam
Friday 8/26
1:00 - 3:00 pm, SPRL 2360
Subject to change as the quarter progresses.
- Lab 1: Lab 1:
Basic systems intro; Assembly language tools; Turnin
- Lab 2: Lab Practical Exam 1 & Using LC-3 registers; adding
integers
- Lab 3: Memory addressing modes; loops
- Lab 4: Lab Practical Exam 2 & Storing and retrieving data
- Lab 5: Subroutines
- Lab 6: Lab Practical Exam 3 & Bit manipulation
- Lab 7: Character arrays
- Lab 8: Lab Practical Exam 4 & Tables
- Lab 9: Stacks
- Lab 10: Lab Practical Exam 5 & Review
Homework Assignments
Homework Solutions
Quiz Solutions
Midterm Solution
Programming Assignments
- 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
- 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 -- Very limited
collaboration MAY be acceptable, but programs must
represent YOUR OWN original work. Sharing code or team-coding are
strictly not allowed (even if team-coding was acceptable in a previous
class, this course DOES NOT allow team-coding). Copying code from ANY
source (any book, current or past students, past solutions, any work
you have turned in for a previous class, web, etc) is strictly not
allowed even with citation. Collaboration may consist of discussing
the general approach to solving the problem, but should not involve
communicating in code or even pseudo-code or discussion of
details. Students may help others find bugs. Your code MUST be unique.
- 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!!
- 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. 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.