|
|
System Programming
|
|
| |
|
July 8th, 2005:
| |
|
July 4th, 2005:
| |
|
July 3th, 2005:
| |
|
May 20th, 2005: | |
|
May 20th, 2005: | |
|
May 13th, 2005:
| |
|
April 25th, 2005:
| |
|
April 18th, 2005: | |
|
April 13th, 2005: | |
|
April 12th, 2005: | |
|
March 8th, 2005: |
|
|
March 1st, 2005: |
|
|
March 1st, 2005: |
|
|
February 28th, 2005: |
|
This course is designed for sophomore
CS-major students and serves the introduction system-level course.
In this course, we 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.
This means to know how to make use of the many tools that the system
provides, its commands, library calls or system calls. This also means
that you understand the model of computation that Unix presents.
2. To become good system programmers.
This means to know how to write a descent C program in Unix/Linux as
the semester is over. However, this course should not limit you to
write 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 may 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. I will appreciate if you can send me your
comments regarding the class at the end of the semester. (Well, you can
send me your comments at any time. However, I guess it is more valuable
to review the class at the end of the semester.)
The students should be familiar with data structures and basic C/C++ programming.
There is one required text book: Advanced Programming in the Unix Environment
by W. Richard Stevens, Addison-Wesley, 1993. It is distributed by
開發圖書有限 公司.
Other reference books:
We will have one mid-term, one final, and
five programming assignments. Since this is a programming course, I
will give heavy weights to the programming assignments. Each written
exam counts 35% of your final grade and the five programming
assignments in total count 30% of your final grade.
Happy Programming!!
Late Assignment: the programming
assignments should be handed in via the provided web-based assignment
submission system. All assignments must be handed in before 11:59PM at
their corresponding due days. Because of the large class size, it is
very likely that the assignment submission web site will be extremely
busy at the last mininutes. You should not wait until the last minute
to submit your assignments. It is your
responsibility to make sure that your assignments are handed in
before the deadline. The TAs will not accept the assignments via emails
or any other means. Check out the submission web site to see how to
make sure your assignments are submitted successfully. So, do it as
early as possible.
Only the assignments submitted before the deadline will receive full
credit. 5% of your grade will be deducted
for single day delay.
Plagiarism: There is NO tolerance
for plagiarism. (As an engineer, you should check out IEEE's
code of ethics.) You can discuss the assignments with your
classmates and/or friends. However, you MUST
write the codes by yourself. It is YOUR
responsibility to protect your own codes so that please don't leave
your codes on the table or screen.
The schedule is tentative and subjected
to change. However, any change will be annouced in the class and the
announcement section.
The lecture slides and handouts will be available on the class web
site. Please check out the slides and handouts before the class. The
handouts will NOT be distributed in the class. The lecture slides
should NOT be the only materials for you to study. They only serve as
the guideline for you to study other materials including textbook and
other online resources. It is very likely that you will fail the exam
if you only study the lecture slides.
|
Week
|
Topic | Lecture Notes | Misc. |
|---|---|---|---|
|
1
|
Syllabus and introduction
|
||
|
2
|
Introduction (Ch. 1) and Unix
Standardization (Ch. 2)
|
|
|
|
3
|
File input and output (Ch. 3)
|
|
|
|
4
|
File input and output (Ch. 3) and
Standard I/O Library (Ch. 5)
|
|
|
|
5
|
Standard I/O Library (Ch. 5) and Files
and Directories (Ch. 4)
|
|
|
|
6
|
Files and Directories (Ch. 4)
|
|
|
|
7
|
Files and Directories (Ch. 4)
|
|
|
|
8
|
System Data Files and Information (Ch. 6)
and Environment of a Unix Process (Ch. 7)
|
|
|
|
9
|
Mid-Term |
|
|
|
10
|
Process Control (Ch. 8)
|
|
|
|
11
|
Process Control (Ch. 8)
|
|
|
|
12
|
Process Control (Ch. 8)
|
|
|
|
13
|
Process Relationships (Ch. 9) and
Singnals (Ch. 10)
|
|
|
|
14
|
Signals (Ch. 10)
|
|
|
|
15
|
Signals (Ch. 10)
|
|
|
|
16
|
Signals (Ch. 10)
|
|
|
|
17
|
Interprocess Communication (Ch. 14)
|
|
|
|
18
|
Final Exam
|
|
|
|
*
|
TA Presentations:
1. OS Market Analysis 2. Linux Distribution 3. Introduction of Microsoft Windows Embedded |
|
Unless it is explicitly specified, all
the assignemnts are individual assignments. Each student must submit
his/her own assignments.
MP 1: ReverseIt.
Sample Input files: english, chinese, binary
Sample Output files: english, chinese, binary
MP 2: FindAndReplace.
Tar Checker: MP2Checker.sh
MP 3: Minishell.
Sample Files
MP 4: Message of the day.
Sample Files
MP 5:
Assignments Submission Website
NOTE: Please read the policy section first
before you start to work on your programming assignments.
Writing
Makefiles
Make - a tutorial
Command
line argument tutorials
C
Programming Tutorial
printf
tutorial
How
to use the GCC Compiler tutorial.
GDB(GNU
Debugger) tutorial
DDD: Data Display
Debugger