Yang Xiao Home

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.