CS250: Foundations of Computer Systems
The true voyage of discovery consists not of going to new places, but of having a new pair of eyes.
– Marcel Proust (1871 – 1922)
Fall 2025
CS250 covers foundational aspects of computer systems encompassing processors, networks, storage, and computing frameworks. A holistic understanding these constructs is key to designing systems (AI, Big Data, clouds, and security) that scale by surfacing problems and solutions from different vantage points. The course includes a discussion of processors, cores, and co-processors (GPUs). Speed differentials across the memory hierarchy and the implications of caching will be covered as well. The discussion of the memory subsystem is complemented with the design of data structures for storage systems. Core foundations of networking including the design of the key elements of the networking stack (IP, TCP, and UDP) will be covered alongside a discussion of DNS. The course also explores characteristics of I/O systems with an emphasis on on-disk data structures that facilitate effective data retrievals. Finally, the course ends with a future gazing component that explores new, promising systems on the horizon with an emphasis on neuromorphic computing.
Course Objectives
Upon successful completion of this course students will be able to:
- Explain core computer systems terminology
- Explain binary number representations, signed numbers, and floating-point numbers alongside conversions across numbering systems
- Synthesize concepts in Boolean logic and algebra
- Distill and build upon core concepts in memory management
- Describe the interplay between CPU, memory, the I/O subsystem alongside the execution of programs.
- Design programs that leverage networking protocols that underpin the internet including IP, TCP, and UDP.
- Design and implement core data structures used for storage systems
- Explain the inner workings of Graphic Processing Units (GPUs)
Extensive experimentation through programming assignments is a principal activity of this course. These assignments will focus on developing skills that are immediately transferable to building real-world systems.
Prerequisites
- CS 163 or CS 164 with a C or higher
- Concurrent Enrollment in CS 165
This course can be used in lieu of CS270 for all Computer Science majors (for e.g., it will satisfy the prerequisite for CS370). For ECE majors: This course may not satisfy the prerequisites for downstream ECE courses: for example, CS250 does not involve assembly programming.
2025 Fall Semester Details
Instructor(s)
|
Instructor 4_b4a01f-dc> |
Ariana Mims 4_1ab8d2-bb> |
|
Office 4_0fe0f0-db> |
CS Building 4_418880-51> |
|
|
compsci_cs250 {aT}colostate.edu (with the obvious change) 4_c0ba5e-78> |
|
Office Hours 4_3ff462-5a> |
Wednesday 6:15-7:15 PM 4_b37505-e5> |
Class Schedule
|
Section 4_fb9170-a7> |
Schedule 4_7b09a2-a3> |
Location 4_d89863-cf> |
Instructor 4_c4f2e9-0d> |
|---|---|---|---|
|
001 4_c1bdbe-df> |
MW 5:00 – 6:15 PM 4_3dbf82-79> |
Eddy 212 4_130cee-fd> |
Ariana Mims 4_983ccf-64> |
|
801 4_94fc11-da> |
Async 4_ca401b-2a> |
Online 4_3b1e40-2f> |
Ariana Mims 4_521d86-ef> |
TA Information:
| Name | Role |
| Phil Hopkins | GTA |
| Emilie Beck | GTA |
| Joshua Bridgham | UTA |
| Benito Encarnacion | UTA |
| Parker Jones | UTA |
| Zachary Nall | UTA |
| Macey Bearden | UTA |
Labs / Recitations in CSB 225 and CSB 315
|
R1 4_9a782f-eb> |
Wednesday 4_66ddcf-ca> |
9:00 – 9:50 AM 4_9bfe62-7d> |
CSB 315 4_125366-4e> |
|
R2 4_83a086-e7> |
Wednesday 4_bbfd01-02> |
11:00 – 11:50 AM 4_553e7d-42> |
CSB 315 4_52d659-62> |
|
R3 4_6f7437-01> |
Wednesday 4_9967f2-f2> |
12:00 – 12:50 PM 4_781358-e6> |
CSB 315 4_3fd0fa-9b> |
|
R4 4_3f9d4f-d7> |
Wednesday 4_8ce7a3-06> |
1:00 – 1:50 PM 4_6b7232-6f> |
CSB 315 4_8b4430-2f> |
|
R5 4_f0be0d-45> |
Wednesday 4_4823ec-0a> |
2:00 – 2:50 PM 4_ee6e7d-c0> |
CSB 315 4_ad1460-f3> |
|
R6 4_622bc7-90> |
Wednesday 4_8052bd-d4> |
3:00 – 3:50 PM 4_f4628e-e0> |
CSB 315 4_6123bd-6f> |