Introduction to Systems Programming
2007/08 Catalog description
Prerequisites: CS 153 and 254. Introduction to the design of systems software. Topics include comparative machine organizations, the design of assemblers and loaders, an introduction to operating systems and an introduction to compiler design.
Logistics
- Instructor
- Dr. Stan Kurkovsky, Associate Professor of Computer Science
- Office
- MS 303-08
- Phone
- (860) 832-2720
- Fax
- (860) 832-2712
- kurkovskysta@ccsu.edu
- Office hours
- MW 4:00 pm - 5:15 pm, TR 9:00 am - 9:30 am, R 10:45 am - 12:15 pm or by appointment
- Class meetings
- MW 6:45 pm - 8:00 pm @ MS 101
Textbook and other reference materials
- Understanding Unix/Linux Programming: A Guide to Theory and Practice, by Bruce Molay. Prentice Hall, 2003, ISBN 0130083968
- Access to a Linux computer
- In-class handouts
- Companion web site available at http://www.prenhall.com/molay
- Instructor's web site available at http://www.cs.ccsu.edu/~stan/ and other web sites recommended by the instructor
- Blackboard Vista will be used to turn in all assignments
- Linux notes
- Labs and projects
Course objectives
Upon a successful completion of this course the students should be able to:
- Understand the main ideas and principles of systems programming;
- Design system-level code for open-source operating systems;
- Understand the basic principles of Unix system calls, file system and IO.
Tentative schedule
Reference: M - Molay, Understanding Unix/Linux Programming: A Guide to Theory and Practice
Week 1: September 4 - September 7
- Lecture: Introduction; course overview and objectives.
Reading: none
Week 2: September 10 - September 14
- Lectures: Unix Systems Programming: The Big Picture
Reading: M 1
Week 3: September 17 - September 21
- Lecture: Users, Files, and the Manual: Who Is First
Reading: M 2 - Lab 1
Week 4: September 24 - September 28
- Project 1
Week 5: October 1 - October 5
- Lecture: Directories and File Properties: Looking
through ls
Reading: M 3 - Lab 2
Week 6: October 8 - October 12
- Project 2
Week 7: October 15 - October 19
- Lecture: Focus on File Systems: Writing pwd
Reading: M 4 - Lab 3
Week 8: October 22 - October 26
- Midterm
- Project 3
Week 9: October 29 - November 2
- Project 3 (continued)
- October 30 - Last day to withdraw from full-semester courses without approval
- Lecture: Connection Control: Studying stty
Reading: M 5
Week 10: November 5 - November 9
- Lab 4
- Project 4
Week 11: November 12 - November 16
- Lecture: Programming for Humans: Terminal Control and
Signals
Reading: M 6 - Lab 5
Week 12: November 19 - November 23
- Lecture:
Event-Driven Programming: Writing a Video Game
Reading: M 7 - November 21 - 25: Thanksgiving Recess - No Classes
Week 13: November 26 - November 30
- Project 5
- Lecture: Processes and Programs: Studying sh
Reading: M 8
Week 14: December 3 - December 7
- Lab 6
- Lecture: A Programmable Shell: Shell Variables and the
Environment
Reading: M 9
Week 15: December 10 - December 13
- Lab 7
Final: December 17
- Final exam: December 17 @ 8:30 pm - 10:30 pm
Linux
Students are required to have access to a Linux computer in order to fulfill all requirements of this course. Knoppix is a Linux distribution that does not require a physical installation on the target system - you can boot straight off a CD. Knoppix 5.1.1 is the latest available version, which is strongly recommended for this course; a corresponding CD image can be downloaded from one of many mirror servers, BitTorrent or eMule (please be sure to download an English version). Many computers on CCSU campus (including those in MS 314) can boot off these CDs.
Helpful introductory notes by Mike Graff
Midterms
Midterms are non-cumulative and are designed as elemental evaluation devices and to prompt the student to stay abreast of assigned topics. Each test will take 50 minutes. 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).
Questions on a test may include:
- True/false questions,
- Multiple choice questions,
- Fill in the blank questions,
- Short answer questions.
Final exam
Final exam is a cumulative objective test of representative content of the entire semester's course offerings.
Labs and lab projects
During the labs students will work on hands-on problems focusing on the material covered in class lectures and reading assignments. Students can work on lab assignments individually or in teams of two. Deliverable for each lab is due no later than two weeks after the lab date.
Honesty policy
It is expected that all students will conduct themselves in an honest manner (see the CCSU Student Handbook), and never turn in any work which is not their own. Violating this policy will result in a substantial grade penalty, and could result in expulsion from the University. However, students are allowed to discuss assignments with others and receive debugging help from others.
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 totally responsible for the make-up process.
Help with computers
The University offers some student assistants who may be of value in helping students with basic computer functionality only, not with program writing.
Students with disabilities
Any student who feels s/he may need an accommodation based on the impact of a disability should contact me privately to discuss your specific needs. I will need a copy of the accommodation letter from Student Disability Services in order to arrange your class accommodations. Contact Student Disability Services, Room 241, Copernicus Hall, 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 your faculty.
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, 7 @ 4 points each | 28 |
| Projects, 5 @ 7 points each | 35 |
| Midterm | 15 |
| Final exam | 15 |
| Class participation | 7 |
| Total | 100 |
Course letter grade will be determined as follows:
| A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
| 95-100 | 90-94 | 87-89 | 84-86 | 80-83 | 77-79 | 74-76 | 70-73 | 67-69 | 64-66 | 60-63 | 0-59 |