Introduction
Announcements

Schedule
Labs
Assignments
TA office hours

Tests, exam

Topic videos
Some course notes
Extra problems
Lecture recordings

Discussion board

Grades so far

CSC 209: Software Tools and Systems Programming

University of Toronto, Summer 2022

Lecturer:

Alan J Rosenthal
[e-mail address removed from web page to avoid harvesting by spammers -- you can guess it from the URL]
BA 3218

Classes:

Tuesdays, 18:10-21:00, starting May 10, except for the June break.
We will start with a lecture in BA 1170 at 18:10.
Some time between about 19:00 and 20:00 (varying weekly) we will go up to the labs for hands-on problems, as follows: surname A-G in BA 2200; surname H-R in BA 3185; surname N-Z in BA 3195.

Lecturer office hours (during the term):

Tuesdays, 17:00-17:50, in BA 3218, or by appointment. See announcement regarding modified schedule for June 14. Virtual office hours Fridays, from 11:30, Zoom meeting ID 854 2453 8460, password in /u/csc209h/summer/pub/zoom or available by e-mail.

My office hours won't be held during the mid-term break (June 21 through July 1).


Recommended textbooks:

About the C programming language: A lot of people like K.N. King, C Programming: A Modern Approach, W.W. Norton, 1996 or 2008. The canonical reference is Kernighan & Ritchie, The C Programming Language, second edition, Prentice-Hall, 1988.

About unix system programming: K. Haviland, D. Gray, and B. Salama, Unix System Programming, second edition, Pearson Ed. / Addison-Wesley, 1998. OR: M. Kerrisk, The Linux Programming Interface, No Starch Press, 2010.

A book about C is probably more important than a book about unix. You might not necessarily want to buy the Haviland et al. or Kerrisk books (or any book) as they do not cover the entire course. There is a document about various textbooks on the course web page.


Course topics:

The "software tools" model and unix philosophy, i/o redirection, some shell programming, the unix filesystem, the C programming language (syntax, datatypes, storage model), unix processes, the operating system interface, interprocess communication and network communication, introduction to concurrency, introduction to unix and internet security.


Important prerequisite note:

This course has a prerequisite of CSC 207. This prerequisite is your responsibility. If you do not have the prerequisites and you do not receive special permission to take the course, you will be removed from the course at some future time when the undergraduate office does their checks.


Grading scheme:

Assignment 1:8%due Monday June 6 (midnight)
Mid-term test:15%Tuesday June 14, 18:10-19:00, different room (TBA)
Assignment 2:10%due Monday July 11
Assignment 3:10%due Monday August 1
Assignment 4:5%due Monday August 15
Weekly labs:12%best 12 out of 13 — attendance required
Final exam:40%as scheduled during the August exam period

To pass the course you must receive at least 35% (out of a hundred that is) on the final exam.

Lab and assignment submission instructions are included on the lab and assignment handouts.

Late assignments will only be accepted under exceptional circumstances and with a written explanation sent separately by e-mail. To submit an assignment late, submit it in the usual way and then send the lecturer an e-mail message or bring him a note.

Any disagreements with the grade assigned to an assignment or the midterm should be submitted to the lecturer, preferably by e-mail, normally within about a week of its return.


Discussion board

There is a discussion board at https://bb-2022-05.teach.cs.toronto.edu/c/csc209 which you are encouraged to use to communicate with other students in this course.

Any test messages must instead be posted to https://bb-2022-05.teach.cs.toronto.edu/c/csc209test


Serious academic offence warning!

Your work in this course which is submitted for course credit must be your own. Representing someone else's creative work as your own is an academic offence. There are a number of rules which you must follow to avoid prosecution.

Assignments and lab exercises in this course are individual, so submitting anything which comes from others is an academic offence unless specifically and precisely acknowledged. It is also an offence to assist others in committing an academic offence.

For example, you may not:

I suggest limiting your collaboration with others to material not to be submitted for course credit, and asking more-specific assignment or lab questions of me or a TA. Students have been prosecuted and convicted for handing in work written for hire, written by personal tutors, copied from the web, or with just a bit too much text borrowed from a friend. It is not difficult for graders to detect excessive collaboration.