CSS 543: Advanced Programming Methodology - Programming Tasks


Overview of Lab Sessions and Programming Assignments

The course has nine post-lecture laboratory sessions and four programming assignments.
  1. Lab Sessions are intended to assimilate you in new programming concepts/technologies and to help you start the following programming assignments smoothly using these new skills. Therefore, each session gives only a small programming problem. The grade of lab sessions is based on your participation and considered as part of the following programming assignments. You may work with your classmate. However, please turn in a hard copy of source code and execution results independently at the end of each session or on the due-date of the following programming assignment together.
  2. Programming Assignments are application-development projects rather than programming problems, for the purpose of improving your problem-solving and performance-analyzing skills. All work must be thoroughly done by yourself. The evaluation of each assignment takes 15% or 25% of your entire grade and is based on its grading guide that is described in each assignment specification. Each assignemnt is due at the beginning of class on the due date. Please turn in a hard copy of all your work as requested in each assignment specification.

Platforms

  1. Lab Sessions use UW1-320 Linux machines. All students should be able to enter the laboratory with their student ID card. If not, please visit the CSS main office to validate your card for this room. You can log in both from a console or remotely from your home with your UWnetID and password. If not please contact Josh Larios, CSS Advanced System Engineer for assistance.
  2. Programming Assignments can be done on any platform (where Java can run) except program 1 that designs and codes a Unix-like shell using Unix system calls. Therefore, as far as your platform accepts Unix system calls as in Unix, Linux, Mac OS, and Cygwin, you can still use your own computer. Otherwise, please visit UW1-320 or remotely log in any of the lab machines. For remote login, use the ip name such as: uw1-320-lab.uwb.edu, uw1-320-00.uwb.edu, ..., uw1-320-23.uwb.edu. Note that machiens from 00 to 15, (each with a dual-core CPU) are connected to 100Mbps, while those from 16 to 23, (each with two dual-core CPUs) are connected to 1Gbps network.

Programming Languages and IDEs

  1. Lab Sessions use C/C++ for lab 1: Message-Based IPC, lab 2: Dynamic Linking, lab 3: Thread Overview, and lab 5: Socket Overview, while Java for all the others (including lab 4: Java Threads, 6: Java Sockets, 7: Servlet Development, 8: RMI Programs, and 9: Corba Programs). For C/C++ programming, you can use IDEs such as Kdevelop and Eclipse. For Java programming, you can use NetBeans IDE. Needless to say, you may use vi, emacs, g++, javac, and java directly.
  2. Programming Assignments use C/C++ for program 1: Unix-Like Shell, while Java for the rest of assignments. Note that program 2: Multithreaded Schroedinger's Wave Simulation and program 3: Online Tic Tac Toe can be done with Posix threads and Unix/Linux sockets, in which case you have to implement the GUI portion of these assignments by yourself. For program 4: Multithreaded Client/Server Design, you need to use Java, because the assignment is based on Servlets and RMI or Corba.

Socket Ports

Assignments

  1. Program 1 implements Shell-like fore/background process execution, file redirection, and pipe-based process.
  2. Program 2 parallelizes Shroedinger's wave simulation with multithreads.
  3. Program 3 faciliates peer-to-peer communication with multithreads for implementing an online tic-tac-toe game.
  4. Program 4 is the multithreaded client/server project open to your thoughts, (i.e., identifying a good server application such as an online ticketing system, a cycle server, a DB system, or doodle by yourself and implementing it using what you learned in this course).

Submissions/Presentations

Each assignment specification shows what to turn in. The submission must be done in a hard copy. For program 4, each student will have an opportunity of summarizing her/his work, presenting intermediate results, and possibly demonstrating her/his program's execution in week 10. Note that assignments are due at the beginning of lecture. No late programs will be accepted unless you provide me with a proof showing tht you have been under an emergency circumstance.