CSS 503: Systems Programming - Programming Tasks
Overview of Lab Sessions and Programming Assignments
The course has four post-lecture laboratory sessions, each followed by
a different programming assignment.
- 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 focus on improving not only your
problem-solving with OS system functions but also your
performance-analyzing skills based on empirical data. Programming
assignments 1 through to 3 must be thoroughly done by yourself. For
the final project, you may work with just one classmate or
individually. The evaluation of each assignment takes 11% or 27% 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 use UW1-320 Linux machines for the
verfication and performance evaluation of your programs, while you may
use different platforms where C/C++ and Java can run. 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 include
two multicores and are connected to 100Mbps, while those from 16 to 23
inlcude four multicores and are connected to 1Gbps network.
Programming Languages and IDEs
All lab sessions and programming assignments use C/C++. For C/C++
programming, you can use IDEs such as Kdevelop and Eclipse. Needless
to say, you may use vi, emacs, and g++ commands directly.
Socket Ports
You need to use a socket port in program 4. Please use the last five
digist of your student ID. Do not use default ports.
Lab Work
You can work in a group of two students.
- Lab 1: creates a program that
creates a process tree.
- Lab 2: suspends and resumes one
after another thread.
- Lab 3: reads a given file using
Unix and C/C++ Standard I/Os.
- Lab 4: multicasts a message from a
client to multiple servers using UDP.
Assignments
You must work thoroughly by yourself except the final project. You can
work with just one classmate or individually on the final project.
- Program 1: parallelizes a
convex-hull program with multi-processes, using fork and pipe.
- Program 2: solves the
sleeping-barbers problem, using pthreads.
- Program 3: partially implements
the C/C++ standard I/O library.
- Program 4: facilitates an
inter-segment/group UDP broadcast space.
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.