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.
  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 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

  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 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.
  1. Lab 1: creates a program that creates a process tree.
  2. Lab 2: suspends and resumes one after another thread.
  3. Lab 3: reads a given file using Unix and C/C++ Standard I/Os.
  4. 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.
  1. Program 1: parallelizes a convex-hull program with multi-processes, using fork and pipe.
  2. Program 2: solves the sleeping-barbers problem, using pthreads.
  3. Program 3: partially implements the C/C++ standard I/O library.
  4. 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.