Fundamentals of Computer Systems
with Agha Ali Raza
CS 225 Fundamentals of Computer Systems
Course Description
_________________
We discuss how computers operate at fairly low level of abstraction and then discuss how computer systems build as layers and layers of abstraction. After taking this course, you will know the components of a computer and how do they fit together. How computers do arithmetic and how does the code you write actually execute? How does a program in a high level language like C get translated into a form the machine can execute? How can you write code likely to execute efficiently? How is information stored and accessed? How does your program access existing "libraries"?
Course Objectives
________________
Study the fundamental concepts of computer systems, including logic design, processor architecture, assembly language, and memory systems
Understand how application programmers can use the knowledge of the underlying system to write better programs
Learning Outcomes
__________________
By the end of the course, students should be able to:
Explain why everything is data, including instructions, in computers
Explain the reasons for using alternative formats to represent numerical data
Describe how negative integers are stored in sign-magnitude and twos complement representations
Explain how fixed-length number representations affect accuracy and precision
Describe the internal representation of non-numeric data, such as characters, strings, records, and arrays
Convert numerical data from one format to another
Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler
Demonstrate how to map between high-level language patterns into assembly/machine language notations
Explain how subroutine calls are handled at the assembly level
Show how fundamental high-level programming constructs are implemented at the machine-language level
Articulate that there are many equivalent representations of computer functionality, including logical expressions and gates, and be able to use mathematical expressions to describe the functions of simple combinational and sequential circuits
Explain basic instruction level parallelism using pipelining and the major hazards that may occur
Determine, for a given processor and memory system implementation, the average cycles per instruction
Course Outline
______________
Material
________
Computer Systems, A Programmer's Perspective by Randal E. Bryant and David O'Hallaron, Prentice Hall, 2016 (Third Edition)
Lectures
________
Course Staff
___________
Dr. Agha Ali Raza
Danyal Maqbool
Taimur Sarmad
Haashim Mirza
Abdul Rafay
Acknowledgements
__________________
We would like to express our gratitude towards Randy Bryant's and Dave O' Hallaron's course Introduction to Computer Systems (ICS), offered at CMU School of Computer Science as their amazing educational slides motivated and simplified several complex explanations in this course.