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
Lec 13: Sequential Y86-64 implementation & Midterm study guide
Midterm Exam in class
Lec 14: Pipelined Y86-64 Implementation
4.3

4.5-4.6
H5 due
H6 out

9 10/20 M
10/22 W
10/24 F



H6 due; P2 due; H7 out (Thu)
P3 out
10 10/27 M
10/29 W
10/31 F
Fall Break - no class

Lab 3:

H7 due; H8 out (Thu)
L3 out - due Sat
11 11/03 M
11/05 W
11/07 F




H8 due; H9 out (Thu)

12 11/10 M
11/12 W
11/14 F


Lab 4:

H9 due; P3 due; H10 out (Thu); P4 out
L4 out - due Sat
13 11/17 M
11/19 W
11/21 F




H10 due

14 11/24 M
11/26 W
11/28 F

Thanksgiving Break - no class
Thanksgiving Break - no class
H11 out


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




P4 due
H11 due
16 12/08 M
12/10 W
12/12 F
(Prep Days)
(Prep Days) Final Exam Review
No class
17 Final exam (Section 001), TBD, in classroom
Final exam (Section 002), TBD, in classroom

Learning/Research Resources

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