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.