| Instructor: | Derek Harter |
| Office: | Jour 208 |
| Phone: | 903-886-5402 (Jour 208) |
| Email: | Derek_Harter@tamu-commerce.edu |
| Office Hours: | T, Th 2pm-4pm |
| Class: | T, Th 9:30 - 10:45 am Jour 204 |
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.
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, linkers, system libraries and other software development topics.
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 labs in class and outside programming assignments. The course will also require a semester long programming project.
This course is being co-taught this semester in conjunction with the undergraduate CSci 414 section. In general, both graduate and undergraduate students will have the same assignments, tests and projects this semester. However, graduate students can expect extra work and questions on labs, tests and the course project as part of their requirement for this course.
414 Section: CSCI-151 and CSCI-152
553 Section: CSCI-525 and CSCI-530
| [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 |