UB Catalog information for CSE 220
This information is advisory only. The authoritative course description and requirements for a given semester are defined by the course syllabus.
This course is a required course in the 2018 and later curriculum. It covers low-level systems programming in userspace at the userspace/kernel boundary. Students will learn about the C programming language, system calls, memory management, threads, and concurrency.
|Lecture||MWF 13:00-13:50, Hochstetter 114|
|Lab||A1-A6, A8: MTWRFS Check HUB, Bell 340|
M 14:00-15:00, Davis 334
W 10:00-11:00, Davis 334
|TA Office Hours||(See Piazza)|
|Introduction to C (pdf)||2019-08-28|
|Variables, Strings, and Loops (pdf)||2019-08-30|
|Conditionals and Control Flow (pdf)||2019-09-04|
|Memory and Pointers (pdf)||2019-09-06|
|Programming Practices (pdf)||2019-09-09|
|A Tour of Computer Systems (pdf)||2019-09-11|
|Structs and Dynamic Allocation (pdf)||2019-09-13|
|Structs and Dynamic Allocation continued||2019-09-16|
|Integers and Integer Representation (pdf)||2019-09-18|
|Integers and Integer Representation||2019-09-20|
|Introduction to Git (pdf)||2019-08-26|
|Lab 02: Introduction to Make (pdf)||2019-09-02|
|Lab Exam 1||2019-09-09|
|Lab 03: Testing||2019-09-16|
|Lab 04: Introduction to gdb (pdf)||2019-09-23|
|AI Quiz||2019-09-06 23:59:00|
|PA0: Command-Line Calculator||2019-09-06 23:59:00|
|PA1: Conway’s Game of Life||2019-09-20 23:59:00|
Students are expected to have a solid grasp of simple data structures (such as lists and arrays) and some programming experience. (CSE 116 or equivalent experience.)
There are two texts for this course:
Computer Systems: A Programmer’s Perspective, Third Edition, by Randal Bryant and David O’Hallaron.
The C Programming Lanuage, Second Edition, by Brian W. Kernighan and Dennis M. Ritchie.
Both of these books are truly excellent, and I recommend that you consider buying a copy to keep for your career.
The topics to be covered in this course include:
The primary deliverables for this course are weekly labs and several larger projects. Labs will consist of short exercises intended to deepen student understanding of course material (and perhaps cover background material for course projects), and will be evaluated in-lab. Course projects will be C language implementations of concepts discussed in class. Projects and labs will make up at least 50% of the final course grade, with the remainder being quizzes and exams.
There are no graded homeworks for this course. Written homework assignments may be given to help students understand the material, and any material covered in homeworks may appear on exams or quizzes, but such assignments will not be directly evaluated.
All projects for this course must be implemented in C and compile and run correctly on the course-provided virtual machine image. Students will be expected to use version control and appropriate build tools (such as make) to manage their projects.