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: TBD (contact: TBD), Office Hour: TBD

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; will instruct the lab remotely)
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
Lec 7: x86-64 - procedure call and linkage
Lec 8: Data structures in C; implementing arrays/structs in memory
3.6
3.7
3.8-3.9

H2 due; H3 out (Thu)

5 09/22 M
09/24 W
09/26 F
Catch-up/in-class help on P1
Lec 9: Explicit memory allocation: malloc
Lab 2: Buffer Overflows

H3 due; P1 due (Thu); H4 out (Thu)
L2 out - due Sat; P2 out
6 09/29 M
10/01 W
10/03 F




H4 due; H5 out (Thu)

7 10/06 M
10/08 W
10/10 F




H5 due

8 10/13 M
10/15 W
10/17 F

Midterm Exam (tentative date)

P2 due
H6 out

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



H6 due; P3 out; H7 out (Thu)

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.