What This Document Is
This is a programming assignment for a Special Topics course in Computer Science (CSCI 499) at the University of Southern California. The assignment focuses on pathfinding algorithms within a geometric environment, specifically dealing with obstacles represented as rectangles. It challenges students to apply and extend their knowledge of graph search techniques to a continuous space problem. The core task involves calculating the shortest route between two points, avoiding collisions with these rectangular obstacles.
Why This Document Matters
This assignment is designed for students who are building a strong foundation in algorithms and data structures. It’s particularly relevant for those interested in robotics, game development, or computational geometry. Successfully completing this assignment demonstrates an understanding of how to adapt theoretical algorithms to practical, real-world scenarios. It’s best utilized *after* gaining familiarity with fundamental pathfinding algorithms like Dijkstra’s algorithm and heap data structures, as the assignment explicitly encourages the use of heaps for efficient implementation. It’s a valuable exercise for solidifying algorithmic thinking and problem-solving skills.
Common Limitations or Challenges
This assignment presents a focused challenge and does *not* provide a comprehensive introduction to all pathfinding techniques. It assumes a pre-existing understanding of basic geometric concepts and programming principles. The assignment also doesn’t offer pre-written code solutions or detailed step-by-step instructions; students are expected to independently develop and debug their implementations. Furthermore, it concentrates on a specific scenario (axis-aligned rectangles) and doesn’t cover more complex obstacle shapes or dynamic environments.
What This Document Provides
* A detailed problem statement outlining the scenario and objectives.
* Specific input and output requirements for the program.
* Performance expectations, including the need to handle a substantial number of obstacles.
* Guidance on utilizing appropriate data structures (heaps) for efficient computation.
* A code snippet for determining line segment intersection, useful for collision detection.
* Thought-provoking extension questions exploring variations and complexities of the core problem.