Systems Programming

C on Google Cloud     |     CS 355 - Spring 2024

Catalog description:

Prerequisite: C- or better in both CS 253 and (CS 254 or CET 229).
Design and development of systems software. Topics include machine and operating system organization, operating systems concepts, 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.

Logistics

Instructor Dr. Stan Kurkovsky, Professor of Computer Science
Office MS 303-06
Phone (860) 832-2720
E-mail kurkovsky@ccsu.edu
Student office hours MW 1500-1600 and TR 1000-1130 or by appointment, booking info
Class meetings TR 1215 - 1330 @ MS 117

Textbook and other things you will need

  • The C Programming Language by Brian Kernighan and Dennis Ritchie, Second Edition. Prentice Hall, 1998, ISBN 0131103628.
  • Understanding Unix/Linux Programming: A Guide to Theory and Practice, by Bruce Molay. Prentice Hall, 2003, ISBN 0130083968. Companion web site.
  • An interactive C programming tutorial
  • A Google Cloud account to access the Cloud Shell
  • Access to a laptop computer that can be brought to class on a regular basis
  • Instructor's web site available at http://www.cs.ccsu.edu/~stan/
  • Course project document
  • In-class code examples on GitHub

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 in bridging the hardware/software interface;
  2. Apply appropriate knowledge of computing to solve systems programming problems (SO-1);
  3. Design and implement an integrated hardware/software system that meets a well-defined set of specifications;
  4. Function effectively as a team member working on a software development project (SO-4);
  5. Produce and present software projects specifications, design, and other software project artefacts (SO-3).

Important: self-care

Please take care of yourselves and your loved ones. Your physical and mental well-being is the most important thing. It has always been (or should have been) so, even before the pandemic. Please email/message me to check in if I won’t see you or hear from you on a day we have class or an assignment is due.

Tentative schedule

Reference:
KR - Kernighan and Ritchie, The C Programming Language
M - Molay, Understanding Unix/Linux Programming: A Guide to Theory and Practice

Week 1: January 17-19

  • Introduction
  • Topic: The big picture (Molay Ch. 1)
          What is systems programming?
          Unix from different perspectives
  • Topic: Google Cloud shell
          "Hello, world!" (KR Ch. 1.1)

Week 2: January 22-26

  • Topic: C programming review (KR Ch. 2),
          Data types
          Operators
          Expressions
  • Topic: Control flow (KR Ch. 3),
          Conditions
          Loops

Week 3: January 29 - February 2

Week 4: February 5-9

Week 5: February 12-16

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

Week 6: February 19-23

  • Test 1
  • Topic: How to copy a file (Molay Ch. 2.6-2.8)
          Writing cp
          Buffering

Week 7: February 26 - March 1

Week 8: March 4-8

  • Topic: File properties (Molay Ch. 3.6-3.9)
          ls -l and stat
          File mode and bitmasks
  • Lab 5: ls v.1

Week 9: March 11-15

  • Spring break

Week 10: March 18-22

  • Topic: File systems (Molay Ch. 4)
          HDD structure
          inode-based file systems
          Trees of directories
  • Lab 6: ls v.2

Week 11: March 25-29

  • Topic: Connection control (Molay Ch. 5)
          Devices vs files
          Disk and terminal connections
          Terminal drivers
  • Lab 7: find

Week 12: April 1-5

Week 13: April 8-12

Week 14: April 15-19

Week 15: April 22-26

Week 16: April 29 - May 3

Week of final exams

  • Final exam: Tuesday, May 7, 1030-1230

Course expectations for out-of-class work

To succeed in this 3-credit class, it is expected that you commit a total of 12 hours per week to master the course material. This includes 2.5 hours of lecture time and an additional 9.5 hours dedicated to independent study and coursework. This time commitment aligns with the expectations set by the Computer Science department for major courses and adheres to university policies. Recognizing that dedicating this amount of time outside the classroom is a significant commitment, it is nevertheless necessary for success. Please plan your course load accordingly.

Midterm and final exams

Each exam will focus on the most recent material. However, each exam will very likely include some questions aimed at the material covered by the earlier exam(s). Make-up tests may only be given if there is a written proof of a serious reason for missing a test (such as illness or accident).
Important: you must earn at least 60% on the final exam to pass this course.

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 and the corresponding reading materials. 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 for no more than 50% of credit.

Course project must be completed by students working in teams of two. 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.

Attendance

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 completely responsible for the make-up process.

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 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 the faculty.

Other statements

Here's a link to a document containing information about other policies and resources.

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.

To pass this course with a grade of C- or higher, you must pass the final exam with a 60% or higher AND earn an overall course average of 70% or higher. Note that if your final exam score is below 60%, then the highest final grade you can earn is a D+, regardless of the overall course average.

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

Labs (10 labs @ 2 pts each) 20
Course project 15
Test 1 20
Test 2 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