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.
- 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.
- 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
- 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.
- 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
- 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.
- 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
- Program 3 needs a socket port. As your own socket port, you should
use the last five digits of your student ID. Do not use the ports
other than your own port.
- Program 4 also needs a common socket ports: 8080 for HTTP,
8181 for HTTPS, and 4848 for administration. When you run your server
program on a UW1-320 machine, please visit the laboratory and run it
from the console, in which way you won't collide with other classmates
for the same ports.
Assignments
- Program 1 implements Shell-like
fore/background process execution, file redirection, and pipe-based
process.
- Program 2 parallelizes
Shroedinger's wave simulation with multithreads.
- Program 3 faciliates peer-to-peer
communication with multithreads for implementing an online tic-tac-toe
game.
- 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.