# Learning agreements Scientific Programming
## Why are we here?
- I’d like to learn to use / get used to using Git on a every day basis.
- I’d like to learn about new concepts which I haven’t heard of before but might likely be helpful in the future (like parallelizing code).
- have another reason for frequent coding exposure so that I develop a wider base of knowledge
- be able to troubleshoot problems occurring while coding without hesitation
- I would like to learn more about performance, because I have little knowledge about optimizing the code I write.
- Getting to know open-source projects better, how to interact with them and how the community works with these projects would be useful and interesting to dive into.
- Improve the quality of my own code
- improve on object orientated programming essentials
- I´d like to learn how to program websites.
## How will we learn?
- Regular homework / tasks
- Bigger projects (multiple weeks) are also really nice ways of learning
- Parallel coding on another project (e.g. thesis)
- NO exam
- having lots of examples that demonstrate a given concept clearly.
- learning from more experienced programmers
- learning from different sources (this course, youtube,...)
- having notes that I can go back to if I have problems
- going to the lecture regularly
- a hackatron like exam could be stressful fun too though.
## What will demonstrate that we achieved our goals?
- I managed to solve the weekly tasks by myself
- I started using Git for my work (also outside this class)
- I did the analysis for my master thesis without to much frustration
- I finally feel fit to tackle more advanced coding problems
- I can answer questions in class.
- I am happy with the project I do and feel I can use the stuff later.
- Never have to do this again: https://xkcd.com/1597
- Having a subjective feeling that my code is more elegant than before
- I have more confidence in my own programming skills
- I finish (i.e. have a stable version) one Project
- try out new stuff on my own
## Feedback
- Please no written exam
- Can we have a high-level introduction to machine learning?
- Different licenses.
- How to search smartly for packages that already exists.
- How to work smartly with a complex problem. What do I google, when do I start programming, when should I work with pen and paper, etc.
- Can we have code reviews? How do I know/judge if my own code is “good”?
- Parallelizing + code performance: I found this PRACE course to be a useful resource,(with free access for a limited amount of time):
https://www.futurelearn.com/courses/python-in-hpc
- Insights from inclass disussions
- do some “real life examples” of coding in atmospheric sciences
- to learn how to code interactive tools like how it’s used in your OGGM
- learn how to run other scripts (e.g. fortran) from python (probably a internet search will do...)
- see a code as a group and see the weaknesses and strengths; less than starting from scratch.