Welcome to CS301: Computer Architecture! General information about this course and its requirements can be found below.
Course Designer: The course was updated by J.M. Perry based on review comments and feedback.
Primary Resources: This course comprises a range of different free, online materials. However, the course makes primary use of the following materials:
Lawrence Livermore National Laboratory: Blaise Barneys Introduction to Parallel Computing
Victor Eijkhout, Edmond Chow, and Robert van de Geijns Introduction to High-Performance Scientific Computing
iBiblio: Tony R. Kuphalts Lessons in Electric Circuits, Volume IV: Chapter 6: Ladder Logic, Chapter 8: Karnaugh Mapping, Chapter 9: Combinational Logic Functions, Chapter 10: Multivibrators, and Chapter 11: Sequential Circuits
Norm Matloffs Programming on Parallel Machines
Massachusetts Institute of Technology: Professor Eric Grimsons Introduction to Computer Science and Programming: Lecture 1: Introduction and Goals; Data Types, Operators, and Variables
Connexions: Charles Severance and Kevin Dowds Understanding Parallelism Introduction
University of Maryland, Baltimore County: Dr. Jon Squires Computer Architecture Lecture Notes
University of California, Santa Barbara: Professor Behrooz Parhamis Lectures: Part I: Number Representation, Part II: Addition/Subtraction, Part III: Multiplication, and Part IV: Division
YouTube: Indian Institute of Technology, Delhi: Anshul Kumars Processor Design Introduction, Processor Design: Datapath, Processor Design: Control, Pipelined Processor Design, and Pipelined Processor Design: Datapath
Requirements for Completion: In order to complete this course, you will need to work through each unit and all of its assigned materials. Pay special attention to units 1 and 2 as these lay the groundwork for understanding the more advanced, exploratory material presented in the latter units. You will also need to complete assessments at the end of each unit and the final exam.
Note that you will only receive an official grade on your final exam. However, in order to adequately prepare for this exam, you will need to work through all of the resources in the course.
In order to pass this course, you will need to earn a 70% or higher on your final exam. Your score on the exam will be tabulated as soon as you complete it. If you do not pass the exam, you may take it again.
Time Commitment: This course should take you approximately 109.25 hours. This course also includes approximately 19 hours of optional material. Each unit includes a time advisory that lists the amount of time you are expected to spend on each subunit. These should help you plan your time accordingly. It may be useful to take a look at these time advisories, to determine how much time you have over the next few weeks to complete each unit, and then to set goals for yourself. For example, unit 1 should take you 10.5 hours. Perhaps you can sit down with your calendar and decide to complete subunits 1.1 and 1.2 (a total of 2.5 hours) on Monday night; subunits 1.3 and 1.4 (a total of 3.5 hours) on Tuesday night; subunits 1.5 and 1.6 as well as the assessment (a total of 4.5 hours) on Wednesday and Thursday nights; etc.
Tips/Suggestions: As noted in the Course Requirements section, it helps to have basic knowledge of computer programming using a high-level language such as C/C++. If you are struggling with concepts in this course, it may help to take a break to revisit CS101: Introduction to Computer Science I and CS102: Introduction to Computer Science II.
As you read, take careful notes on a separate sheet of paper. These notes will serve as a useful review as you study for your final exam.