Syllabus - CS341
Introduction to
Computer Architecture and Organization

University of New Mexico - Spring 2008


[ Home ] [ Syllabus ] [ Lectures ] [ Information ] [ Assignments ] [ Grades ]

Instructor

Andree Jacobson
andree (at) cs (dot) unm (dot) edu
http://www.cs.unm.edu/~andree
Office: FEC 319,Phone: (505) 277-3052
Office Hours: Mon + Wed : 12.00pm (noon) - 3.00pm

Schedule

Lectures: Tue + Thu 9:30am - 10:45am; MECH 208.
Lab: Fri 1.00pm - ESCP 110

Teaching Assistant

William McMain (Email: praetorfenix69_at_gmail_dot_com)
Office: FEC 318 (Ph: 505-277-3131)
Office Hours:TBA

Catalogue Description

341L. Introduction to Computer Architecture and Design. (3)
Survey of various levels of computer architecture and design: microprogramming and processor architecture, advanced assembly language programming, operating system concepts and input/output via the operating system.
Prerequisites: 241L and ECE 238L.

Course Overview and Goal

So, you have completed CS152, CS241, and ECE238 - this means that you are ready for CS341. Some assumptions I'll make about you when you come to class is that you understand binary logic, truth tables, have a notion of number systems (hex and octal), are familiar with programming in Java and C, have a basic understanding of data structures and memory management in a computer.

With the above mentioned knowledge, we are now prepared to go deeper into the computer system to try to understand how a processor works, conceptually. Previous to this course, you know that when you write a command in a program, the compiler translates this into machine code that is executed on the system. In this class, we will understand exactly how that command is executed inside the processor by disecting a simple MIPS processor and analyzing it. The substantial parts of this part of the course is to understand datapaths through the processor. We will also look in quite some detail on computer arithmetic, and repeat some of the binary logic you did in ECE238 to make sure it's second nature to you. Furthermore, we'll look at performance and how to do some optimizations in the processor and at assembly code level. We'll also talk about cache memory and how to do input/output at a very low level.

We will write programs in C and MIPS assembly througout the semester, and the purpose of these programs is to emphasize certain concepts that we will cover during the class. The class has a 50 minute recitation session on Fridays at 2pm. Even though we have this session, you should be prepared to spend a fair amount of work on programs/projects in this class outside class and section time.

The main goal of this class is to increase your understanding of the organization of a processor, and the how the operating system interacts with the processor to perform work. We're taking you toward the hardware in this class, to complement the software portion that is addressed in CS351. This class is absolutely necessary if you are intersted in operating systems (one of the required 400-level classes in the major), and compiler design.

Prerequisites

CS241 and ECE238 or their equivalents. If you are unsure if you have the appropriate knowledge before starting this class, please talk to the instructor about your particular case. All the work that you will do and turn in is to be done on the CS linux systems, so you must have a basic understanding of how to work in linux, which you should have gotten from cs241.

Course Web Page

The course web page will always have updated information on what is happening in the class. There is a Lecture Plan from which you can see what has been covered in each class. This page will also have links to digital versions of handouts so that they can be printed out in case you missed a class. At the bottom of the class homepage there will be a list with urgent messages, and updates to the webpage. For example about changes in assignments, etc. It is your responsibility to keep yourself informed about these things. It is my responsibility to keep the page up to date. Grades will also be posted on the web page.

Required Textbook

Patterson & Hennessy: Computer Organization and Design
The Hardware/software Interface, 3rd ed. (Revised Printing)
ISBN: 0-12370-606-8, Price: $59.10 (on Amazon)

The course will follow the text book fairly closely, though we may also use some supplemental materials. Homework assignments will be based largely on the content of the book, and use the same vocabulary. Supplemental materials may be handed out in class, or may be available through the course web page. It is the student's responsibility to be informed of all the materials used for the class.

Cheating & Collaboration a.k.a Academic Honesty

The university has a strict policy on academic integrity. This policy is supposed to be followed by all students. Your individual effort is required on all assignments unless otherwise noted. For all individual assignments, the solutions turned in must be your own original work. You are allowed to talk about these assignments with your peers, but keep the discussion on a high level. If you discuss a solution in terms of source code, you are cheating! Be aware that we will be checking all your solutions for similarities to other student's solutions. Violations to the academic integrity will be delt with in a strict manner. In the end, cheating does not benefit anyone! Please try to be honest to each other. If you have any doubts about if something is considered cheating or not, it is your responsibility clear it with your instructor in advance.

Policy: A first offense will be penalized by a negative equivalent of the value of the assignment. I.e., if the assignment is worth 200 points, you will get -200 points for the assignment, and it will count toward your final average. A second incident will automatically result in a failing grade in the class. All academic integity violations will be reported to the appropriate authorities (i.e., the department and college). It will remain in your records until graduation and can possibly result in further disciplinary actions.

Assessments and Grading

There will be a number of programming assignments, written homeworks, and exams throughout the semester. You are responsible knowign all material covered in class, on assignments, homeworks, for the exams. Requests for regrades will be honored within one week from the day the assignment was returned to you. After that one week, no regrades will be accepted. The TAs grade according to the instructors wishes, if you have any problems with grading policies, please address them to the instructor directly. You should however turn in all requests for regrades of assignments to the TA. When you do, you should also supply a proper explanation of what you think was misgraded on a separate sheet of paper attached to the front of a printed out version of your assignment.

The grade distribution for each element in the class will be as follows:

  • 25% - One final exam
  • 15% - One midterm exam
  • 10% - Written Homeworks
  • 50% - Programming assignments and projects
Note! A grade of less than 50% on the final exam will automatically result in a grade of D in the class regardless of your performance on the assignments.

Late Policy

Each student has a total of four (4) late days over the semester. One day constitutes 24 hours. I.e, if the assignment is due on Wedensday at noon, you can use one (1) late day and turn it in by noon on Thursday without penalty. Partial days (turnin on Wednesday night, instead of Thursday noon) still counts as one whole late day. You can choose how you want to distribute the late days over the semester (3, 2+1, 1+1+1). Note, late days are only valid for homeworks and assignments - Not exams. There is no penalty for using late days, however after you have used all your late days - Late assignments will not be accepted (nor graded) and will be result in a score of 0.

Attendance Policy

You are expected to be attend every lecture, and arrive to class on time. Also be prepared to interact with the class during lectures. If I find it necessary I will take attendance and if you are not present in class without a valid excuse you will be withdrawn from the class. You are ultimately responsible for knowing all materials covered in lecture. If you need to miss a class or recitation session, please inform the instructor before class. Notes from class will be available on the web page, but do not assume that just reading those notes will compensate for absence in class.

As a courtesy to other students please restrict activities such as eating and talking on the phone to somewhere outside the classroom. Also, please turn your cell phones off or to vibrate during class hours. Students with ringing phones face a risk of getting many questions during the remainder of class :)

Computer Access/Setup

You are expected to do program development in the Unix environment on the CS departments linux machines (moons.cs.unm.edu). If you do not already have a CS account, you need to talk to the CS support staff in FEC 307, about getting an account. Once you have an account, you can access the computers in the lab on the third floor of Farris. Note, that all assignments will have to be turned in from these computers. Turnin instructions are available on the assignments page of the class web page. You may develop your programs and documentation on other machines such as your laptop, etc but you should always make sure that everything compiles and runs just fine on the CS department linux machines. Failure to do so may result in severe point deductions on assignments.

Topic Overview

This overview is a tentative outline and is subject to change. It is your responsibility to come to class, and check the webpage for updates to the schedule, change of exam dates, and coverage.

Week Date Topics Chapter &
Programs
1 1/21 - 1/25 Introduction - Course Overview - Computer Organization  
2 1/28 - 2/1 Computer Organization + Data Representation
Fri 2/1 - Last day to add class
Hw #1 out
3 2/4 - 2/8 Data Representation, Arithmetic Hw #1 due, Hw #2 out
4 2/11 - 2/15 Binary Operations, Machine code (MIPS Intro) Hw #2 due, Hw #3 out
5 2/18 - 2/22 Assembly Introduction, The SPIM simulator, Control flow Hw #3 in, Prog #1 out
6 2/25 - 2/29 Performance considerations and MIPS Architecture intro
Fri 2/29 - Last day to drop without grade
Prog #1 due, Prog #2 out
7 3/3 - 3/7 Control flow and it's hardware implementation  
8 3/10 - 3/14 Tue = Review, Thu = Midterm Prog #2 due
X 3/17 - 3/21 Spring Break!  
9 3/24 - 3/28 Datapath & Control contd... Hw #4 out
10 3/31 - 4/4 Pipelining Hw #4 in, Prog #3 out
11 4/7 - 4/11 Pipelining contd... Prog #3 due
12 4/14 - 4/18 Memory: Virtual Memory and Caches Prog #4 out
13 4/21 - 4/25 Memory: Virtual Memory and Caches  
14 4/28 - 5/2 Storage and networks Prog #4 due
15 5/5 - 5/9 Multiprocessors (if we have time)
Sat 5/5 is last day of classes
 
16 5/13 Tuesday, Final Exam (7.30am - 9.30am)  

Page last modified 01/25/2008 12:00PM by Andree