# 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.