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

Date Topic Assignment Due Notes
1/22 Introduction Syllabus
1/24 The Basics Book Source Code
1/29 File System and Character I/O See "Online Resources" below for helpful info
1/31 File System and Character I/O part 2
2/5 Advanced File and Directory Processing I Homework 1
2/7 Advanced File and Directory Processing part 2 Source Code for SetEndOfFile Example
2/12 Windows Registry and Exception Handling
2/14 Exception/Error Handling part 2 Homework 2 Homework 1
2/19 Memory Management I
2/21 Memory Management II
2/26 Memory Management III Homework 3 Homework 2
2/28 Process Management I
3/4 Process Management I and Midterm Review Homework 3
3/6 MidTerm 2007 Midterm
3/11 Spring Break (No Class)
3/13 Spring Break (No Class) Grades
3/18 Midterm Discussion and Thread Introduction 2008 Midterm Key
3/20 Threads Semester Project
3/25 Threads II Homework 4 Grades
3/27 Threads and Scheduling
4/1 Thread Synchronization I Homework 4
4/3 Thread Synchronization II
4/8 Interprocess Communication
4/10 Network Programming Basics Homework 5 Quiz 3 answer key
4/15 Network Programming with Sockets Sample Code on Sockets and Endianness
4/17 Windows Services Quiz 4 answer key Grades
4/22 Securing Windows Objects Homework 5 Quiz 5 answer key
4/24 Securing Windows Objects Grades
4/29 HTTP and HTML WinHTTP Sample Code
5/1 HTTP and HTML Windows Service Sample Code
5/6 Final Exam Review Grades
5/8 Final Exam - 4:00 pm - Cramer 239 Final Project due 5/8/08 before midnight 2007 Final Exam Key
5/9 Final Project Demonstrations Final Grades

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

Grading Policy

  • Midterm and Final exams (30%)
  • Quizzes (10%)
  • Homework and Programming Assignments (30%)
  • Final project (30%)
Note
Both homework and final project are programming assignments, and they must be done individually. No late submission will be accepted (both homework and final project must be submitted before the class on due date). The final exam will be comprehensive. Your letter grades will be given based on the following scale.
  • 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.