Systems Programming
C on Google Cloud | CS 355 - Fall 2020
Catalog description:
Prerequisites: C- or better in both CS 253 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.
Logistics
Instructor | Dr. Stan Kurkovsky, Professor of Computer Science |
Office | MS 303-06 |
Phone | (860) 832-2720 |
kurkovsky@ccsu.edu | |
Office hours | TWR 1000-1140, booking info TBA |
Class meetings | MW 1215-1330 @ WebEx/online |
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:
- Understand the role of systems programming in bridging the hardware/software interface;
- Apply appropriate knowledge of computing to solve systems programming problems (SO-1);
- Design and implement an integrated hardware/software system that meets a well-defined set of specifications;
- Function effectively as a team member working on a software development project (SO-4);
- Produce and present software projects specifications, design, and other software project artifacts (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 current pandemic and economic crisis. Some of you may be essential workers or live with essential workers. If you or someone you love gets sick or needs to work; if you have childcare or elder care responsibilities; if any essential technology such as wifi/power/laptop/etc is down, take care of those things first. 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. We can meet individually most any time on WebEx. I will work with you to make arrangements that would enable you to stay on top of things without jeopardizing your academic standing and other responsibilities. As long as you complete assignments and keep in touch with me, we will all be good here.
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: August 26 - August 28
- 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: August 31 - September 4
- Topic: C programming review (KR Ch. 2),
Data types
Operators
Expressions - Topic: Control flow (KR Ch. 3),
Conditions
Loops
Lab 1 intro: Conditions
Week 3: September 7 - September 11
- September 7 - Labor Day
- Topic: Functions (KR Ch. 4)
Parameters
Scope
Blocks
Lab 2 intro: Loops and functions
Week 4: September 14 - September 18
- Topic: Pointers and Arrays (KR Ch. 5)
Memory addresses
Arrays
Command-line arguments - Lab 3 intro: Command line programming and strings
Week 5: September 21 - September 25
- 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 4 intro: who
Week 6: September 28 - October 2
- Topic: How to copy a file (Molay Ch. 2.6-2.8)
Writing cp
Buffering - Lab 5 intro: cat
Week 7: October 5 - October 9
- Topic: Files and directories (Molay Ch. 3.1-3.5)
File system tree
Directory structure - Lab 6 intro: ls v.1
Week 8: October 12 - October 16
- Midterm review
- Midterm exam
Week 9: October 19 - October 23
- Topic: File properties (Molay Ch. 3.6-3.9)
ls -l and stat
File mode and bitmasks
- Lab 7 intro: ls v.2
Week 10: October 26 - October 30
- Topic: File systems (Molay Ch. 4)
HDD structure
inode-based file systems
Trees of directories - Lab 8 intro: find
Week 11: November 2 - November 6
- Topic: Connection control (Molay Ch. 5)
Devices vs files
Disk and terminal connections
Terminal drivers - Course project intro
Lab 9 intro: write
Week 12: November 9 - November 13
- Topic: Terminal control and signals (Molay Ch. 6)
Terminal modes
Signal handling - Course project discussion
Lab 10 intro: prime
Week 13: November 16 - November 20
- Topic: Event-driven programming (Molay Ch. 7.1-7.6)
OS-level support for games
The curses library
Alarms and timers - Lab 11 intro: matrix
Week 14: November 23 - November 27
- Topic: Video game programming (Molay Ch. 7.7-7.12)
Handling multiple signals
Using timers and signals - November 26-29 - Thanksgiving Recess
Week 15: November 30 - December 4
- Final exam review
Week 16: December 7
- Course project: demo
Week of final exams
- Final exam: Monday, December 14, 1030-1230
Online activities
Students are required participate in all course content items listed as "Topic" and "Lab intro" in the course schedule above. These will be conducted synchronously online. Each course topic will be presented through a live coding session, which will include an opportunity for students to discuss the presented material with the instructor and ask questions. All lab introductions will contain a detailed explanation of the lab requirements, demonstration and discussion of possible test cases, as well as discussion of any code scaffolding.
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 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 and the corresponding reading materials. Students are required to work on labs individually. Each lab must be submitted using BlackBoard following the instructions specific to each lab. Late submissions will be accepted with a penalty of 10% per day.
Course project must be completed by students working in teams of two and submitted using Blackboard in two separate increments.
Academic conduct
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.
The final course grade will be calculated according to the following distribution of points:
Labs (11 labs @ 4 pts each) | 44 |
Course project | 20 |
Midterm | 20 |
Final exam | 20 |
Total (incl. 4 bonus pts) | 104 |
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 |