Systems Programming
Spring 2007

Latest News | Course Description | Lecture Slides | Assignments | Grades  | Forum | Execises | Resources

Latest News

[ 2007 / 06 / 23 ]    Info. about the final exam (in-class & close-book):

                             Place:  R101, R102, and R103

                             Time:   9:10 am ~ 12:00 am

                             Scope: Chapters 6, 8, 10.1~10.14, 15.1~15.5

[ 2007 / 06 / 12 ]    Lecture 8 (Ch10 & partial Ch15) is updated.

[ 2007 / 06 / 05 ]    Lecture 8 (Ch10 & partial Ch15) is posted. Assignment 4 is announced.

[ 2007 / 05 / 22 ]    Lecture 7 (Ch8) is updated. Lecture 8 (Ch6) is posted.

[ 2007 / 05 / 15 ]    Lecture 7 (Ch8) is updated. Assignment 3 is announced.

[ 2007 / 05 / 08 ]    Midterm exam (in-class & close-book)

[ 2007 / 05 / 01 ]    Lecture 7 (Ch8) is posted.

[ 2007 / 04 / 23 ]    Lecture 6 (Ch7) is posted.

[ 2007 / 04 / 10 ]    Lecture 5 (Ch4) is posted and Assignment 2 is announced.

[ 2007 / 03 / 27 ]    Lecture 4 (Ch5) is posted and Lecture 3 is updated.

[ 2007 / 03 / 20 ]    Assignment 1 is announced.

[ 2007 / 03 / 13 ]    Lecture 3 (Ch3) is posted and Lecture 2 is updated.

[ 2007 / 03 / 08 ]    Lecture 2 (Ch1 & Ch2) is posted and Lecture 1 is updated.

                                Announce the forum.

[ 2007 / 02 / 27 ]    Lecture 1 (overview) is posted.

Course Description

This course is designed for sophomore CS-major students and serves as the introduction system-level course. In this course, students will learn how to write the programs using system services in Unix-like systems. The following are the goals of this course.

1.      To be familiar with the UNIX-like systems.

It means to know how to make use of many tools/services provided by the system: commands, library calls or system calls. It also means that you understand the model of computation that Unix presents.

2. To become good system programmers.

It means that you should know how to write a descent C program in Unix/Linux as the semester is over. However, this course should not limit yourself in writing system programs in Unix/Linux. The learning process that you will have in this course should teach you how to program in any other operating systems which you might use later in your career.

At the end of the semester, you may want to go through this list again to see if the goals are met. We will appreciate if you could provide us your comments regarding the class at the end of the semester. (Well, you can send us your comments at any time. However, I guess that it is more reasonable to review the class at the end of the semester.)

Instructor

Pu-Jen Cheng (Room 323)

E-mail: pjcheng@csie.ntu.edu.tw; Homepage: http://www.csie.ntu.edu.tw/~pjcheng/

Office hours: 9:00 am~12:00 am, Friday

Class Hours: 9:10 am~12:10 pm, Tuesday

Classroom: CSIE Room 101

TA: Chun-Yuan Teng (edwinteng@gmail.com), Ming-Feng Tsai (mftsai@nlg.csie.ntu.edu.tw)

Prerequisites: Data structure and basic C/C++ programming

Website:  http://www.csie.ntu.edu.tw/~pjcheng/course/sp2007/

The site includes slides and the links to program assignments, forum, and free exercises.

Textbook

Advanced Programming in the Unix Environment, 2nd Edition, by W. Richard Stevens and Steven A Rago,

Addison-Wesley, 2005.

The source codes of the examples in the text book: http://www.kohala.com/start/apue.tar.Z

References

1.       Managing Projects with make, 2nd Edition, by  Andrew Oram and Steve Talbott, 1991.

2.      The Art of UNIX Programming, by Eric S. Raymond.

Grading (tentative)

1.      Midterm exam (35%)

2.      Final exam (35%)

3.      Assignments (30%)

Note that unless otherwise specified, all the assignments are individual assignments. Each student must submit his/her own assignments.

Course Outline

  1. Course Overview
  2. Introduction and Unix Standardization
  3. File input and output
  4. Standard I/O Library
  5. Files and Directories
  6. System Data Files and Information
  7. Environment of a Unix Process
  8. Process Control
  9. Process Relationships
  10. Signals
  11. Inter-process Communication
  12. Advanced Topics (optional)

Course Slides

2007 / 02 / 27

Course Overview, Syllabus, Enrollment Request

2007 / 03 / 06

Introduction (Ch1)

2007 / 03 / 13

Standardization and Implementation (Ch2)

File I/O (Ch3, partial Ch14)

2007 / 03 / 20

File I/O (Ch3, partial Ch14), assignment 1

2007 / 03 / 27

Standard I/O Library (Ch5, partial Ch14)

2007 / 04 / 10

Files and Directories (Ch4), assignment 2

2007 / 04 / 17

Files and Directories (Ch4)

2007 / 04 / 24

Environment of a Unix Process  (Ch7)

2007 / 05 / 01

Environment of a Unix Process  (Ch7), Process Control  (Ch8)

2007 / 05 / 08

Midterm exam  (in-class & close-book)

2007 / 05 / 15

Process Control  (Ch8), assignment 3

2007 / 05 / 22

Process Control  (Ch8)

2007 / 05 / 29

System Data Files and Info. (Ch6)

2007 / 06 / 05

Interprocess Communication (partial Ch15), Signals  (Ch10),

assignment 4

2007 / 06 / 12

Signals  (Ch10)

2007 / 06 / 19

Dragon Boat Festival

2007 / 06 / 26

Final exam  (in-class & close-book)

Resources

1.      Unix Programming Tools

A 16 page introduction to the use of common Unix programming tools

2.      Final Report of the Multics Kernel Design Project by M. D. Schroeder, D. D. Clark, J. H. Saltzer, and D. H. Wells, 1977.

3.      Programming in C – UNIX System Calls and Subroutines Using C, by A. D. Marshall

4.      The Unix Programming Environment, by Brian Kernighan and Rob Pike

5.      The Unix Programming Environment, by Mark Burgess