Welcome to CS301: Computer Architecture
Specific information about this course and its requirements can be found below. For more general information about taking Saylor Academy courses, including information about Community and Academic Codes of Conduct, please read the Student Handbook.
Explore hardware/software components, assembly language, and the functional architecture and design of computers, with a focus on topics like instruction sets, processor arithmetic and control, Von Neumann architecture, pipelining, memory management, storage, and input/output.
Modern computer technology requires an understanding of both hardware and software, since the interaction between the two offers a framework for mastering the fundamentals of computing. The purpose of this course is to cultivate an understanding of modern computing technology through an in-depth study of the interface between hardware and software. In this course, you will study the history of modern computing technology before learning about modern computer architecture and a number of its essential features, including instruction sets, processor arithmetic and control, the Von Neumann architecture, pipelining, memory management, storage, and other input/output topics. The course will conclude with a look at the recent switch from sequential processing to parallel processing by looking at the parallel computing models and their programming implications.
This course includes the following units:
- Unit 1: Introduction to Computer Theory
- Unit 2: Instructions: Hardware Language
- Unit 3: Fundamentals of Digital Logic Design
- Unit 4: Computer Arithmetic
- Unit 5: Designing a Processor
- Unit 6: The Memory Hierarchy
- Unit 7: Storage and I/O
- Unit 8: Parallel Processing
- Unit 9: Look Back and Look Ahead
Course Learning Outcomes
Upon successful completion of this course, you will be able to:
- identify important advances that have taken place in the history of modern computing, and discuss some of the latest trends in the computing industry;
- explain how programs written in high-level programming languages, such as C or Java, can be translated into the language of the hardware;
- describe the interface between hardware and software, and explain how software instructs hardware to accomplish desired functions;
- explain the process of carrying out sequential logic design;
- explain computer arithmetic hardware blocks and floating-point representation;
- explain how a hardware programming language is executed on hardware and how hardware and software design affect performance;
- explain the factors that determine the performance of a program;
- explain the techniques that designers use to improve the performance of programs running on hardware;
- explain the importance of memory hierarchy in computer design, and explain how memory design impacts overall hardware performance;
- describe storage and I/O devices, their performance measurement, and redundant array of inexpensive disks (more commonly referred to by the acronym RAID) technology; and
- identify the reasons for and the consequences of the recent switch from sequential processing to parallel processing in hardware manufacture, and explain the basics of parallel programming.
Throughout this course, you will also see learning outcomes in each unit. You can use those learning outcomes to help organize your studies and gauge your progress.
The primary learning materials for this course are articles, lectures, and videos.
All course materials are free to access and can be found in each unit of the course. Pay close attention to the notes that accompany these course materials, as they will tell you what to focus on in each resource, and will help you to understand how the learning materials fit into the course as a whole. You can also see a list of all the learning materials in this course by clicking on Resources in the navigation bar.
Evaluation and Minimum Passing Score
Only the final exam is considered when awarding you a grade for this course. In order to pass this course, you will need to earn a 70% or higher on the final exam. Your score on the exam will be calculated as soon as you complete it. If you do not pass the exam on your first try, you may take it again as many times as you want, with a 7-day waiting period between each attempt. Once you have successfully passed the final exam you will be awarded a free Course Completion Certificate.
There are also end-of-unit assessments in this course. These are designed to help you study, and do not factor into your final course grade. You can take these as many times as you want until you understand the concepts and material covered. You can see all of these assessments by clicking on Quizzes in the course's navigation bar.
Tips for Success
CS301: Computer Architecture is a self-paced course, which means that you can decide when you will start and when you will complete the course. There is no instructor or an assigned schedule to follow. We estimate that the "average" student will take 48 hours to complete this course. We recommend that you work through the course at a pace that is comfortable for you and allows you to make regular progress. It's a good idea to also schedule your study time in advance and try as best as you can to stick to that schedule.
Learning new material can be challenging, so we've compiled a few study strategies to help you succeed:
- Take notes on the various terms, practices, and theories that you come across. This can help you put each concept into context, and will create a refresher that you can use as you study later on.
- As you work through the materials, take some time to test yourself on what you remember and how well you understand the concepts. Reflecting on what you've learned is important for your long-term memory, and will make you more likely to retain information over time.
- Although you may work through this course completely independently, you may find it helpful to connect with other Saylor students through the discussion forums. You may access the discussion forums at https://discourse.saylor.org.
In order to take this course, you should:
- be comfortable writing, compiling, and executing your own programs;
- be knowledgeable about the basics of digital logic and Boolean algebra;
- have experience programming using a high-level language such as C/C++ and/or have completed CS101: Introduction to Computer Science I or CS102: Introduction to Computer Science II.
This course is delivered entirely online. You will be required to have access to a computer or web-capable mobile device and have consistent access to the internet to either view or download the necessary course resources and to attempt any auto-graded course assessments and the final exam.
- To access the full course including assessments and the final exam, you will need to be logged into your Saylor Academy account and enrolled in the course. If you do not already have an account, you may create one for free here. Although you can access some of the course without logging in to your account, you should log in to maximize your course experience. For example, you cannot take assessments or track your progress unless you are logged in.
For additional guidance, check out Saylor Academy's FAQ.
This course is entirely free to enroll in and to access. Everything linked in the course, including textbooks, videos, webpages, and activities, is available for no charge. This course also contains a free final exam and course completion certificate.