Skip to Main Content

CS253 Introduction to Systems Programming

Fall 2019

Instructor:  Jim Conrad

Kount Tutoring Center:
Syllabus:  JRCCS253SyllabusF19
Final Exam:  Proctored by BSU Testing Center.  Flexible schedule TBA.


Many of your questions interest our entire class.  You really aren’t the only person confused by the assignment or whose code doesn’t run!   Please consider posting your questions on our piazza site; you will often get an answer faster than anywhere else.  Many my-code-doesn’t-work questions benefit from screenshots illustrating a snippet of the suspicious code and an example of how the program fails. 

Confused?  It’s perfectly acceptable to post code snippets on piazza and/or to assist other students.  Your questions, code snippets, and assistance are available to everyone just as if you asked them in our classroom; you are learning, not cheating.  Besides, no one wants to plagiarize code known not to work. 🙃


Some questions, especially those requiring interactive use of the debugger, can’t be easily answered on-line.  Someone has to actually execute and/or instrument your code to find the problem.  These are the questions you’ll need to take to the tutors in the Kount Tutoring Center (CCP241).  The CS253 tutoring schedule is posted online.  

Warning:  Tutors are often swamped with questions in the days before assignments are due.

Office Hours

Some problems stump even the tutors, and you’ll need assistance from the instructor.  While my office hours are posted in the Contact section of my web site, why wait?  Send me a text or an eMail, explain the problem, and we’ll figure out how to proceed.


Instructor’s Notes

  • We also use the piazza site for conducting in-class polls.  You can earn extra credit from most polls, and you can participate with the piazza app on your phone. 
  • If you have a laptop, bring it to work the in-class exercises.
  • We use blackboard for in-class quizzes.  Please bring your laptop or a phone with the blackboard app to class on quiz days.


1August 26, 2019Syllabus, K&R Ch1CS253L01Syllabus, review and helloworldP1 - cch
2August 26, 2019CS253L02Intro to C Programming LanguageQ1: Syllabus
3September 2, 2019Meclenburg Ch1CS253L03Make, Makefiles and gcc
4September 2, 2019K&R Ch2CS253L04Variables, strings, pointers, and fgetsQ2: L01..L02
5September 9, 2019CS253L05Data types, strings, arrays, constants, enumerationsP2 - match
6September 9, 2019K&R Ch3CS253L06gdbQ3: Makefiles
7September 16, 2019CS253L07Bitwise operations
8September 16, 2019K&R Ch4CS253L08Functions, cpp, header file guards & program structureQ4: K&R Ch1 and Ch2
9September 23, 2019K&R Ch5CS253L09Pointers and arraysP3
10September 23, 2019CS253L10Multi-Dimensional Arrays, Function PointersQ5: K&R Ch4
11September 30, 2019CS253L11The Buffer Overflow Stack Attack
12September 30, 2019K&R Ch6CS253L12Structures, malloc and freeQ6: K&R Ch5
13October 7, 2019CS253L13Structures, typedefP4 - smash1
14October 7, 2019K&R Ch7CS253L14Standard (High-level) I/OQ7: K&R Ch6
15October 14, 2019K&R Ch8CS253L15Low-Level I/O
16October 14, 2019CS253L16Debugging and ValgrindQ8: K&R Ch7 and Ch8
17October 21, 2019, threads, processors, fork, wait and zombies
18October 21, 2019CS253L18execQ9: Fork, wait
19October 28, 2019, sigaction, killP5 - smash2
20October 28, 2019, Producer-ConsumerQ10: Exec APIs
21November 4, 2019N/APipe In-Class Exercise
22November 4, 2019CS253L21LibrariesQ11: Signal and Kill
23November 11, 2019 Threads
24November 11, 2019 SectionsQ12: Pipes and libraries
25November 18, 2019CS253L23BProtecting Critical Sections in JavaP6 - smash3
26November 18, 2019
27November 25, 2019holiday
28November 25, 2019holiday
29December 2, 2019CS253L24Threads in C
30December 2, 2019CS253L25Identifying Critical SectionsQ13: Threads and Critical Sections
31December 9, 2019N/AReview for final
32December 9, 2019CS253L26Intro to an Operating System's Features and Structure