Day 5 Q&A¶
- 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
- 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)