--- title: VSM2022AdvPy_Discussion tags: VSM2022AdvPy --- # Brainstorming | Discussion ## Working on a Problem > How did it go? > How did you approach the problem? > Are you satisfied with your code? Explain. > How did you verify it's correctness? > What can you do to improve it? Better than expected, managed to implement a solution `permuation` helped getting anagrams Needed dictionary to Was really cool. A bit confused in the beginning Talking and research helped Some built in stuff helped, like `permutations` EN Dict for download Improvement Still problems Technical issues with interpreter. 30 minutes tricky Did not want to use permutations Wanted to use recursion Googling helped Not yet finished --- ## Working on a Problem - "Nice and Easy" - How? - Any ideas? - What works for you? Break it into smaller pieces. What are the main things we need. Want to be able to test bit by bit. Looking for tools. Try not to reinvent the wheel. Invest time in the beginning to (hopefully) save time later: do research. Before you start you really understand the problem. Sometimes: trial and error, try and see if it works. Take care to not wander off in random directions. Think of simple test cases, things that I can check by hand to verify that the output of my program is correct. Revise code, iterate, refactor - continuous improvement. --- ## Growing a Project > What are typical challenges you encounter? > What is important to you? Everyone: - Name one (!) aspect - Why? - How? *Discussion* For me a project looks like this: - Numerical experiements - Theoretical considerations - Tex File (Paper?) - Scripts - Outputs (Images, Tables) Challenge review Git history How to collaborate with collaborators that do not use Git When is "something" a "project"? One big project (database stuff) Learning: - Document requirements - Requirements change - Understanding of the project evolves Start small Write everything Then later on divide in small units Make code flexible --- ## Scientific Python Landscape Let's go for a walk. > How does it look like? Everyone: - What is at the core? - Which libraries do you use? - How are they related? ### Your Dependency Graphs ```plantuml @startuml digraph Packages { PackageA -> PackageB [label="depends on"]; } @enduml ```