This course is intended for advanced undergraduates, master's students and systems-oriented PhD students. It tries to address the lack of systems and Internet programming knowledge often found. It builds on 'Operating Systems' (CS4118), but instead of designing the components of an operating system, this course addresses how programs in distributed systems can make use of OS services. It is also a natural progression of 'Computer Networks' (CS4119). While 'Advanced Internet Services' (CS6181) addresses primarily multimedia and real-time services, this course is more oriented towards general (data-oriented) distributed systems. Where necessary, concepts of the underlying protocol or system will be discussed.
The course will use NT, Linux and Solaris, but will primarily focus on concepts and tools that are available on most platforms.
The course will also be distributed via CVN on video tape.
Most courses 4000-level and above can be credited to all degree programs. All courses are subject to advisor approval.
A CLIC computer account is required unless student has ready access to both Unix (Linux or Solaris 2.6+, with C, C++, Java, Purify and a Corba ORB) and NT 4.0 (with Visual C++ or CodeWarrior) at home or at work. A CLIC account for any number of classes costs $45/semester.
Lecturer | Professor Henning Schulzrinne | ||||||||
| |||||||||
Teaching assistants: |
|
||||||||
Policies: | The standard rules apply. | ||||||||
Day and Time: | MoWe, 4.10 pm to 5.25 pm | ||||||||
Location: | Mudd 1127 | ||||||||
Class homepage: | http://new-www.cs.columbia.edu/~hgs/teaching/isp, class resources | ||||||||
Class mailing list: | isp@cs.columbia.edu | ||||||||
Class bulletin board: | https://www1.columbia.edu/sec/bboard/993/coms4995-003/; post messages | ||||||||
Credits for course: | 3 | ||||||||
Class Type: | Lecture | ||||||||
Prerequisites: | CS 3139, CS 3156, CS 4118 (can be taken concurrently); CS 4119 desirable; fluency in C/C++ | ||||||||
Description: | The course covers the major non-GUI system interfaces for modern distributed systems. | ||||||||
Required Texts: | W. Richard Stevens, Advanced Programming in the Unix Environment, Addison Wesley. ISBN 0-201-56317-7 (web site) | ||||||||
Reference Texts: |
Other reading (papers, documentation) will be assigned as needed. | ||||||||
Homework: | System programming projects of significant size and complexity every other week. | ||||||||
Project: | Programming project, for on-campus students as groups. | ||||||||
Papers: | None. | ||||||||
Midterm exam: | None. | ||||||||
Final exam: | Comprehensive review of concepts. | ||||||||
Grading: | 50% assignments, 20% project, 25% final exam, 5% class participation. | ||||||||
Hardware Requirements: | Internet access. | ||||||||
Software Requirements: | CLIC accounts may be used for Unix-based assignments, but access to a Linux or Solaris programming environment at home or work is strongly recommended to accelerate programming efforts. NT 4.0 system with appropriate C++ compiler required for off-campus students. | ||||||||
Homework Submission: | By email or web page to TA. |
Prerequisites | CS 3139 (Data Structures), CS 3156 (Software Engineering) and fluency in C or C++ required; CS 4118 (Operating Systems) and/or CS 4119 (Computer Networks) recommended. |
Time: | MW 4.10-5.25 pm. |
# | Date | Topics/chapters covered | Assigned | Due |
---|---|---|---|---|
1 | We, Sept. 8 | Introduction; programming tools | HW1 | |
2 | Mo, Sept. 13 | Programming tools: CVS | ||
3 | We, Sept. 15 | Programming tools: make, autoconf/automake | ||
4 | Mo, Sept. 20 | Programming tools: gdb, purify, ElectricFence, truss, gprof | ||
5 | We, Sept. 22 | program organization | ||
6 | Mo, Sept. 27 | program organization | HW1 | |
7 | We, Sept. 29 | program organization; internationalization | HW2 | |
8 | Mo, Oct. 4 | Review of systems programming: file access | ||
9 | We, Oct. 6 | File access | ||
10 | Mo, Oct. 11 | Time and date services; system files; process environment; | HW3 | HW2 |
11 | We, Oct. 13 | process management | ||
12 | Mo, Oct. 18 | process management | ||
13 | We, Oct. 20 | threads | ||
14 | Mo, Oct. 25 | Guest lecture: NFS -- protocol, programming and implementation (Erez Zadok) | ||
15 | We, Oct. 27 | Socket programming, DNS | ||
Mo, Nov. 1 | no class | HW4 | HW3 | |
16 | We, Nov. 3 | Socket programming | ||
17 | Mo, Nov. 8 | Socket programming | ||
18 | We, Nov. 10 | IP multicast | ||
19 | Mo, Nov. 15 | syslog (example), getopt(), Sun RPC (RPC interface definition, client stub, server, client wrapper) | ||
20 | We, Nov. 17 | IPC Unix socket server and client | HW4 | |
21 | Mo, Nov. 22 | IPC: shared memory client and server; | ||
22 | We, Nov. 24 | IPC: shared memory mmap_zero; Modern distributed programming: Corba | HW5 | |
23 | Mo, Nov. 29 | Corba (IDL, C++ interface, naming) | ||
24 | We, Dec. 1 | Corba | ||
25 | Mo, Dec. 6 | Corba | HW5 | |
26 | We, Dec. 8 | Databases and directories: LDAP, ldap.c; | ||
27 | Mo, Dec. 13 | LDAP; web programming | Project due | |
Mo, Dec. 20, 4.10-7.00 pm | final exam (Mudd 1127); solution |