CS 270 (Fall 2026)
Systems Programming
Course Information
Instructor: Yang Xiao (contact: xiaoy[AT]uky.edu)
Meeting Times: T/R 3:30-4:45 PM
Office Hour: Hardymon Rm 233, Wed 2:00 PM – 4:00 PM
TA: TBD, Office Hour: TBD, EE Annex 205
Course Description
This course provides an introduction to computer systems and explores computer architecture, operating systems, and networks from a programmer's perspective. The course also introduces advanced programming and debugging tools. Topics include hardware instruction sets, machine language and C language program representations, linking/loading, operating systems (process management, scheduling, memory management, interprocess communication, and file systems), network programming (socket programming and web protocols), and common security attacks and solutions.
Textbooks and Materials
Required Textbook: R. Bryant and D. O'Hallaron, Computer Systems: A Programmer's Perspective, third edition, Pearson, 2016. ISBN 978-0-13-409266-9.
Strongly Recommended Toolbook: B. Kernighan and D. Ritchie, The C Programming Language, second edition, Prentice Hall, 1988. ISBN 0-13-110362-8. Why this text is strongly recommended: It is both (i) the best way to learn C language; and (ii) a great reference for the future. Why C language is important (at least for this course): Because C is the closest high-level language to machine language—It is designed so that you can know exactly what the machine is doing when it executes your programs.
Course Schedule (Tentative)
| Week | Date | Agenda (Lecture notes uploaded to Canvas the same day before class) |
Textbook Reading | Assignment (H: Homework, P: Project) |
|---|---|---|---|---|
| 1 |
08/25 T 08/27 R |
Lec 0: Course intro + Lec 1: Intro to C (Part 1) Lab 0: Your VM, the shell, basic C tool chain, gdb + Lec 2: bit-diddling in C/C++ |
1 2-2.2 |
H0 (survey) out P0 out (Fri) |
| 2 |
09/01 T 09/03 R |
Lec 3: Integers and Two's Complement Lec 4: Intro to x86-64 - machine state |
2.3 & Sppl. Notes 3-3.3 |
H1 out |
| 3 |
09/08 T 09/10 R |
Lec 5: x86-64 - basic instructions & operand modes Lab 1: Understanding a Program W/o Source Code + Starting Lec 6 |
3.4-3.5 3.6, 3.10 |
H1 due P0 due; P1 out (Fri); H2 out (Fri) |
| 4 |
09/15 R 09/17 T |
Lec 6: x86-64 - control flow instructions (Yang is in travel; watch pre-recorded video at your own pace) Lec 7: x86-64 - procedure call and linkage |
3.7 |
H2 due; H3 out |
| 5 |
09/22 T 09/24 R |
Lec 7 cont. + Lec 8a: Intro to C (Part 2) - data structures Lec 8b: Data structure implementation in memory |
3.8-3.9 |
H3 due; H4 out |
| 6 |
09/29 T 10/01 R |
Lec 9a: Buffer overflows & countermeasures Lab 2: Buffer Overflows + Lec 9b: Lab 2 take-aways + Lec 10: Explicit memory allocation: malloc |
3.10 |
P1 due; P2 out H4 due |
| 7 |
10/06 T 10/08 R |
Lec 11: Linking and ELF file format Lec 12: Intro to hardware architecture & Y86-64 + Starting Lec 13 |
7.1-7.5 4.1-4.2 |
|
| 8 |
10/13 T 10/15 R |
Lec 13: Sequential Y86-64 implementation + Midterm study guide Midterm Exam in class |
4.3 |
|
| 9 |
10/20 T 10/22 R |
Lec 14: Pipelined Y86-64 implementation Lec 15: Caching & locality + Lec 16: Hardware cache operations |
4.5-4.6 6.1-6.3, 6.4-6.5 |
|
| 10 |
10/27 T 10/29 R |
Fall Break - no class |
||
| 11 |
11/03 T 11/05 R |
|||
| 12 |
11/10 T 11/12 R |
|||
| 13 |
11/17 T 11/19 R |
|||
| 14 |
11/24 T 11/26 R |
Thanksgiving Break - no class |
||
| 15 |
12/01 T 12/03 R |
|||
| 16 |
12/08 T 12/10 R |
(Prep Days) (Reading Days) No class. |
||
| 17 |
12/15 T 12/17 R |
Final exam, Tuesday, December 15, 1:00 - 3:00 PM, in classroom |
Learning/Research Resources
UK Libraries, Free Tutoring and Coaching at UK, Google Scholar, ACM Digital Library, IEEE Xplore.