What This Document Is
This document provides a high-level design discussion and overview for Lab 2 of CSE 532S, Advanced Multiparadigm Software Development at Washington University in St. Louis. It focuses on extending a previously developed concurrent system to handle more complex scenarios involving multiple, coordinated tasks. The core subject matter revolves around advanced threading models and architectural patterns for managing concurrent operations within a software application. It explores concepts related to scaling a system from processing individual units to managing a larger, sequential workflow.
Why This Document Matters
This resource is crucial for students enrolled in CSE 532S who are preparing to implement Lab 2. It’s particularly beneficial for those seeking to understand the overall design goals and key considerations *before* diving into the coding phase. Students who review this material will be better equipped to make informed architectural decisions, anticipate potential challenges, and effectively plan their implementation strategy. It’s most valuable when used *prior* to beginning the lab work, and can be revisited throughout the development process as a reference point.
Common Limitations or Challenges
This overview does not contain detailed, step-by-step instructions for completing the lab. It will not provide specific code examples, solutions to implementation problems, or a complete, ready-to-run program. The document focuses on the *design* space, outlining potential approaches and trade-offs, but leaves the detailed implementation to the student. It assumes a foundational understanding of concurrent programming concepts established in prior coursework.
What This Document Provides
* An exploration of expanding a system to manage a sequence of independent, yet related, operations.
* Discussion of different threading architectures, including Hash-Based State Association (HSHA) and Leader/Follower (LF) patterns.
* Considerations for relating activities of varying durations within a concurrent system.
* Guidance on key design choices and potential trade-offs related to performance, complexity, and maintainability.
* Suggestions for an incremental development approach to facilitate debugging and testing.
* A forward-looking perspective on how the concepts introduced in Lab 2 will build towards the challenges presented in Lab 3, involving distributed systems and dynamic reconfiguration.