Project Ideas:

Links:


Philosophy

Some general thoughts about programming projects in CMSC 412, I have numbered them to make them easier to reference in discussions about them.

  1. CMSC 335, Object-Oriented and Concurrent Programming
    1. The project in this class uses threads
    2. One large project developed in 4 main phases
    3. Simulation of:
      1. Seaport with ships, ports, docks, jobs and resources (persons with skills at each port)
      2. Sorcerer's Cave with creatures, artifacts, treasures, parties and jobs requiring certain artifact types
  2. CMSC 412
    1. The list of topics is shown below (and in the links above)
  3. Projects
    1. I would like the students to do some interesting programming related to the topics in this class
    2. The programming projects should be appropriately challenging
    3. I would like to see programming projects be term (8 weeks) long
      1. I think weekly reports are most appropriate for this kind of flexible system
    4. The primary topics revolve around the elements an operating system should address:
      1. processes and threads
      2. file systems
      3. memory allocation
      4. resource access and protection
        1. I/O devices
        2. Disks
        3. memory
        4. communications: interprocess, interthread, distributed, etc.
    5. I would like the students to propose their own projects with guidance from the project list below
    6. I would suggest that students be encouraged/allowed to form groups of 1, 2, or perhaps 3 members
      1. perhaps with only 2 or 3 students in a group, we can allow pair programming and not have to worry too much about roles since all the members will probably need to do all the roles over the course of a project.
      2. the groups should be strongly encouraged to communicate often, probably daily, to make sure they are on the same page
      3. the weekly reports, and perhaps all the project artifacts, should be public, ie, posted in the common discussion areas of Leo
        1. this is a way to get everybody excited about the class in general, their own contributions, and let each student benefit from seeing how others are approaching their projects.
        2. making work public has worked out extremely well in the CMSC 495 classes
        3. public work also allows students to comment (nicely!) and make suggestions that help other students do better
  4. Simulation projects
    1. Statistical projects
    2. Many events of some sort
    3. What is to be measured?
    4. What parameters are to be explored?
    5. What algorithms are to be explored?
    6. Proving that the simulations are actually implemeting the proposed algorithms, parameters and measures correctly.
  5. Implementation projects
    1. Define the function set to be implemented
    2. Define the environment
    3. Define test scenarios to demonstrate the correctness of the implemented functions and the environment

Executing processes


Scheduling processes/threads


Synchronizing processes/threads


Deadlocks


Memory allocation, paging, segmentation


I/O system performance


Disk access scheduling


Distributed System scheduling


(end)