Skip to content

Day 5 Q&A

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)