CS 375 - Unix System Programming
Class Schedule: MWF 3, KC-267
Grades for this course will be posted
Due to COVID-19, all student meetings will be conducted one-on-one via
Zoom. See instructor's homepage for times set aside for office hour
appointments. Make an appointment online at
at least one hour in advance. Email for availability at
There is no final exam in this course. The Final Project is due no
later than 11:59 on Monday, November 3 (Reading/Study Day).
These are announcements made in class or via email currently in effect
for this course.
Friday, November 13, Re: Grading weights
Due to the cancellation of the take-home exam, the following weighting will determine the final grade in this class. The A/B grade line is anticipated to be around 85% with the D/F line at around 50%.
|75%||Programming projects (weighted as indicated on the assignment)|
|20%||Final programming project|
|5%||In-class and homework assignments (weighted as indicated on the assignment)|
Wednesday, November 4, Re: Schedule for rest of term
- Friday, November 6: Project workday, no class
- Monday, November 9: GTK
- Wednesday, November 11: GTK
- Friday, November 13: GTK
There will be no classes after November 13. Class time will be
available for office hours appointments via Zoom made on Calendly. The
final project will go out November 11 and will be due on the last day
of class, November 25. Nothing will be due after classes end.
Projects that earned fewer than half the available points or that
were not submitted may be (re)submitted for up to half credit until
the last day of class, November 25, via email to the instructor.
- Syllabus and Schedule
(PDF) - Fixed inconsistencies: exam is take-home and final project is due on Reading/Study Day
- Reading and video
references. Some are assigned as needed.
- All assignments will be submitted via the Submission System. The username for this class is your ACENET account followed by “-cs375”. E.g., dh27-cs375. The initial password is your student ID number (starting with 0).
Course software: All assignment for this class must be completed under Ubuntu 16.04LTS or newer.
- VirtualBox, a virtual
machine that can be used to run Linux on Windows. Note that
hardware virualization must be enabled in the BIOS of the host
machine. (In particular, HP machines have this disabled by
- 64-bit Ubuntu 18.04LTS VDI.
This file is a ZIP archive of a virtual disk image for VirtualBox
set up similarly to the UE Linux lab client and instructions on
how to create a VirtualBox VM from it.
- Create a new folder (e.g.
- Download/open this zipfile and extract files
virtual-box-instructions-2019-08.pdf) into the
new folder. Note that this zipfile is 3GB. The
extracted VDI file is 8GB and will grow larger as the
system is used to a maximum of 64GB.
- Follow the instructions to create a VirtualBox VM
- Install the g++ and make packages:
$ sudo apt install g++ make
Desktop install disk ISO image can be downloaded, if you need
to start from scratch (e.g., you have a 32-bit machine) and/or
want use the latest Ubuntu version (currently 20.04LTS). Here is a
Guide. Note that the ISO image must be burned to a DVD or a
bootable USB stick to install natively. For a VirtualBox
installation, only the image file is needed.
Once the installation is completed, do the following:
- Run system updates. The easiest way to do this is from a
terminal command line, type:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt autoremove
- Install the following packages: clang, g++, ssh, make,
emacs and/or vim. Other packages will be installed as the
course progresses. The easiest way to do this is from a
terminal command line, type:
$ sudo apt install <list of packages>
- Click on the Devices menu, then on Insert Guest Additions
CD image... Run the CD program. This will allow the VM to run
in full screen mode.
- Reboot the VM
This is a list of documents posted for this class in reverse
chronological order. Some will be available in hard copy as well.
- Friday, November 13
- Lecture 34 (Slides)
- Final Project (PDF) - Due: Wednesday, November 25, late work will be accepted until Tuesday, December 1
- Wednesday, November 11
- Monday, November 9
- Wednesday, November 4
- Monday, November 2
- Lecture 29 (Slides)
- Project 5 (PDF) - Due: Wednesday, November 11
- Friday, October 28
- Monday, October 26
- Friday, October 23
- Lecture 25 (Slides)
- Extra credit assignment (15 project points) : Write a second version of Project4 that uses POSIX shared memory, POSIX (named) semaphores, a POSIX message queue, and a named pipe instead of the Sys V IPC routines and an unnamed pipe. - Due: Friday, October 30, submit separately from Project 4 under "07 - PRJ4EC"
- Wednesday, October 21
- Monday, October 19
- Friday, October 16
- Lecture 22 (Slides)
- Project 4 (PDF) - Due: Wednesday, October 28
- Wednesday, October 14
- Monday, October 12
- Friday, October 9
- Friday, October 2
- Wednesday, September 30
- Monday, September 28
- Wednesday, September 23
- Monday, September 21
- Friday, September 18
- Wednesday, September 16
- Lecture 10 (Slides)
- Project 2
Wednesday, September 23 extended to
Friday, September 25, by 11:59pm via the submission
- Monday, September 14
- Friday, September 11
- Wednesday, September 9
- Monday, September 7
- Lecture 6 (Slides)
- Project 1 (PDF)
- Due: Wednesday, September 16, by 11:59pm via
the submission system
- Friday, September 4
- Wednesday, September 2
- Monday, August 31
- Lecture 3 (Slides)
- Homework 2 (PDF) - Due: Monday, September 7, by 11:59pm via the submission system
- Friday, August 28
- Lecture 2 (Slides)
- Homework 1 (PDF) - Due: Wednesday, September 2, by 11:59pm via the submission system
- Wednesday, August 26