CSS 543: Advanced Programming Methodology
Fall 2010
MW 545-750pm at UW1-202
Prof. Munehiro Fukuda
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.
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% |
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.
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 | |||||
11 | Dec 13 | Final exam in class | All chapters from network applications through to Corba programs | ||
Dec 15 | Final Project Presentation | at UW1-202 Classroom from 5:45pm - 7:45pm |