CPSC 305: Computer Systems and Architecture
| Meeting Times: | MR 8:00 am – 9:50 am, JFRM 054 |
|---|---|
| Instructor: | Ian Finlayson |
| Email: | ifinlay@umw.edu |
| Office: | Farmer 043 |
| Office Hours: | TR 8:30 am – 11:00 am, or by appointment |
| Required Textbook | Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold, 2nd Edition |
Course Description
This course examines the basic operation of computing systems. It takes a bottom-up approach covering each major component of such systems including hardware, logic circuit design, CPU instruction sets, assemblers, and compilers. Students will gain experience programming in assembly language and C.Course Goals & Objectives
- To learn the principles of electronics that form the basis of all computing equipment.
- To obtain a high-level understanding of the successive layers that comprise a physical computing system, and how they interact with one another to ultimately provide an application level solution.
- To gain experience building simple but representative components at each of the fundamental levels: electronic components, digital design, computer organization, machine & assembly language.
Student Learning Outcomes
After completing this course, students will be able to:
- Solve problems in C using a Linux-based command-line toolchain utilizing primitive types, arrays, structures and enumerations, pointers, functions, and all C control structures.
- Solve problems in assembly language using a Linux-based command-line toolchain, including arithmetic expressions, assignment statements, if-then-else statements, for loops and while loops, function calls and returns, including allocating and deallocating function stacks in accordance with conventions.
- Recognize and manipulate binary representations of information (integers, floating point numbers, and characters) stored in digital computers.
- Recognize and implement programs and data structures as mapped to memory, including memory sections global/static, stack, heap, and code.
- To gain experience building simple but representative components at each of the fundamental levels: computer organization, instruction set architecture, assembly language, machine language, digital design, and electronic components.
- Recognize and recall the fundamental fetch-decode-execute cycle of a Von Neumann CPU and how these cycles are overlapped into a pipeline creating instruction level parallelism.
- Recognize, recall, and explain memory hierarchy (secondary memory, main memory, cache memory, and registers) as an engineering trade-off to create affordable and efficient computers.
- Recognize, recall, and explain that small cache memory works due to the principle of spatial and temporal locality in program instructions and data.
- To obtain a high-level understanding of the successive layers that comprise a physical computing system, and how they interact with one another to ultimately provide an application level solution.
- Solve problems concerning the internal organization of computer components and the relationship between them. Components include CPU, registers, ALU, cache memory, main memory, secondary memory, I/O, fetch-decode-execute, buses, etc.
- Solve/visualize elementary computer components such as decoders, adders, multiplexors and flip-flops using Boolean logic and transistors.
- Represent Boolean gates using transistors.
- Analyze cost, performance, and design trade-offs in constructing a computer with its primary components.
- Learn the principles of electronics that form the basis of all computing equipment.
Grading Policy
Your grade will be determined as follows:- 50% Projects
- 10% Lab Exercises
- 20% Midterm Exam
- 20% Final Exam
- [94, ∞): A
- [90, 94): A-
- [87, 90): B+
- [84, 87): B
- [80, 84): B-
- [77, 80): C+
- [72, 77): C
- [70, 72): C-
- [66, 70): D+
- [60, 66): D
- [0, 60): F
Late assignments will have a 10% reduction in grade for each day late. Lab exercises are always due at the end of the day after they are assigned. For instance, a lab assigned on Tuesday is due at midnight Wednesday night. Final grades will not be rounded up, and no extra credit opportunities will be given on an individual basis.
The University provides the opportunity to provide grading feedback midway through the semester. This will take into account your score on the mid-term exam and the programming projects submitted up to that point. Any student receiving less than a 65% on either of these will receive a "U" for their mid-semester grade. If this happens to you, please don't hesitate to talk with me about how we can improve your performance in this class.
Student Conduct
- You are expected to attend each class meeting. If you miss a class, you are responsible for the material covered.
- You are asked not to use laptops or cell phones during class time.
- This class will be interactive. Expect to answer questions in class and always feel free to ask any questions yourself.
- If you miss an exam, you are required to provide legitimate documentation of an emergency for your absence to have a make up exam.
- If you can't make an exam for a non-emergency reason, you must schedule an alternate time to take it ahead of time.
Honor Policy
Students are expected to conduct themselves in a manner consistent with the letter and spirit of the Honor Constitution and CPSC department honor policy
For labs, collaboration is OK. The goal of the labs is to ensure you understand the concepts we are going over.
For projects, you may discuss the ideas with other students, but all of your work must be your own. You must yourself write and understand everything in each assignment you submit. It is an honor code violation to copy directly from another student either by copy and paste or by transcription, or to copy from the web or online AI tool.
For exams, you can not talk to anyone during the exam, or use any kind of notes.
If you have any questions or need clarification, please don't hesitate to contact me!
Accessibility Statement
The Office of Disability Resources has been designated by the university as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, please provide me a copy of your accommodation letter via email or during a meeting. I encourage you to follow-up with me about your accommodations and needs within this class. I will hold any information you share with me in the strictest confidence unless you give me permission to do otherwise.
If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, their office is located in Seacobeck 005, phone number is (540) 654-1266 and email is odr@umw.edu. The office will require appropriate documentation of disability.
Title IX Statement
University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the confidential resources found below. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator, their contact information can be found below. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.
Recording Statement
Classroom activities in this course may be recorded by student's enrolled in the course for the personal, educational use of that student or for all students presently enrolled in the class only, and may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the course instructor. All students are advised that classroom activities may be taped by students for this purpose. Distribution or sale of class recordings is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of copyright law. This policy is consistent with UMW's Policy on Recording Class and Distribution of Course Materials.
Tentative Schedule
| Date | Class Topic | Reading | Lab | Assignment |
|---|---|---|---|---|
| August 25 | Course Introduction | 1 – 3 | ||
| August 27 | Introduction to C | 4 – 5 | String Reversal | |
| September 1 | Labor Day: No class | |||
| September 3 | C Programming Continued | 6 | High Scores | |
| September 8 | Circuits and Switches | 7 – 8 | Rock-Paper-Scissors | |
| September 10 | Bytes and Bits | 9 | ||
| September 15 | Logic Gates | 10 | Seven Segment Display | |
| September 17 | Signed, Unsigned, Floating | 11 | ||
| September 22 | GBA Programming | 12 | GBA Input | |
| September 24 | Multiplexers and Decoders | 13 | Logic Unit | |
| September 29 | GBA Graphics Programming | 14 – 15 | Simple Logic Unit | XOR Encryption |
| October 1 | GBA Graphics Programming Continued | 16 | Tic Tac Toe | |
| October 6 | Addition Circuits, Midterm Topics | 17 | Combinatorial Analysis | |
| October 8 | Midterm Exam | |||
| October 13 | ||||
| October 15 | Sequential Logic | 18 | Flip Flops | |
| October 20 | Memory Systems | 19 | No Lab | |
| October 22 | Memory Systems Continued | 20 | GBA Pong | |
| October 27 | Assembly Programming | 21 | Average Calculation | |
| October 29 | Assembly Branches | 22 | Collatz Conjecture | |
| November 3 | Memory in Assembly | 23 | Uppercase Conversion | |
| November 5 | Carry Lookahead Adders | 24 | ||
| November 10 | No Class | 25 | Build a CPU Part 1 | |
| November 12 | Building a CPU | 26 | ||
| November 17 | Instruction Pipelining | 27 | Pipelining Exercise | |
| November 19 | Pipelining Continued | 28 | ||
| November 24 | Caching | Caching Exercise | ||
| November 26 | ||||
| December 1 | Parallelism | |||
| December 3 | Catchup and Review | Build a CPU Part 2 | ||
| December 10 | Final Exam, 8:30 – 11:00 | |||