CPSC 305: Computer Systems and Architecture
| Meeting Times: | MW 8:00 am – 9:50 am, JFRM 054 |
|---|---|
| Instructor: | Ian Finlayson |
| Email: | ifinlay@umw.edu |
| Office: | Farmer 043 |
| Office Hours: | MTWR 10:00 am – 11:30 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 |
|---|---|---|---|---|
| January 12 | Course Introduction | 1 – 3 | ||
| January 14 | Introduction to C | 4 – 5 | String Reversal | |
| January 19 | MLK Day: No class | |||
| January 21 | C Programming Continued | 6 | High Scores | |
| January 26 | Circuits and Switches | 7 – 8 | Rock-Paper-Scissors | |
| January 28 | Bytes and Bits | 9 | ||
| February 2 | Logic Gates | 10 | Seven Segment Display | |
| February 4 | Signed, Unsigned, Floating | 11 | ||
| February 9 | GBA Programming | 12 | GBA Input | |
| February 11 | Multiplexers and Decoders | 13 | Logic Unit | |
| February 16 | GBA Graphics Programming | 14 – 15 | Simple Logic Unit | |
| February 18 | GBA Graphics Programming Continued | 16 | Tic Tac Toe | |
| February 23 | Addition Circuits, Midterm Topics | 17 | Combinatorial Analysis | |
| February 25 | Midterm Exam | |||
| March 2 | ||||
| March 4 | ||||
| March 9 | Sequential Logic | 18 | Flip Flops | |
| March 11 | Memory Systems | 19 | ||
| March 16 | Memory Systems Continued | 20 | ||
| March 18 | Assembly Programming | 21 | Average Calculation | |
| March 23 | Assembly Branches | 22 | Collatz Conjecture | |
| March 25 | Memory in Assembly | 23 | Uppercase Conversion | |
| March 30 | Carry Lookahead Adders | 24 | ||
| April 1 | Building a CPU | 25 | ||
| April 6 | C Miscellany | 26 | Grades Exercise | |
| April 8 | C Miscellany Continued | 27 | ||
| April 13 | Instruction Pipelining | 28 | Todo list Exercise | |
| April 15 | Caching | |||
| April 20 | Parallelism | |||
| April 22 | Final Review | |||
| April 29 | Final Exam, 8:30 – 11:00 | |||