Fall 2008 CSCI 414 Course Syllabus
INSTRUCTOR:
Derek Harter, Ph.D., Assistant Professor, Department of Computer Science
Texas A&M University – Commerce
Office: Jour 208; Phone: 903-886-5402;
E-mail: Derek_Harter@tamu-commerce.edu
Office Hours: T, Th 2-4pm or by appointment.
CLASS MEETINGS:
001 21779 T, Th 9:30-10:45am Jour 204
http://faculty.tamu-commerce.edu/dharter/tamu/classes/2008spring/csci553
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 will be a secondary focus, as an example of applying software development tools and techniques to developing software in a UNIX environment. 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:
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 graduate CSci 553 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.
TEXTBOOKS:
[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: http://docs.python.org/tut/tut.html
PREREQUISITES:
CSCI-525, CSCI-530
EVALUATION:
Your grade for the course will be based on the following (approximate) percentages:
Two Tests 40%
Labs / Assignments (8) 40%
Course Project 20%
STUDENTS WITH DISABILITIES ACT COMPLIANCE:
Students requesting accommodations for disabilities must go through the Academic Support Committee. For more information, please contact the Director of Disability Resources and Services, Hallady Student Services Bldg., Room 303D, (903) 886-5835.
ACADEMIC ETHICS:
“All students enrolled at the University shall follow the tenets of common decency and acceptable behavior conducive to a positive learning environment.” (See Student’s Guide Handbook, Policies and Procedures, Conduct).
ATTENDANCE POLICY:
Students are expected to be present at all class lectures and are responsible for all material covered in class and assigned in readings. If a student is absent from class on the due date of any assignment, they are expected to make alternative arrangements to assure that the assignment is turned in ON TIME. Note that we will be doing several computing labs during class which can not be made up, an absence from class when a lab is performed will result in a 0 grade for that lab. Any student wishing to withdraw from the course must do so officially as outlined in the class schedule. THE INSTRUCTOR CANNOT DROP OR WITHDRAW ANY STUDENT.
COURSE REQUIREMENT DEADLINES:
Credit will be given for ONLY those exams, programs, and/or projects turned in no later than the deadline as announced by the instructor of this class, unless prior arrangement has been made with the instructor.
TENTATIVE SCHEDULE
|
Wk |
Date |
Topic / Activity |
Reading |
Lab |
|
1 |
Jan 15/17 |
Intro, Syllabus, Linux Accounts |
AUP 1,2,3 |
|
|
|
|
Shell Basics (SWC), More Shell (SWC)
|
UPU 1,2,3,4,5,8 |
|
|
2 |
Jan 22/24 |
Version Control (SWC) |
UPU 12 (SCCS) |
1: Unix Shell, Shell Scripts |
|
|
|
Debugging (SWC) Unit Testing (SWC)
|
UPU 12 (debugger) |
|
|
3 |
Jan 29/31 |
Compilers, Linking, Libraries |
UPU 12 (C compiler, ld), AUP 14 |
2: Subversion, |
|
|
|
Automated Builds (SWC)
|
UPU 3, 12 (make), 13, AUP 15 |
|
|
4 |
Feb 5/7 |
Basic Scripting (SWC), Strings, Lists and Files (SWC) |
PYT 1,2,3 |
3: Linkers & Compilers, Make |
|
|
|
Sets, Dictionaries and Complexity(SWC), Functions and Libraries (SWC) |
PYT 4, 5, 10, 11 |
|
|
5 |
Feb 12/14 |
Regular Expressions (SWC), Object-Oriented Programming (SWC), |
PYT 6, 9, 10.5 |
4: Python Scripting |
|
|
|
Style (SWC), Quality Assurance (SWC)
|
PYT 8 |
|
|
6 |
Feb 19/21 |
Binary Data (SWC), XML (SWC), Relational Databases (SWC) |
|
5: Testing, Data, RegExp |
|
|
|
Unix Administration
|
UPU 9 |
|
|
7 |
Feb 26/28 |
Test 1 |
|
|
|
|
|
|
|
|
|
8 |
Mar 4/6 |
Introduction to Networking and TCP/IP Network Protocols |
UPU 9, 10, UNP 1,2, AUP 4,5 |
|
|
|
|
|
|
|
|
9 |
Mar 11/13 |
Web Client Programming (SWC) |
|
6: Client / Server |
|
|
|
Web Server Programming (SWC) |
|
|
|
|
Mar 17-23 |
Spring Break |
|
|
|
|
|
|
|
|
|
10 |
Mar 25/27 |
Building TCP Client/Servers with Sockets |
UNP 3,4,5 |
|
|
|
|
Connectionless sockets / UDP |
UNP 7,8
|
|
|
11 |
Apr 1/3 |
I/O Multiplexing: signals and polling |
UNP 7, UPU 13 (signals) |
7: Sockets |
|
|
|
Basic Inter-Process Communication (IPC) in UNIX |
AUP 7 |
|
|
12 |
Apr 8/10 |
Fifos, Pipes, Shared Memory, Mutexes and Semaphores |
UPU 13 |
|
|
|
|
|
|
|
|
13 |
Apr 15/17 |
Distributed and Parallel Computing |
|
8: Distributed Computing |
|
|
|
|
|
|
|
14 |
Apr 22/24 |
Test 2 |
|
|
|
|
|
|
|
|
|
15 |
Apr 29/1 |
Course Project, Presentations and Demos |
|
|
|
|
|
|
|
|
|
|
May 5-9 |
Course Project, Presentations and Demos |
|
|