CS222: Systems Programming -- Spring 2008
Instructor
William Claycomb
Office... Cramer 210A
Office hours... Tue/Thu 3:00 PM - 4:00 PM
Email... billc@cs.nmt.edu, Phone... 505-363-5804
Teaching Assistant
Suryateja Vemulapallit (Teja)
Office... Cramer 222
Office hours... Mon 2:00 PM - 4:00 PM, Wed 2:00 PM - 3:00 PM
Email... tejav@nmt.edu, Phone... 816-377-9495
Date and Location
Tue/Thu 4:00 PM - 5:15 PM (Cramer 239)
Description
This course provides an introductory overview of operating systems and system programming, mainly focusing on system-level programming based on OS services and other APIs. Topics include system calls, file I/O, files and directories, memory management, process control, inter-process communication (IPC), socket-based network programming, remote procedure call (RPC) programming, and basic security mechanisms. Course works include homework assignments, two exams, and a final project. Prerequisite: CS221.
Objectives
On completion of this course, students will
- be able to understand fundamentals of operating system concepts and system calls,
- be able to have practical experience of applying those fundamental concepts into program development, and
- have the ability to develop programs based on Windows/POSIX-compliant system call APIs.
Topics
Textbooks
Required
- Windows System Programming (ISBN 0321256190), 3/e, by Johnson M. Hart
Recommended
- Operating Systems (ISBN 0131246968), 3/e, by H. M. Dietel et al.
- Linux Programming by Examples: The Fundamentals (ISBN 0131429647), 1/e, by Arnold Robbins
- Advanced Programming in the Unix Environment (ISBN 0201433079), 2/e, by W. Richard Stevens
Online Resources
Development Tools
- VMWare Player (free)
- VMWare Server (free)
- Microsoft Visual C++ Express (free)
- Service Install Utility
Development Resources
CS222 VMWare Image
- Please see instructor
Online books, Lecture notes, technical reports, Other Links
- The C Book (online version)
- Programming in C: Unix System Calls and Subroutines using C
- C Standard Library Reference
- Microsoft Developer Network (MSDN) Homepage
- Microsoft News Group
- Windows Kernel Mode Fundamentals
- The Linux Development Platform
- The Art of Unix Programming
- Unix System Programming
- Secure Programming for Linux and Unix HOWTO by David A. Wheeler
Grading Policy
- Midterm and Final exams (30%)
- Quizzes (10%)
- Homework and Programming Assignments (30%)
- Final project (30%)
- A: 93 ~ 100, A-: 90 ~ 92
- B+ : 87 ~ 89, B: 83 ~ 86, B-: 80 ~ 82
- C+ : 77 ~ 79, C: 73 ~ 76, C-: 70 ~ 72
- D+ : 67 ~ 69, D: 60 ~ 66
- F: 59 and less
Important Dates
| First Day of Classes: | January 22nd, 2008 |
| Midterm Exam: | March 6th, 2008 |
| Spring Break (No Class): | March 11th and 13th, 2008 |
| Project Due: | May 9th, 2008 |
| Last Day of Classes: | May 8th, 2008 |
| Final Exam: | May 9th, 2008 |
Academic Honesty
Students' responsibility is to have the full knowledge of New Mexico Tech's Academic Honesty Policy (click here). It strongly forbids Academic Dishonesty defined as follows: "cheating: the use of unauthorized material during a test, or the act of copying from another student; plagiarism: the unauthorized use or use without proper citation of either someone's published work, unpublished material in someone else's computer files or material derived from the Internet; theft: any form of unauthorized procurement of academic documents, e.g., exams, student reports; falsification: any form of illegal alteration of academic documents for any purpose including improper alteration of experimental data obtained in the laboratory; impersonation: the act of permitting another person to substitute for oneself at an examination; obstruction: interference with or sabotage of the work of any other person through vandalism or theft; assistance: the act of helping another to commit fraud in any of the above-mentioned ways." I will not tolerate any type of incidents and works involving academic dishonesty, and I will take action appropriate to their severity.




