Grader: Yan Mao
Office hours: T 3:15 pm - 4:15 pm, or by appointment.
Location: TBA
Email: mao@cs.fsu.edu
Lecture hours: MWF 1:25 pm - 2:15
pm, LOV 103
|
Prerequisites: COP 4610: Operating systems. This pre-requisite will not be waived.
Note: Proficiency in C is assumed; you need to have substantial programming experience in C. You also need to have user-level knowledge of Unix, and be comfortable working in a Unix environment.
Text books:
- Required: UNIX Network Programming, Volume 1: Networking APIs -
Sockets and XTI, Second edition, W. Richard Stevens, Prentice Hall, Englewood Cliffs, NJ, 1997 (Referred to as UNP).
- This book assumes knowledge of (i) processes, their creation and termination, (ii) signals and signal handlers, (iii) files, open file descriptions, file descriptors, and related material. The following book provides detailed information on those topics.
- Recommended: Advanced Programming in the UNIX Environment, W. Richard Stevens,
Addison-Wesley, 1993 (23rd printing 2001), (Referred to as APUE).
- Topics mentioned above will be discussed during the first few weeks of classes, to provide background material for those not familiar with those topics. This book will be useful then, and is therefore strongly recommended.
Other references
- IETF Request for
Comments: http://www.ietf.org/rfc.html.
- The Open Group Base Specifications Issue 6
IEEE Std 1003.1-2001: http://www.opengroup.org/onlinepubs/007904975/ (OG).
- The C Programming Language, second edition, B. W. Kernighan and D. M. Ritchie, Prentice Hall, 1988.
- Online man pages. Section 2 documents the OS
system service calls, and Section 3 the C library functions. For
example, use man ps to see the man(ual)-page for the
ps command. Use man -k keyword to see all the
man pages for a particular keyword.
Course rationale:
This course is meant for graduate students having substantial
programming experience. You may find this course difficult if this is
your first graduate level course. In this course, you will acquired
training in good programming techniques, while learning important
programming topics in a Unix environment, particularly network
programming and threads.
Course description:
File access and attributes, I/O issues, signals, concurrent
programming with processes and threads, network programming,
client-server paradigm.
Course objectives:
By the end of the semester, you should acquire programming
experience in the following: (i) using standard UNIX operating system
API's, (ii) concurrent programming with processes and threads, (iii)
network programming in the client-server paradigm, and (iv) writing portable
programs.
Grading criteria:
Weekly quizzes |
15 |
Attendance and class participation |
5 |
Group project |
10 |
Programming assignments |
25 |
Two Midterm Exams |
10 + 15 = 25 |
Final Exam |
20 |
Your grade will be based on the scores obtained in the above
categories, with weights as given above. Additionally, you need to
obtain a certain minimum average score on your exam grades (quizzes +
midterms + finals). Examples are given below, later.
Course average |
Minimum exams average (%) |
Letter grade |
90 - 100 |
90 |
A |
87 - 90 |
85 |
A- |
80-87 |
75 |
B |
70-80 |
65 |
C |
60 - 70 |
50 |
D |
0 - 60 |
0 |
F |
- Examples
- If you get 91% total and 93% on the exams, your grade will be A.
- If you get 83% total and 73% on the exams, you will not
get a 'B'. Your grade will be 'B-'.
- If you get 83% total and 63% on the exams, you will get a 'C-'.
- Attendance and class participation
- You will be given a grade for class participation and
attendance. In
particular, I will ask questions during lectures, and you should
perform well in these. I will also take into account positive
contributions you make to the class, such as suggesting improvements
to programming examples I present in class. Your attendance too will
be considered.
Attendance will be taken at the beginning of lectures. You will be
marked absent if you are more than 5 minutes late. You may also lose
points if you are regularly late by 0-5 minutes. You will also be
marked absent if you leave before class ends! Missing four or fewer
lectures will be considered good attendance.
- Notes: (i) Your signature on the attendance sheet should
match that on your FSU ID. (ii) You are responsible for making up
for any materials missed due to absences, including announcements made
in class. A missed exam can be made up only in extremely rare
circumstances, and you should discuss it with me well ahead of time.
- Grading programs
- Program grades will be based primarily on functionality,
portability, correctness, programming style, and documentation. Since
one of the important goals of this course is to learn to write
portable code, the assignments will be required to compile and execute
correctly on different operating systems, without changing the source
code.
Course policies:
- Deadlines: If your assignment is late, you will get a 20%
reduction in points for up to one day late (ignoring weekends and
university holidays), and 30% more for each subsequent day. Please do
not depend on our watches being exactly synchronized; do submit a few
minutes early. A submission that is late by 1 minute will
still get the entire 20% penalty! (In order to help you deal with
emergencies, we will excuse your first late submission from the 20%
penalty, provided it is not late by more than one working day.)
- Cheating: You should not collaborate with anyone in any way
while working on assignments (except with your team members, on the
group project). Copying others' homework, replacing variable names in
their code with different names, altering indentation, or making
modifications to others' code, and submitting it as your own will all
be considered forms of cheating.
Students are expected to uphold the academic honor code published in
"The Florida State University Bulletin" and the "Student
Handbook". Please read the provisions of the Academic Honor Code: http://www.fsu.edu/Books/Student-Handbook/codes/honor.html. Also
read the section on "Honor code" below.
- ADA: Students with disabilities needing academic
accommodation should (1) register with and provide documentation to
the Student Disability Center, and (2) bring a letter to the
instructor indicating the need for accommodation and what type. This
should be done during the first week of class. This syllabus and other
class materials will be made available in alternative format upon
request.
Honor code:
- Plagiarism is "representing another's work or any part thereof, be it
published or unpublished, as one's own. . . . For example, plagiarism
includes failure to use quotation marks or other conventional markings
around material quoted from any source" (Florida State University
General Bulletin 1998-1999, p. 69). Failure to document material
properly, that is, to indicate that the material came from another
source, is also considered a form of plagiarism. Copying someone
else's program, and turning it in as if it were your own work, is also
considered plagiarism.
What I expect from the student:
- I am particularly strict about deadlines and following
instructions. Please read instructions carefully, and schedule your
activities so that you submit assignments well in time. You should
check your garnet email account and the class web page
regularly, and note other announcements, online and in class.
- Note that many of the programming assignments for this course involve writing code that can result in errors non-deterministically. Therefore, you should think of all error possibilities, and also test you code several times.
- I expect you
to complete any reading assignments when you come to class, since I
will assume you have learned the material. (You should read the
entire reading assignment, and not just the issues we discussed in
class. In fact, you should probably read the material not discussed in
class even more carefully!)
- You should participate in the class by asking questions, suggesting ideas, etc.
- In exams, I test knowledge, understanding, and creativity. When you learn some topic, you should not just try to understand the material, but also analyze what would happen if some things were different.
Lecture plan:
Dates |
Topic |
Dates |
Topic |
26 Aug - 30 Aug
| Review: editors, compilers, debugger, makefiles, header files, command line arguments, utilities, system calls. |
2 Sep - 6 Sep |
Portability and introduction to Unix API (Chapter 1 and 2 of APUE), Unix file system and direct I/O, (Chapters 3, 4,and 5 of APUE). |
9 Sep - 13 Sep
| More on file I/O and I/O redirection, process management (APUE chapters 7 and 8), and pipes (APUE sections 14.1 and 14.2). |
16 Sep - 20 Sep |
Signals (APUE chapter 10) and terminal I/O (APUE chapter 11). |
23 Sep - 27 Sep
| More system calls and midterm 1 review. |
30 Sep - 4 Oct |
Midterm 1, Introduction to Unix network programming (UNP chapters 1 and 2). |
7 Oct - 11 Oct
| Sockets and TCP (UNP chapters 3, 4 and 5). |
14 Oct - 18 Oct |
I/O multiplexing and pre-forked server (UNP chapters 6, 27). |
21 Oct - 25 Oct
| Socket options, UDP, and name and address conversions(UNP chapters 7, 8, and 9). |
28 Oct - 1 Nov |
Midterm 2, UDP reliability (UNP sections 20.4 and 20.5), and Unix domain protocols (UNP chapter 14). |
4 Nov - 8 Nov
| Threads (UNP chapter 23). |
11 Nov - 15 Nov |
More threads. |
18 Nov - 22 Nov
| Broadcasting and multicasting (UNP chapters 18 and 19) and IP options (UNP chapter 24). |
25 Nov - 29 Nov |
Signal driven I/O (UNP chapter 21) and non-blocking I/O (UNP chapter 15). |
2 Dec - 6 Dec
| Project presentations. |
9 Dec
| Final exam: 10:00 am - 12 noon.
|
Other course links:
- Lectures: http://www.cs.fsu.edu/~asriniva/courses/aup02/lectures.html.
Last modified: 18 Oct 2002
|