17. Learn principles through failures 18. Learn the class-design sequence 19. Design the immutable graph values 20. Design RoadGraph 21. Design RoutingStrategy 22. Design Rider, Driver, and RideRequest 23. Build the Ride state machine 24. Design DriverMatchingStrategy 25. Derive RideService state 26. Derive RideService API 27. Separate matching from routing 28. Protect the successful mutation boundary 29. Decide which patterns help 30. Review the final class blueprint
31. Map responsibilities to Java 32. Order a safe ride request 33. Review implementation concepts 34. Read states and named results 35. Read graph and route values 36. Read RoadGraph 37. Predict the shortest-path algorithm 38. Trace Dijkstra step by step 39. Read DijkstraRoutingStrategy 40. Read Rider, Driver, and RideRequest 41. Predict Ride transitions 42. Read Ride 43. Predict driver matching 44. Read the matching Strategy 45. Predict RideService behavior 46. Read RideService by responsibility 47. Prove accepted and rejected paths 48. Challenge routing and dispatch