CS4995-03: Internet Systems Programming (ISP)

Course Benefits

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.

Instructor

Professor H. Schulzrinne:

Applicable Degree Programs

Most courses 4000-level and above can be credited to all degree programs. All courses are subject to advisor approval.

Course Fees

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.

Course Mechanics

Lecturer Professor Henning Schulzrinne
Office hours: Monday, 5.30-7 pm or by appointment
Office location: 815 CEPSR
Office phone: +1 212 939 7042
Email address: schulzrinne@cs.columbia.edu
Teaching assistants:
TA office hours location
Lisa Amini Monday 1:00-2:30, Wednesday 5:30-6:00 CS 477C (cubicles on 4th floor of CS building)
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:
  • W. Richard Stevens, Unix Network Programming, Prentice Hall, 1998. ISBN 0-13-490012-X
  • Michi Henning and Steve Vinoski, Advanced CORBA Programming with C++, Addison Wesley, 1999. ISBN 0-201379279

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.

Topics

Course Details

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.
Programming projects may include:
# 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