Yang Xiao Home

CS 270 (Fall 2025)
Systems Programming

Course Information

Instructor: Yang Xiao (contact: xiaoy[AT]uky.edu)
Meeting Times: M/W/F 2:00-2:50 PM (Section 001), 3:00-3:50 PM (Section 002)
Office Hour: Hardymon Rm 233, Thu 2:00 PM – 4:00 PM
TA: Pearson Garner (contact: Brendan.White[AT]uky.edu), Office Hour: Tue/Wed/Thu 12:00-1:00 PM, 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 Textbook: 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)
Text Reading Assignment
(H: Homework, L: Lab, P: Project)
1 08/25 M
08/27 W
08/29 F
Lec 0: Syllabus and course content overview
Lec 1: Intro to C: Portable Assembly Language
Lab 0: Your VM, the shell, basic C tool chain, gdb
1
2-2.2
2-2.2

H0 (survey) out; P0 out (Thu)
L0 out - due Sat
2 09/01 M
09/03 W
09/05 F
Labor Day - no class
Lec 2: bit-diddling in C/C++
Lec 3: Integers and Two's Complement

N0 (sppl.), 2.3
N0 (sppl.)

H0 due, H1 out (Thu)

3 09/08 M
09/10 W
09/12 F

Lec 4: Intro to x86-64 - machine state
Lec 5: x86-64 - basic instructions & operand modes
Lab 1: Understanding a Program W/o Source Code
(Yang is in travel; watch pre-recorded video at your own pace)
3-3.3
3.4-3.5
3.10


H1 due; P0 due (Thu); H2 out (Thu)
L1 out - due Sat; P1 out

4 09/15 M
09/17 W
09/19 F
Lec 6: x86-64 - control flow instructions
Catch-up (focus on code examples)
Lec 7: x86-64 - procedure call and linkage
3.6

3.7

H2 due;
H3 out
5 09/22 M
09/24 W
09/26 F
Catch-up
Catch-up & Lec 8a: Data structures in C
Lec 8b: Implementing arrays/structs in memory


3.8-3.9


H3 due; H4 out
6 09/29 M
10/01 W
10/03 F
Catch-up
Lec 9: Buffer overflows & countermeasures
Lab 2: Buffer Overflows

3.10

P1 due;

H4 due; P2 out; L2 out - due Sat
7 10/06 M
10/08 W
10/10 F
Catch-up & Lec 10: Explicit memory allocation: malloc
Lec 11: Linking and ELF file format
Lec 12: Intro to hardware architecture & Y86-64

7.1-7.5
4.1-4.2
H5 out


8 10/13 M
10/15 W
10/17 F
Midterm study guide
Midterm Exam in class
Lec 13: Sequential Y86-64 implementation


4.3
H5 due
H6 out

9 10/20 M
10/22 W
10/24 F
Lec 14: Pipelined Y86-64 implementation
Catch-up & midterm problems walk-thru & Proj 2 hints
Lec 15: Intro to caching & locality
4.5-4.6

6.1-6.3

P2 due
H6 due
10 10/27 M
10/29 W
10/31 F
Fall Break - no class
Lec 16: Hardware cache operations
Lec 17: Exceptional control flow & processes

6.4-6.5
8.1-8.2
P3 out; H7 out (Tue)


11 11/03 M
11/05 W
11/07 F

Lec 18: Process lifecycle - Part 1 (basics)
Lec 19: Process lifecycle - Part 2 (APIs)
Lec 20: Interprocess communication w/signals & Lab 3: Signals and Race Conditions
8.3-8.4.2
8.4.3-8.4.6
8.5

H7 due (Tue)
H8 out
L3 out - due Sat

12 11/10 M
11/12 W
11/14 F
Catch-up (Lec 19, 20) & Proj 3 hints
Lec 21: Intro to virtual memory
Lec 22: Address translation

9.1-9.5
9.6
H8 due (Tue)

H9 out; P3 due
13 11/17 M
11/19 W
11/21 F

Lec 23: File systems concepts & I/O
Lec 24: File sharing & IPC w/ pipes
Lab 4: Working with Files
(Yang is in travel; watch pre-recorded video at your own pace)
10.1-10.5
10.6-10.7



P4 out; H9 due (Thu)
L4 out - due Sat; H10 out

14 11/24 M
11/26 W
11/28 F
Lec 25: Concurrent programming w/ threads (vs processes)
Thanksgiving Break - no class
Thanksgiving Break - no class
12.1, 12.3





15 12/01 M
12/03 W
12/05 F

Lec 26: Thread synchronization and races
Lec 27: Thread programming
Catch-up & Lab 5: Solving a Programming Problem with Threads (this lab is ungraded & informational only)
12.5
12.4, 12.7



H11 out (ungraded & informational)
P4 due

16 12/08 M
12/10 W
12/12 F
(Prep Days) Performance considerations & other system topics
(Prep Days) Final Exam Review
No class
H10 due (12/7, Sun)


17 12/15 M
12/17 W
12/19 F

Final exam (both sections), 3:30-5:30 PM, in classroom

Learning/Research Resources

UK Libraries, Free Tutoring and Coaching at UK, Google Scholar, ACM Digital Library, IEEE Xplore.