CSC209: Software Tools and System Programming
Lectures
Tuesdays 19-21 (IB 345)
Office hours
Thursdays 12-13 (Zoom)
By appointment (DH 3097D)
description
curriculum
team
About the course

Software tools and development in a Unix/Linux environment, using a machine-oriented programming language (typically C). Core topics: software tools (shell utilities and make), processes and program execution, the memory model, system calls, file processing, interprocess communication (pipes and signals), and an introduction to concurrency, including multithreading.

Prerequisites
  • Software Design (CSC207)
Discussion board

We will use Piazza for announcements/Q&A. Important announcements are only made on Piazza, so it is essential for you to regularly check Piazza or ensure that your email preferences is such that you receive them through email. There is also a Discord server that is only meant for informal discussion between the students and TAs; joining it is optional and official announcement will not be posted there.

Textbooks and other materials

Videos and required exercises to be completed before each class are hosted on PCRS. Additionally, you may find it useful to have good C and syscall references handy. Recommended (but optional) readings are as follows:

  • King. C Programming: A Modern Approach. W. W. Norton and Company, 2008.
  • Kerrisk. The Linux Programming Interface. No Starch Press, 2010.
Assessment
Weekly prep

Research consistently shows us that students remember only a small fraction of what we present in lecture. It is not easy to make sense of material that you see for the first time in the first half-hour of a fast-paced lecture environment, let alone to stay focused for 2 hours. It is also important to space out your studying (spaced repetition). To prime you for what we will discuss, you will view a set of videos and complete exercises by Tuesday at 6:00pm (one hour before the lectures). In some weeks, the videos will be supplemented or replaced by recommended readings and an activity.. These are the Preparation exercises hosted on PCRS


Assignments

There are three assignments. They must be submitted electronically through Markus git repository. Grading will be done by an automated testing program, so you must follow the submission instructions exactly. Any program that does not compile on a CS lab machine or that crashes (e.g., seg fault or bus error) will receive a grade of 0. Check your submission carefully; verify that you have submitted exactly the files you intended to submit and that they compile on a lab machine.


Midterm and final exam

There is one midterm. It will take place on Tuesday, July 5th at 19:00 (during the lecture).

The final exam is comprehensive and takes place after classes are over. To pass the course, you must receive at least 40% on the final exam. The highest mark you will receive if your grade on the final exam is less than 40% is 47%. The final exam schedule is not yet available but will be posted later in the term. We will make an announcement once the registrar’s site has final exam information.

Both exams are paper-based. More information will be posted on Piazza prior to the exam dates.


Grading breakdown
  • Assignment 1: 10%
  • Assignment 2: 10%
  • Assignment 3: 10%
  • Weekly prep: 10%
  • Midterm: 20%
  • Final exam: 40%
Late submissions

We recognize that unexpected problems sometimes make it difficult to submit assignments on time. For this reason, we will be using grace tokens to give you some flexibility with assignment deadlines. Each student will receive 18 grace tokens; each grace token can be used for a four-hour extension for an assignment. For example, you may choose to use all 18 grace tokens on A1, extending its deadline by 72 hours. Alternatively, you may wish to use nine tokens for each of A1 and A2 (and none on A3), extending each deadline by 36 hours.

MarkUs automatically deducts grace tokens when you submit an assignment late. That is, you do not need to explicitly say you are using a grace token, just submit your work within the grace token four-hour periods.

Aside that policy, no late submissions are accepted. If you used up all your grace tokens, or you want to save them for another assignment, you should hand in a working (and tested) version of a program that accomplishes a subset of the requirements. This will be easy to do if you have written and debugged a series of programs that accomplish more and more of the assigned problem.

Note that the grace token policy only applies to assignments. Therefore, weekly prep exercises do not have grace tokens or late submissions.

Remark Policy

If you feel there was an error in the marking of an assignment, you may request a remark directly on Markus. You must give a specific reason for the request, referring to a possible error or omission by the marker. Stating specific potential grading errors for your remark request is mandatory for us to even consider your request. However, we will review your entire work, not just the items you pointed out. Please keep in mind that your grade may stay the same, may increase, or may even decrease, after your remark request is assessed. Remark requests must be received within three days of when you received the grade for that item.

Missed Term Work

To request special consideration, bring supporting documentation to the instructor in person during office hours at least one week in advance.

In the event of an illness or other catastrophe, please contact me and provide supporting documentation within one week of the missed work. You must also declare your absence on Acorn. Do not wait until the due date has passed. It is always easier to make alternate arrangements before the due date.

Missed final exam

Students who cannot complete their final examination due to illness or other serious causes must file an online petition within 72 hours of the missed examination. Late petitions will not be considered. Students must also record their absence on Acorn on the day of the missed exam or by the day after at the latest. Upon approval of a deferred exam request, a non-refundable fee of $70 is required for each examination approved.

Academic Integrity

Honesty and fairness are fundamental to the University of Toronto’s mission. Plagiarism is a form of academic fraud and is treated very seriously. You are also expected to read the handout How not to plagiarize and to be familiar with the Code of behaviour on academic matters, which is linked from the UTM calendar under the link Codes and policies.


Assignments are individual work which means that you will not be allowed to seek advice from other students or copy/paste someone else's code, even open source codes from the internet. However, you are allowed to look at online resources, tutorials, and Q&A websites over the course of solving the problems. The entire code must be written by yourself.