---
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
```