CS250: |
![]() |
[Schedule] | [Assignments] | [Infospaces] | [Grading] | [Syllabus] | [Home] |
Last updated on Wednesday, February 19, 2025 5:13 PM | |||||||||||||||||||||||||||||||||||||||||||
Professor | |||||||||||||||||||||||||||||||||||||||||||
Shrideep Pallickara |
Phil Hopkins Yunik Tamrakar Benito Encarnacion Parker Jones Alberto Marmolejo-Daher |
I will only test on meterials that I cover in class. There is no required text for thes course.
Readings will be based on the following recommended texts.
[NS] | The Elements of Computing Systems, second edition: Building a Modern Computer from First Principles. 2nd Edition. Noam Nisan and Shimon Schocken. ISBN-10/ ISBN-13: 0262539802 / 978-0262539807. MIT Press. |
[MJ] | How Computers Really Work: A Hands-On Guide to the Inner Workings of the Machine. Matthew Justice. ISBN-10/ISBN-13 : 1718500661 / 978-1718500662. No Starch Press. |
[JS] | The Secret Life of Programs: Understand Computers -- Craft Better Code. Jonathan E. Steinhart. ISBN-10/ ISBN-13 : 1593279701 / 978-1593279707. No Starch Press. |
[DT] | Peter J. Denning and Matti Tedre. Computational Thinking. Essential Knowledge series. The MIT Press. ISBN-10:ISBN-13 0262536560/ 978-0262536561. 2019. [Chapter 2] |
[RH] | Randall Hyde. Write Great Code, Volume 1, 2nd Edition: Understanding the Machine 2nd Edition. ASIN: B07VSC1K8Z. No Starch Press. 2020.
|
[RN] | Crafting Interpreters. Robert Nystrom. ISBN-10/ ISBN-13 : 0990582930 / 978-0990582939. Genever Benning. |
[PD] | Computer Networks: A Systems Approach. Larry Peterson and Bruce Davie. 4th edition. Morgan Kaufmann. ISBN: 978-0-12-370548-8. |
[MK] | Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Martin Kleppmann. ISBN-10/ ISBN-13 : 1449373321 / 978-1449373320. O'Reilly Media |
[PH] | Computer Organization and Design MIPS Edition: The Hardware/Software Interface. 5th Edition. David A. Patterson and John L. Hennessy. ISBN-10/ ISBN-13 0124077269/ 978-0124077263. Morgan Kaufmann. |
[RR] | Unix Systems Programming. Kay Robbins & Steve Robbins, 2nd edition. Prentice Hall. ISBN: 978-0-13-042411-2. |
[SGG] | Operating Systems Concepts. Avi Silberschatz, Peter Galvin, Greg Gagne. 8th edition. John Wiley & Sons, Inc. ISBN-13: 978-0-470-12872-5. |
[AP] | Alex Petrov. Database Internals. ISBN-10/13: 1492040347/978-1492040347 O’Reilly Media.
|
[SC] | Shane Cook. CUDA Programming: A Developer's Guide to Parallel Computing with GPUs (Applications of GPU Computing). ISBN-10/ISBN-13: 0124159338/978-0124159334. 1st Edition. Morgan Kaufmann. |
Introduction | References and HW | ||
This module introduces students to why computer systems thinking is critical in the design of large-scale systems. Computer systems allow viewing the problem space from multiple vantage points. Such vantage points allow designers to come up with creative solutions to problems. | [NS] Ch {1} Programming Exercises (1/21) |
||
Objectives: |
|||
01/21 |
Lecture 1 |
||
Binary number representations | Readings | ||
The realm of computer systems is based on binary i.e., all operations are based on 1s and 0s. We will look at the rationale behind this decision and the efficiencies that this choice enables. We will look at properties of binary numbers and how to perform conversions between decimal and binary number representations. |
[DT] Ch {2} [MJ] Ch {1} [NS] Ch {1} [JS] Ch {1} [RH] Ch {1} |
||
Objectives: [1] Discuss rationale for binary number representations [2] Explain properties of binary numbers [3] Perform calculations that convert from binary to decimal and vice versa |
|||
01/23 01/28 |
Lecture 2 Lecture 3 |
HW1 released (1/28) | |
Signed numbers and floating-point representations | Readings | ||
Working with positive and negative numbers and exponents comes very naturally to us when we are dealing with decimal numbers. Turns out doing this in binary is not that straightforward. There are no “signs” or “powers” that are built into binary. We need to work with 1s and 0s to accomplish all our objectives. In this module we will be looking at approaches to represent numbers that are positive, negative, gargantuan, or miniscule. | [NS] Ch {2} [JS] Ch {1} [MJ] Ch {1} |
||
Objectives:
|
|||
01/30 |
Lecture 4 |
||
Boolean Logic and Algebra | |||
Boolean logic is the bedrock of computer systems: the language used to make decisions. If regular algebra is the mathematics of numbers, Boolean algebra is the mathematics of true and false. We’ll start by exploring how to derive truth tables from Boolean functions and, in reverse, how to construct Boolean functions from truth tables. Along the way, we’ll break down the essential building blocks of digital logic -- elementary gates and their corresponding truth tables. And finally, we’ll see something remarkable: how every Boolean function, no matter how complex, can be built using nothing but NAND gates. | [NS] Ch {1,2, Appendix-A} [JS] Ch {1} |
||
Objectives:
|
|||
02/04 02/06 |
Lecture 5 Lecture 6 |
||
Memory Basics | [NS] Ch {3} [JS] Ch {3} |
||
When we write programs, we rely on variables, arrays, and data structures to store, modify, and retrieve values. But underneath it all, everything comes down to memory -- how state is stored, accessed, and changed over time. We’ll explore the mechanics of storing, retrieving, and modifying state, peeling back the layers to see what’s really happening in memory. Then we’ll tackle a deeper question: how do circuits keep track of time? To do that, we’ll introduce clocks, the beating heart of digital systems, which help us model the progression of time in computation. | |||
Objectives:
|
|||
02/11 02/13 |
Lecture 7 Lecture 8 |
||
Memory Hierarchy | |||
The speed differential between different levels of memory can make or break a computer’s performance. A well-designed system carefully manages these differences, ensuring that data moves efficiently between registers, L1/L2/L3 caches, and main memory. We’ll explore how these layers work together to keep access times low, and we’ll take a deep dive into cache design: examining direct-mapped caches, fully associative caches, and N-way associative caches to see how they help bridge the gap between blazing-fast processors and slower memory. | [JS] Ch {4} [RH] Ch {11} [NS] Ch {3} [SC] Ch {2,3} HW2 released (2/13) |
||
Objectives:
|
|||
02/18 02/20 |
Lecture 9 Lecture 10 |
||
Mid-Term I: 02/25 |
|||
The von Neumann Computing architecture | |||
Computers designed over the past 70 years or so are all based on the von Neumann architecture. In this module, we will look at several elements that comprise this architecture. Also included in this module is the notion of the stored program concept – one of the most foundational ideas in computer science. The module will also cover aspects relating to bus architectures, Moore’s law, and Dennard’s scaling. A key concept that we also look at in this module is Memory-Mapped I/O which allows a computer system to interoperate with a plethora of Input/Output (I/O) devices. |
|||
Objectives:
|
|||
02/27 03/04 |
|||
Machine Language | |||
Programs expressed in high-level languages need to be converted to a representation that the computer system can execute. This includes translating the semantics of higher-level languages into those that the computer system can process. We will be looking at characteristics of machine languages both binary and symbolic. We will also be looking at the notion of Instruction Set Architectures (ISAs) and we will be looking at different generations of the x86 ISA and ARM. |
|||
Objectives:
|
|||
03/06 |
|||
Software | |||
In this module we will be looking at how programs expressed in high-level languages are processed. In particular, we will be looking at the notion of a virtual machine (used in languages such as Java and C#) and stack machines. We will also be looking at the notion of heaps, stacks, and stack frames that play a crucial role in program execution and garbage collection. | |||
Objectives:
|
|||
03/11 |
|||
Networking Concepts | |||
Think of communication networks as enabling conversations at lightning speed. In this module, we’ll unravel some of the fundamental ideas that make these conversations possible. First, we’ll examine how data is prepared for its journey: how raw information is encoded before being sent across a network. Then, we’ll dive into the two main types of networks: circuit-switched and packet-switched. We will also explore how multiple conversations can share the same infrastructure, a concept known as multiplexing. Finally, we’ll explore one of the most elegant principles in networking: encapsulation. Much like the way letters are placed in envelopes, addressed, and sent through layers of postal systems, encapsulation ensures that messages travel efficiently and reach the right destination. Understanding these core ideas will give us a deeper appreciation for the choreography that underpins modern communication. |
[PD] Ch {1, 2} HW3 (released 03/06) |
||
Objectives:
|
|||
03/13 03/25 |
|||
Spring Break: Spring Break Recess at CSU March 15-23. |
|||
Internet Architecture | |||
This module is at the heart of our discussions on networking, where we unravel the elegant design of the Internet Protocol (IP) stack. At its core is a layered architecture that keeps the internet running smoothly. We’ll examine the foundation of it all -- the Internet Protocol itself -- exploring both IPv4, the workhorse of today’s internet (and yesteryears), and IPv6, its forward-looking upgrade designed for the future. We’ll also contrast two very different approaches to communication: TCP, which ensures messages arrive reliably and in order, and UDP, which trades reliability for speed. Together, these ideas reveal the underpinninggs of every connection, from web browsing to video streaming. |
[PD] Ch {1-5} |
||
Objectives:
|
|||
03/27 04/01 04/03 04/08 04/10 |
Midterm-II |
||
Mid Term II (04/08): Covers all topics covered between Midterm-I and up until the lecture on Thursday (i.e., 4/3). |
|||
Networking Extras | |||
In this module we look at additional critical concepts in networking. In particular, we look at issues such as how ISPs cope with the limited availability of unique IPv4 addresses, how several of these design decisions also help address security issues, and how hosts are able to discover hosts over the internet. Our discussions in this module encompass the interrelated issues of private IP addresses, network address translation, and the domain name services. | |||
Objectives:
|
|||
04/15 |
|||
Data Structures for Storage Systems | |||
In this module, we look at a key data structure for one of the most important I/O device: stable storage. We describe the key differences between in-memory and on-disk data structures. To ensure that our discussions are self-contained we first start with linear scan that we then improve by pruning search spaces using binary search. We discuss the notion of dynamic data structures that adapt to contents of the data items. Next, we cover a popular in-memory data structure, Binary Search Trees (BSTs). We then cover one of the most foundational data structures for storage systems: B-Trees. In particular, B-trees are data structures that are designed to align with how data access and transfers (block-based) take place in storage systems. We highlight both the similarities and key differences between BSTs and B-Trees. Issues such as insertions, deletions, merges, and balancing in B-Trees are discussed as well. We complete our discussions on B-Trees with variants such as B*-trees and B+-Trees. |
HW4 (released 04/12) | ||
Objectives:
|
|||
04/17 04/22 04/24 04/29 |
|||
Graphics processing units (GPUs) | |||
Graphics processing units (GPUs) are used extensively in gaming and AI/ML (Artificial Intelligence/Machine Learning) applications. In this module, we will explore GPUs and contrast them with CPU based systems. A key emphasis here is to identify the specific types of problems that GPUs are particularly well-suited for. We will explore the issue of memory locality and cache coherency in both GPU and CPU based systems. Notably, CPUs and GPUs work in tandem with each other and workloads that effectively target them will see considerably improved performance. |
|||
Objectives:
|
|||
05/01 05/06 05/08 |
|||
Comprehensive Final Exam in Eddy-212 Thursday, May 15th, 2:00-4:00 pm |
|||
Department of Computer Science, Colorado State University, Fort Collins, CO 80523 USA © 2025 Colorado State University |