If someone has a recommendation for how to build/architect large GUI applications like Photoshop. For e.g., how to think about Undo operation right from the get-go . I think that would be amazing to learn if there is a course like that.
Hey. Check out Juan Pedro Bolivar Puente's talks om value oriented design. He worked on Ableton which is a large application. He specifically speaks to Undo. He describes a much better pattern than the Command Pattern.
He also released his source for Value Oriented Data structures
Juan Pedro is a next level programmer who I think has pushed the craft forward through his work on bringing Value Oriented Design into the C++ world.
Talk I https://youtu.be/sPhpelUfu8Q
Talk II https://youtu.be/SAMR5GJ_GqA
Data Structures: https://github.com/arximboldi/immer
Application Structure: https://github.com/arximboldi/lager
Text Editor: https://github.com/arximboldi/ewig
Good luck.