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 + Lec 6: x86-64 - control flow instructions Lab 1: Understanding a Program W/o Source Code + Lec 6 cont. |
3.4-3.6 3.10 |
H1 due; H2 out (Wed) P0 due; P1 out |
| 4 |
09/15 R 09/17 T |
Lec 7: x86-64 - procedure call and linkage (Yang is in travel; watch pre-recorded video at your own pace) Lec 8: Intro to C (Part 2) - data structures & pointers |
3.7 |
|
| 5 |
09/22 T 09/24 R |
Lec 9: Implementing arrays/structs in memory |
3.8-3.9 |
|
| 6 |
09/29 T 10/01 R |
|||
| 7 |
10/06 T 10/08 R |
|||
| 8 |
10/13 T 10/15 R |
|||
| 9 |
10/20 T 10/22 R |
|||
| 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.