CSS 543: Advanced Programming Methodology
Fall 2010

MW 545-750pm at UW1-202

Prof. Munehiro Fukuda


Professor:

Munehiro Fukuda <mfukuda@u.washington.edu>, room UW1-331, phone 352-3459, office hours: MW 440-540pm

Course Description:

This course builds on knowledge of general data structures and operating systems and introduces thread-based and component-based multi-tier programming. We concentrate on application development in multithreaded and resource rich environments.

Topics coverd include process management, inter-process communication, dynamic linking, threads, thread synchronization, network communication, applets, and server-side programning (with servlets, RMI, and CORBA).

For each of the topics, we will cover the background and motivation; design apporach and philosophy, current technology implementations, in-class discussions and laboratory hands-on programming exercises.

Four programming assignments are given: (1) an implementation of Unix-shell-like foreground, background, file redirection, and pipe, (2) a multithreaded Schroedinger's wave simulation, (3) an online tic-tac-toe game with socket-based peer-to-peer communication, and (4) a multithreaded server application using a combination of (applets), servlets, and RMI or Java Corba. A lab session is planned for each of these assignments to get familiar with Unix system calls, dynamic linking libraries, threads, sockets, applets, servlets, RMI, and CORBA.

Prerequisites:

Admission to MSCSS or Graduate Non-Matriculated status

Work Load and Grading:

Course Work Percentage Achievements Approximately Corresponding Numeric Grade
Programming 1 15% 90s 3.5 - 4.0
Programming 2 15% 80s 2.5 - 3.4
Programming 3 15% 70s 1.7 - 2.4
Programming 4 25% 60s or below 0.0 - 1.6
Midterm Exam 15%
Final Exam 15%

Textbooks:

The course uses the following three textbooks although the class mainly focuses on the original lecture notes. You may use other textbooks or references regarding Linux programming, multithreading, Java networking, and server programming.
  1. Beginning Linux Programming, 4th Edition, Neil Matthew and Richard Stones, Wrox, 2007.
  2. Multithreaded Programming with Java Technology, Bill Lewis and Daniel J. Berg, Sun Microsystems Press, 1999.
  3. Client/Server Programming with Java and CORBA, 2nd Edition, Robert Orfali and Dan Harkey, Wiley, 1998.

References:

Policies:

All programming assignments are to be done independently. Any collaboration of work will result in severe penalty. You may discuss the problem statement and any clarification with each other, but any actual work to be turned in, must be done without collaboration.

Any homework is due at the beginning of class on the due date. The submission may be postponed only in emergencies such as accidents, sickness, sudden business trips, and family emergencies, in which case you may turn in yor homework late with a written proof. No make-up exams will be given except under exceptional circumstances. Barring emergencies, I must be informed before the exam.

To request academic accommodations due to a disability, please contact Disability Resources for Services (DRS) in UW1-175, (email: drs@uwb.edu, TDD: 425-352-5303, and FAX: 425-352-5381). If you have a documented disability on file with the DSS office, please have your DRS counselor contact me and we can discuss accommodations.

Course Goals:

The overall goal of CSS 543, "Advanced Programming Methodology" includes:

Assignments:

Four programming assignments are given. Please read assignment.html to understand the environment you use for assigments and the submission/grading procedures.

Laboratory Work:

Each class includes post-lecture laboratory or discussion sessions. For each laboratory session, we will move from the classroom to the UW1-320 linux laboratory where you will make a team of two students and work together on each programming exercise. Each student is supposed to independently turn in the source code and execution results in the laboratory or together with the following programming assignment work.

Group Discussions:

We are planning to have post-lecture group discussions where you will form a team of two students, discuss about given topics, and present the discussions in the classroom.

Topics covered and tentative 543 fall 2010 schedule:

Note that this is an approximate ordering of topics. Chapters will take about the allotted time and not all sections in all chapters are covered.

Week Date Topics Sessions Corresponding Book Chapters Assignment
0 Sep 29 Processes Discussion Linux Ch 11: Processes and Signals
Linux Ch 3: Working with Files
 
1 Oct 4 Message-Based IPC Laboratory 1 Linux Ch 13: IPC: Pipes  
  Oct 6 Memory-Based IPC Discussion Linux Ch 14: Semaphores, Shared Memory, and Message Queues Program 1 assigned
2 Oct 11 Dynamic Linking Laboratory 2 No corresponding book chapters
http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html
http://java.sun.com/docs/books/jni/
 
  Oct 13 Overview of Threads Laboratory 3 Multithread Ch 3: Foundation
Multithread Ch 4: Lifecycle
Multithread Ch 5: Scheduling
 
3 Oct 18 Posix Threads Discussion Linux Ch 12: Posix Threads  
  Oct 20 Java Threads Laboratory 4 Multithread Ch 6: Synchronization
Multithread Ch 10: Details
Program 1 due
Program 2 assigned
4 Oct 25 Socket Overview Laboratory 5 Linux Ch 15: Sockets  
  Oct 27 Socket Programs Discussion Linux Ch 15: Sockets  
5 Nov 1 Java Sockets Laboratory 6 Java/Corba Ch 10: Sockets vs CORBA/Java ORBs  
  Nov 3 Reserved for recovering from course delays      
6 Nov 8 Midterm exam in class   All chapters from processes through to Java sockets  
  Nov 10 Network Applications Discussion Java/Corba Ch 5: ORBlets Meet Applets Program 2 due
Program 3 assigned
7 Nov 15 Servlet Overview Discussion Java/Corba Ch 12: Servlets vs CORBA/Java ORBs  
  Nov 17 CSS Speakers Series: Microsoft Azure Cloud      
8 Nov 22 Servlet Development Laboratory 7 Java/Corba Ch 12: Servlets vs CORBA/Java ORBs  
  Nov 24 RMI Overview Discussion Java/Corba Ch 13: RMI vs CORBA/Java ORBs Program 3 due
Program 4 assigned
9 Nov 29 RMI Programs Laboratory 8 Multithread Ch 13: RMI  
  Dec 1 Corba Overview Discussion Java/Corba Ch 1: Client/Server, CORBA-Style
Java/Corba Ch 4: Your First CORBA Program
 
10 Dec 6 Corba Programs Laboratory 9 Java/Corba Ch 6: Java ORBs Meet C++ ORBs
Java/Corba Ch 7: The Portable Count
Java/Corba Ch 8: The Dynamic Count
 
  Dec 8 Final Project Presentation      
11 Dec 13 Final exam in class   All chapters from network applications through to Corba programs Program 4 due
  Dec 15 Final Project Presentation     at UW1-202 Classroom from 5:45pm - 7:45pm