CSC 357: Systems Programming

CSC 357: Systems Programming



Instructor

Gene Fisher (gfisher@calpoly.edu)
Office: 14-210
Office Hours: MWF 2-3PM, Th 9-11AM, and by appointment

Course Objectives


Prerequisites

CSC/CPE 103 and CPE 229 (or equivalents).

Text and Other Class Materials

The textbooks are:

The course website is http://www.csc.calpoly.edu/~gfisher/classes/357

There is a variety of material on the site, organized into the following directories:


Graded Work

The graded work for the class is subdivided into the following categories, with the value of each category shown as a percentage of the overall class grade:

Programs must compile to receive any credit. I.e., non-compiling programs will receive a score of zero.

Programs must be fully documented in order to receive full credit. In particular, an entirely undocumented program will receive at most 65% credit. Per the grading scale given below, that's a "D" grade. Detailed conventions for documentation and coding standards are online in the class handouts directory. Additional specific scoring details will be provided for each assignment.

In general, the work in the labs and problems sets will involve reasonably small programs, and answers to analytic questions. Work on the programming assignments will involve programs of significant size, measured in hundreds of lines of code.

The course grading scale is based on absolute percentages of points received. 90% or above is guaranteed an A (or A-) in the class; 80% a B, 70% a C, and 60% a D. Depending on overall class performance, the scale may be lowered, but it will never be raised.

If you find a problem with the grading on an assignment, you must submit it for re-grading within ten days of when it was handed back. Grades will be posted on the class website. Be sure to check what is posted to make sure it agrees with your records.

Where and When to Turn in Assignments

All of the programs and almost all of the labs/problem sets will be submitted electronically, using the handin program on the CS department UNIX machines, falcon/hornet. There may be a problem set or two that involves forms of drawing that would be inconvenient to submit electronically. Those parts of the problems will be submitted on paper. Submission details will be given for each assignment.

Late Policy

Assignments must be turned in ON TIME to receive credit. Late assignments will not be accepted. If you cannot get a program working by the due date, be sure to hand in what ever you have in order to get partial credit. Scoring details for partially-executing programs will be provided for each assignment. Note again, programs that do not compile will receive a score of zero, however much code you may have written.

Collaboration and Cheating

Some lab work may be done with a partner. Where explicitly stated in the lab writeup, partners may submit the same work.

All programs must be done individually. It is OK to discuss general principles and ideas with colleagues, but the programming assignments are not to be done in groups, or with your lab partner.

Use of anyone's solutions other than your own is considered cheating. This includes solutions from previous offerings of this or any other course, solutions you may find online, or solutions you get from any source other than your own brain.

Any instance of cheating or plagiarism will be referred to the campus office of judicial affairs. Campus cheating policies are defined online at


http://www.calpoly.edu/~saffairs/ja

Any documentable instance of cheating will result in failure of the course.

Computer Accounts

Most, if not all, members of the class will already have accounts on the CSC department machines falcon and hornet. The C compiler and other tools used in 357 all run on these machines. If you do not have an account, please let me know on the first day of class so you can be assigned one.

NOTE WELL: If you use a home compiler to develop your programs, YOU MUST verify that the program compiles and runs on falcon/hornet before you hand it in. When you submit programs, they will be compiled and executed by a script that runs on falcon/hornet. You are responsible to ensure that your programs run the same on falcon/hornet as they do on any other computers you may use to develop the programs.

Course Topic Due-Date Schedule

WEEK TOPIC ASSIGNMENT DUE
1 Introduction to the course
Introduction to C and UNIX
Function Declarations versus Definitions
Pointers and Arrays in C
2 C Program Structure
Pointers and Structs
Dynamic Memory Management
Lab 1, Prog 1
3 Details of Pointers, Arrays, and Structs
Additional C Language and Library Features
Lab 2, Prog 2
4 Unbuffered File I/O
UNIX Files and Directories
Lab 3
5 More on Files and Directories
Function Pointers in C
Standard I/O Library
System Data Files and Information
Prog 3
6 Introduction to UNIX Processes and Process Control
Midterm (Monday)
Lab 4, Prog 4
7 Processes and Process Control, cont'd Lab 5
8 Introduction to Signals and Pipes Lab 6, Prog 5
9 Memorial day holiday (Monday)
Additional Pipe and Signal Topics
Shells
Lab 7
10
Introduction to threads
Final exam review
Lab 8, Prog 6


The final exam is Tuesday 12 June 1:10-4PM for the afternoon section, or Wednesday 13 June 10:10AM-1PM for the morning section.



index | lectures | labs | programs | handouts | solutions | examples | documentation | bin