CSci 553: Networking III (Unix Network Programming)

Spring 2007

Instructor: Derek Harter
Office: Jour 208 (Lab Sci 355)
Phone: 903-886-5402 (Jour 208)
903-468-8762 (Sci 355)
Email: Derek_Harter@tamu-commerce.edu
Office Hours:  T 2pm-4pm
Th 2:00pm - 3:30pm
Class: W 2:00 - 4:30 pm  Jour 204

Course Description

This course is designed to introduce advanced concepts of programming and software development in UNIX-based computing environments. The UNIX model of networking, inter-process communication (IPC), and TCP/IP sockets are the major topics to be discussed. The class will include a major programming project involving intensive coding of an application involving IPC and networking concepts introduced in class.

Requirements and Objectives

The course is one of the three required courses for completion of the networking track of the Masters program in Computer Science at TAMU-C. The topic of focus in this course is UNIX network programming. This course also includes an intensive introduction to basic software development tools and practices for programmers, scientists and engineers, in the UNIX programming environment.

In the first half of the course we will introduce students to standard programming and software development tools in the UNIX environment. This includes a detailed look at using shells and scripting languages (in particular the Python scripting language will be used). We will also look at development tools that help to streamline and automate the development process, including revision control systems (subversion), automated build tools (make and ant), and debuggers and other techniques.

In the second half of the course the student will apply these tools and techniques to developing simple client/server applications using the standard UNIX network programming tools and protocols. In particular, we will look at modularization of programming tasks. Modularization not only in the sense of separate functions within a process, but as separate processes that cooperate to perform a task. Breaking a task into several cooperating processes necessitates learning methods of inter-process communication (IPC), ultimately leading to communication of processes distributed across separate machines over a network. As part of this course, you will complete many labs in class and outside programming assignments. The course will also require a major programming project. The students will be responsible for identifying and selecting an appropriate application of networking to be performed as a course project. Upon the approval of the instructor, the implementation project can be started immediately. Since this course is a very programming intensive course, the implementation project is a very essential part of the successful course completion.

Prerequisite

CSCI-525 and CSCI-530

Text

[SWC] Software Carpentry
    by Greg Wilson
    Web Course: http://www.swc.scipy.org
[UPU] UNIX for Programmers and Users, 3/E
    by Graham Glass and King Ables
    Prentice Hall, 2003, ISBN: 0-13-046553-4
[AUP] The Art of Unix Programming
    by Eric S. Raymond
    Addison Wesley Professional, 2003, ISBN: 0-13-142901-9
    Free CC license version: http://www.faqs.org/docs/artu
[UNP] UNIX Network Programming, Vol. 1: The Sockets Networking API, 3/E
    by Richard Stevens, Bill Fenner, and Andrew M. Rudoff
    Addison-Wesley Professional, 2003, ISBN: 0-13-141155-1
[PYT] Python Tutorial
    by Guido van Rossum
    Web Course: http://docs.python.org/tut/tut.html

Syllabus

(PDF) (HTML) (DOC)