Introduction to Computer Architecture and Organization
Instructor: Andree Jacobson
Email:andree@unm.edu Office: FEC127 Office hours: T+Th 11am - 12.30pm
Teaching assistant: Steven Garcia
Email: ssg2011@unm.edu Office: ECE212 Office hours: Mon 2pm - 4pm, Fri 2pm - 3pm
Class Meeting Times
Lecture: T/Th 9.30am - 10.45am @ CENT-1032 Lab: Fri 1.00pm - 1.50pm @ CENT-B146A
This course is intended to teach you how software programs that you write turn into machine level instructions that execute out physical computer hardware. In selecting the list of topics for this course, I asked "Might understanding this topic help to improve a student's programming capabilities?"
Goal: To develop an understanding of the software and hardware components and their interactions that lead to improved programming from both correctness and performance perspectives.
With this goal in mind, the tentative set of topics we will cover are:
- Data Representation and Manipulation
- Machine Programming
- Exceptions
- Storage and Caching
- Linking
- Memory Management (Application's perspective)
- Code Optimization
- Concurrency
Prerequisites: CS241 and ECE238, or equivalent. Knowledge of C/C++ programming in the UNIX environment, basic computer data structures (arrays, structures, and linked data structures), integer data representation, binary data operations (bitwise AND, OR, NOT, and two's complement arithmetic), and basic math.
Required Text: Computer Systems: A Programmer's Perspective, 3rd Edition (CS:APP2e), by Randal E. Bryant and David R. O'Halloran, 2010, ISBN 0136108040.
Grading: Grading will be based on participation (10%), a set of programming assignments (35%), homeworks (20%), a midterm exam (15%) and a final exam (20%).
Special Accomodations: The University of New Mexico is committed to providing equal access to educational and employment opportunities for qualified individuals with disabilities. The University shall make reasonable accommodation to the known physical or mental limitations of a qualified individual with a disability, unless the University can show that providing an accommodation would impose an undue hardship. While I cannot anticipate each student's needs, my goal to ensure that each student has the acocomodations necessary to enjoy a comfortable and supportive environment. If you require special accomodations, please notify me as soon as possible, so that the University and I can meet your needs in an timely and effective manner.
Working on Assignments: Unless otherwise noted, all homeworks, assignments, programming projects, quizzes and exams must be done individually. For assignments where collaboration is allowed, I will make this explicit on a per assignment basis.
Late Work: To be determined (in general no).
Class Attendance: There will be a sign‐in sheet at the start of each class and lab period. This class covers a large amount of sometimes complex subject matter; the lectures serve to facilitate your learning of this material. While I will track class attendance, you attendance is not required. That said, you are responsible for all lectured material. Unless an absence is excused, I will not use office hours to go over lectured material for someone who did not come to class. Religious observances and personal emergencies are valid reasons for missing class. For an absence to be excused you must notify my explicitly of the reason before the relevant class period if at all possible, but (except for extreme circumstances that make timely notification impossible) no later than three days of the absence.
Academic Dishonesty: The University's policy on academic dishonesty is clear, and any suspicion of cheating will be taken thoroughly investigated ‐‐ penalties for cheating include receiving an F for the course and other possible University action. Do not cheat! When in doubt, consult the instructor.
Tue - Jan 19: Introduction Thu - Jan 21: No class Tue - Jan 26: Debugging, Makefiles, and Catchup. Thu - Jan 28: Integer Representation Tue - Feb 2: Integer Representation Thu - Feb 4: Floating Point Representation Tue - Feb 9: Instruction Set Architectures, Machine code intro. Thu - Feb 11: Machine Programming, Intro. Tue - Feb 16: Machine Programming, Cont.