Stan Kurkovsky, PhD
HomeTeaching › Systems Programming

Systems Programming:
Raspbian/Linux with C

CS 355 - Fall 2017

Catalog description

Prerequisites: CS 153 and 254. Design and development of systems software. Topics include machine and operating system organization, hardware/software interfaces, hardware-specific constraints on software applications, and using application programming interfaces and system libraries for the design and development of systems applications.


Dr. Stan Kurkovsky, Professor of Computer Science
MS 303-06
(860) 832-2720
(860) 832-2712
Office hours
MW 12:30-1:30, TR 1:30-3:00 or by appointment
Class meetings
MW 1:40 pm - 2:55 pm @ MS 117

Textbook and other things you will need

  • Understanding Unix/Linux Programming: A Guide to Theory and Practice, by Bruce Molay. Prentice Hall, 2003, ISBN 0130083968
  • Textbook companion web site available at
  • Learn to Code with C on Raspberry Pi, by Simon Long
  • Access to a laptop computer that can be brought to class on a regular basis
  • A Raspberry Pi kit provided to all students at no charge
    Raspberry Pi documentation and remote access via SSH
  • A GrovePi sensor kit provided to each student team at no charge
  • In-class handouts
  • Instructor's web site available at and other web sites recommended by the instructor
  • Course project document

Course learning outcomes

Program educational objectives and student outcomes are supported by the following course learning outcomes achieved by students upon a successful completion of this course:

  1. Understand the role of systems programming and be able to apply appropriate knowledge of computing and mathematics to solve systems programming problems (a);
  2. Analyze a system-level computing problem, identify and define the computing requirements appropriate to its solution (b);
  3. Design, implement, and evaluate an integrated hardware/software system that meets a well-defined set of specifications (c).
  4. Function effectively as a team member working on a software development project (d);
  5. Evaluate the impact of devices utilizing the Linux operating system on individuals, organizations, and society (g);
  6. Apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices (j);
  7. Apply design and development principles to construct complex hardware/software systems of varying complexity integrating Android and Linux devices using current techniques, skills, and tools (i,k).

Tentative schedule

Please note that this schedule may change as we progress through the course material

Reference: M - Molay, Understanding Unix/Linux Programming: A Guide to Theory and Practice

Week 1: August 28 - September 1

  • Introduction
  • Topic: The big picture (Molay Ch. 1)
          What is systems programming?
          Unix from different perspectives
  • Topic: The Internet of Things
          Course project requirements

Week 2: September 4 - September 8

  • September 4 - Labor Day
  • Topic: C programming review
          Data types and variables
          Control flow

Week 3: September 11 - September 15

Week 4: September 18 - September 22

  • Topic: Unix login records (Molay Ch. 2.1-2.5)
          Unix commands and the manual
          User records
          File IO
  • Lab 2: who

Week 5: September 25 - September 29

Week 6: October 2 - October 6

Week 7: October 9 - October 13

Week 8: October 16 - October 20

  • Topic: File systems (Molay Ch. 4)
          HDD structure
          inode-based file systems
          Trees of directories
  • Lab: make up

Week 9: October 23 - October 17

  • Midterm
  • Lab 6: find

Week 10: October 30 - November 3

  • Topic: Connection control (Molay Ch. 5)
          Devices vs files
          Disk and terminal connections
          Terminal drivers
  • Lab 7: write
  • Course project: simple device demo (part 3)

Week 11: November 6 - November 10

Week 12: November 13 - November 17

Week 13: November 20 - November 24

  • Furlough
    To help Connecticut solve its budget crisis, state employees agreed to give up some of their pay and benefits to help lawmakers who were unwilling to balance the budget. One of these concessions is that all state workers, including full-time faculty at CSU, have agreed to take 3 unpaid leaves of absence (furlough days). On those days we are required to stay home from work and will not receive any pay. At CCSU full-time faculty will be taking one of these furlough days on Friday, 9 March 2018, and will not teach or hold office hours on that day. Each faculty member will choose two additional days for which they will not be paid. We are sorry that your education may have been disrupted by the unwillingness of our legislature to adequately fund higher education.
  • November 22-26 - Thanksgiving Recess

Week 14: November 27 - December 1

  • Topic: Video game programming (Molay Ch. 7.7-7.12)
          Handling multiple signals
          Using timers and signals
  • Lab 10: snake + make up

Week 15: December 4 - December 7

Final: December 13

  • Final exam: Wednesday, December 13, 1:00 - 3:00 pm

Midterm and final exams

Each test will focus on the most recent material. However, each test will very likely include some questions aimed at the material covered by the earlier test(s). Make-up tests may only be given if a student can provide a written proof of a serious reason for missing a test (such as illness or accident).

Labs and course project

During the labs and the course project students will work on hands-on problems focusing on the material covered in class lectures and reading assignments. Students are required to work on labs individually. Each lab must be demonstrated in class no later than one week after the lab date; all relevant code must be submitted using BlackBoard. Late submissions for labs will be accepted during the 'make up' labs (October 19 for labs 1-4, December 5 for labs 5-9) for no more than 50% of credit.

Course project must be completed by students working in teams of three. Each team will demonstrate their work to the rest of the class at the end of the semester.

Academic misconduct

All students are expected to demonstrate integrity in the completion of their coursework. Academic integrity means doing one's own work and giving proper credit to the work and ideas of others. It is the responsibility of each student to become familiar with what constitutes academic dishonesty and plagiarism and to avoid all forms of cheating and plagiarism. Students who engage in plagiarism and other forms of academic misconduct will face academic and possibly disciplinary consequences. Academic sanctions can range from a reduced grade for the assignment to a failing grade for the course. From a disciplinary standpoint, an Academic Misconduct Report may be filed and a Faculty Hearing Board may impose sanctions such as probation, suspension or expulsion.

For further information on academic misconduct and its consequences, please consult the Student Code of Conduct and the Academic Misconduct Policy.


All students are expected to attend class sessions regularly. However, recognizing individual differences, each student is responsible for his/her own attendance and for making-up any missed study or work. Limited assistance will be offered to those with plausible reasons for absences; unexcused absences will result in the student being totally responsible for the make-up process.

Help with computers

The University offers some student assistants who may be of value in helping students with basic computer functionality only, not with program writing.

Students with disabilities

Please contact me privately to discuss your specific needs if you believe you need course accommodations based on the impact of a disability, medical condition, or if you have emergency medical information to share. I will need a copy of the accommodation letter from Student Disability Services in order to arrange your class accommodations. Contact Student Disability Services, Willard Hall, 101-04 if you are not already registered with them. Student Disability Services maintains the confidential documentation of your disability and assists you in coordinating reasonable accommodations with your faculty.

Grades and evaluation

Students will be evaluated regularly during the semester and should be aware of their progress continuously during the semester. The final course grade will be reported according to the stated University policy.

The final course grade will be calculated according to the following distribution of points:

Labs (10 labs @ 3 pts each)            30
Course project        25
Midterm    20
Final exam     25
Total 100

Course letter grade will be determined as follows:

A A- B+ B B- C+ C C- D+ D D- F
94-100 90-93.99 87-89.99 84-86.99 80-83.99 77-79.99 74-76.99 70-73.99 67-69.99 64-66.99 60-63.99 0-59.99