CSCI-281: Assembly Language and Computer Architecture

Fall 2022

Contact Info

Instructor: Brad Richards
Lecture: MWF 11:00-11:50
Phone: x3579
Email: brichards@pugetsound.edu
Office: Thompson 401
Office Hours: M 12-1:00, W 10:10-10:50, Th 12-12:50, F 12-1:00 (all via Zoom)
Tutor Schedule: TBD
CWL Tutors: subject tutors
Course Comments: anonymous comment form
Department Comments: anonymous comment form

Contents

Resources:

Covid:

As you're no doubt aware, the Omicron variant of the Covid virus is still present in the surrounding area. It's highly transmissible, can be passed to (and by) those of us who are vaccinated, and can result in significant long-term illness even if you're vaccinated. Please take all possible precautions to avoid spreading Covid. Do not come to class if you're feeling sick or have had close contact with someone who is. Consider wearing a mask in class, even if CWL isn't requiring them. All of my office hours will be held via Zoom this semester. (Our Zoom meeting room is 988 439 5089. Password and direct link are available on Canvas.)

Schedule:

Week Topic Reading Assignment
8/29 Overview, History, Performance; Intro to MIPS assembly Sections 1.1-1.11 Asmt 1 (solns)
9/5 More MIPS, Binary, Assemblers & Memory
No Class Monday
Sections 2.1-2.4 Asmt 2 (solns)
9/12 Representing Instructions, Branches & Loops
No Class Wednesday
Sections 2.5-2.9  
9/19 Procedures 2.10-2.14; Appendix A.5-A.6 Asmt 3 (solns)
9/26 More procedures, Arithmetic 3.1-3.4 Asmt 4 (solns)
10/3 Floating Point 3.5 Asmt 5 (soln)
10/10 Logic, Gates, ALU Appendix B.1-3, B.5  
10/17 Finish ALU
No Class Monday
Appendix B.5, B.8-9; 4.1-2 Exam Friday
(topics list, old exam, old solns), new solns
Asmt 6 (solns, circuit)
10/24 CPU: Building a datapath 4.1-4.4 Asmt 7 (solns)
10/31 Datapath, Pipelining 4.5-4.6 Asmt 8 (soln)
11/7 Caches 5.1-5.3 Asmt 9 (solns, diagram)
11/14 Caches, Memory Hierarchies 5.4-5.8 Asmt 10 (solns)
11/21 More Caches & Hierarchies
No class Wednesday — Friday
5.4-5.8  
11/28 Parallel Computing 6.1-6.5 Asmt 11
12/5 Wrap-up
No Class Friday
Final Exam: Wednesday, December 14th, noon-2pm
Final exam topics list
old exam solns
current solutions
 

Background:

How in the heck can software (ultimately just a bunch of ones and zeros), control how a processor (an inert chunk of silicon) behaves? How are data values like strings, integers, and floating-point values represented inside a computer? How do processors perform arithmetic? How is memory organized, and how does that organization influence the performance of the programs you write? Why have processors moved to multi-core designs, and what might the future hold? These questions and many more will be answered in this course!

This course introduces the architecture and organization of modern computer hardware. It will also close the gap between the kinds of programs you've written before (in languages like Java, Python, C, etc.) and the actual computer hardware by introducing you to the missing links: Machine code and assembly language. In other words, we'll study computer hardware and how to control it via low-level programs. You will write programs in the MIPS assembly language and run them in the MARS simulator, versions of which are freely available for a variety platforms, but this is not exclusively a programming course — assignments for the course will range from logic problems and programming exercises to circuit diagrams and class presentations.

Learning Outcomes:

The following course outcomes are drawn from the 2013 international Computer Science Curriculum guidelines. Upon completion of the course, successful students should be able to:

Grading:

Your overall grade is composed as follows: Homework for this class will be submitted electronically, and must be turned in by class time on the due date for full credit (unless the assignment explicitly states otherwise). Late homework will be penalized 5% per day, and will not be accepted more than one week late. The following grade cutoffs are upper bounds — they might come down, but will not be set higher: A = 95, A- = 90, B+ = 88, B = 83, B- = 80, C+ = 77, C = 73, C- = 70, D+ = 67, D = 64, D- = 60, F = <60.

Community Statement:

The goals of this course can only be accomplished in a setting of mutual respect, where ideas, questions, and misconceptions can be discussed with civility. As your instructor, I am committed to creating a classroom environment that welcomes all students, regardless of their identities (e.g., race, class, gender, sexual orientation, religious beliefs). I will not tolerate behaviors that could negatively affect another student's classroom experience. Such behaviors might include: making rude or condescending comments, snickering at others' questions or comments, talking over other individuals, and so on. I reserve the right to withdraw a student from this class who is repeatedly exhibiting such behavior. I firmly believe that everyone in the class is fully capable of engaging and grasping the material, and that the world of computing is stronger when it includes the broadest possible set of perspectives. We all have unconscious biases, and I will try to continually examine my judgments, words, and actions to keep my biases in check and treat everyone fairly. I hope that you will do the same. If you feel comfortable doing so, please let me know if there is anything I can do to make sure everyone is encouraged to succeed in this class.

Academic Integrity

The assignments form a crucial part of the course and, unless stated otherwise, students are required to work on them individually. Please ensure that any work you take credit for is your own. Inappropriate collaboration with other students is not permitted and will be subject to severe penalties. In particular, sharing your work in any way with other students (e.g. code inspection, sharing code electronically via email or photos, etc) is inappropriate, as is copying part or all of someone else's work. Code or other hints found online must be attributed, and should not compromise your ownership of the work. Please review the university's Academic Integrity policy and ask me if you have any questions regarding its application to this course.

University, Academic, and Administrative Policies

There are many university policies and resources that offer guidance on how to be safe and make the most of your college education. Here are a few that you should take a moment to review: