# Day *5* Q&A <!--- I remind you that these documents will be uploaded to the repository branch that will be created and that the NBIS training code of conduct should be followed. Be respectfull to eachother so you do not edit others posts. Hack md alows for simultaions editing. --> <!--- Reminder do not edit anothers post, please use a fresh paragraph when typing hack md is a simultations editing tool--> - Zoom: https://uu-se.zoom.us/j/66409709879 Passcode: 583470 # Optimization ## Q: What would be **bad advice** to improve the run-time speed of a program? - Assume you can put everything in memory - Store intermediate/stepwise parameters - Use many for-loops in Python - Implement a GPU-suitable version of your code anyways - Buy a better CPU - Comment out lines that take a lot of time/memory- Hard - too many print - Hardcode end result - don't bother looking for a function that already exists, your own will always be faster - you can do it simpler without using OOD - Just write a lookuptable for it - Remove all tests to gain speed (Lars) ## Q: What would be **good advice** to improve the run-time speed of a program? - [good advices here] - (Python) Rely on NumPy for operations involving matrices - parallelise - Use a compiled language rather than an interpreted language - Investigate code that takes most time - Keep it simple -> efficiency - parallellize - Test code regularly - identify the bottle neck (most time consuming part) and focus on optimizing that - interact with users as little as possible ## Q: When to optimize for speed? - [good advice here] - . - . # What was the most useful/interesting in the course? - Design and pairing are fun. - . - I haven't thought so much about using testing and TDD before. - Social usage of git with pull requests and issues, as well as tools for continuous integration. Also nice with good practices for clarifying/organizing the tasks with UML - design, UML, calculate big O,Git +1 - social programming good - TDD +3 - Planning the software +1 - SDLC - Social programming +3 - TDD and planning ahead of coding +3 - Development models - Most parts of the git +1 - requirement analysis ## Questions above this line ----------------------------------------------------------------- # Day 5 Retrospective Only Day 5 here :-) Please, no pointing fingers (I am sure Jon would want me to say that :-) ) ## What went well? - Pairing works much better +1 - Using HackMD for UML was very nice. +2 - learning what modules are - nice too have R examples +1 - Using HackMD to code rather than screen sharing +3 - Activity diagram +2 - Once it worked, plantUML in VS code was very nice ## What held us back? - Still material and exercise description - The presentation is less informative to follow on - did not finish all of morning lecture +1 - some changes are not staged after Git pulling. No change.. - More info about use-cases/activity diagrams. Use, differences etc. - morning exercises rushed - maybe somewhat unclear difference between use-case and activity diagrams +1 - UML issues +3 - too little time for material and exercises of morning session - profiling part was a little diffuse ## What can we improve? - spend more time on use-case and activity diagrams +3 - provide the uml code for diagram examples in lecture - Written instructions for exercises - talk more about design patterns +1 or maybe share some nice tutorials - Have a mini start-to-end exercise after the course where we can spend half the day running through a small piece of coding. Practise all of it. - Be clearcut on what to do in the exercise. - examples for optimisation showing well- and poorly-optimised examples +1 # Course Retrospective Here we have a Retrospective on the course as a whole. Please, no pointing fingers (I am sure Jon would want me to say that :-) ) ## What went well? - Pair programming +3 - Lots of exercises +2 - Windows XP background -1 - Github workflow (CI) +2 - Hand-on demos that can be used in the future +3 - Provided an opportunity for more social programming, including working in a live github repository where other people are working +1 - Frequent breaks +3 - Time for questions and answers - teachers are enthusiastic and seem to know what they're talking about - Good level of social interaction +1 - Well expereicned teachers +1 - chatting during breaks +1 - cats +4 - providing references ## What held us back? - Lars rushed through the last parts of his lectures - Too low tempo, especially in the lectures. +1 - Some excercises could be explained better. We spent a lot of time just discussing what we were supposed to do. +1 - Unclear desciption and explanation of exercises +5 - (Still) too many lectures -- Zoom fatigue - Some parts of the pair programming seems not needed - Presentations - Balance between lectures and exercises. - Skipping over content throughout the course; it gets confusing - might be helfpul to do the git stuff all together - too often told to not point fingers :finger_gun: - less reading documents after Wed. - too manny cats -6 - Different levels of preparation, everyone does not fulfill course prerequisites or preparations from last friday ## What can we improve? - If exercises or examples are related with published papers - Personally, I felt that the course was held at too low level. I was expecting more details and technical discussion, especially in the algorithm and data structure sections and I was familiar with most of the course content. In the future I would suggest that you should make it more clear what level of material to expect. +1 (but in the opposite direction - found a lot was very technical) - More focus on a project to try out all the things taught in the course. Design -> Tests -> Implementation -> Iterations - If there is an opportunity giving small group project and make presentation at the final day - The course website should be keep maintaining - No need to attempt completeness, one week is not enough -- material on top of what is discussed in documentation on GitHub -- more exercises, less lectures - provide the correct/complete presentation PDFs on GitHub - The coures was 'top-heavy'. The beginning (in my opinion) should be more interactive and with more utilities, like git, being taught. After the first day, then you can bring in more and more theory. - I think when it is online, the course is limited in several certain ways. MAybe consider on-sote class? - it would be nice to survey attendees beforehand for their favourite languages and experience with specific parts of the course - e.g some are gitmasters, some have never used git before and found it confusing af - and tailor classes appropriately - Show more "good" github repos - 🐱🐱🐱 more cats 🐱🐱🐱 +2 - additional animals +3 - Additional materials - more dogs :dog2: - more on design of larger program projects - More examples of how these things are practiced in an academic setting - if possible, work only on example project (no planets,no bacteria)