Meeting 2024-02-21¶
- [Richel, 5 mins] Discuss the word 'theoretical':
- the content of the course can be as practical or theoretical as Lars wants it to be. I have no problem with content being about theory.
- teaching time consists out of lecturing and exercises. Here I misused the terms 'theoretical' for 'lecturing' and 'practical' for 'exercises'. Here we know that whatever the content is, there must be exercises, see among others [Bell, 2020] for an evidence-based 5 step model (1. Prior knowledge, 2. Present, 3. Challenge, 4. Feedback, 5. Repeat), that overlaps with [Hattie, 2008].
- We agree :-)
- [Richel, 5 mins] The course goals use 'understand' a lot. This is commonly mapped to the one-but-lowest level in Bloom's taxonomy (Wikipedia: https://en.wikipedia.org/wiki/Bloom%27s_taxonomy#Cognitive_domain_(knowledge-based), see 'Comprehension')(pretty picture: https://www.alfaandfriends.com/wp-content/uploads/2020/10/revised-blooms-taxonomy.jpg). Is this word really properly chosen? If not, could we use the right verbs? I feel we do aim at higher levels, but maybe I should change my teaching. In any case: how do we test for this level being achieved (spoiler: exercises)?
- We tend to drift to the Apply level, yet also sometimes to Design. Some of us try to be more precise in writing down teaching goals.
- We (intend to) teach at the Apply level and if there is more time, we go up higher
- [VOTED] Vote for using MkDocs
-
[Björn, 20m] Discuss schedule below
- Examples:
- If two teacher on one day, we all agree to mix up the day itself
- Merging Wed somehow: yes, will work!
- shortening Thu if possible?: done!
- shortening Fri if possible: done!
- this is to fit with wrapping-up of project: done!
- Examples:
-
ToDos:
- We are basically two teachers per day. Let's plan for 2-person meetings!
- Björn
- Lars
- Richèl
Schedule¶
-
Remember: The initial aims for the course
- give scientists with some experience in programming and scripting:
- an understanding of the underlying principles of software development, design, and programming.
- strengthen the understanding of:
- more advanced programming concepts
- ability to produce more reusable scripts through modular programming
- enable a better understanding of how to evaluate a script or programs performance.
- encourage the use of software development tools, like:
- Unified Model Language
- Git and Github
- convince the benefits of sharing and social coding
- give scientists with some experience in programming and scripting:
-
So... practicals are very important but also the theory of whats and whys
Proposed schedule Björn modified from Richèl's, see below¶
Day | Time | Teacher | Subject |
---|---|---|---|
Monday | 09:00-12:00 | Lars | Parts from Björn's intro and Class design (in groups, on repo, using web interface only) |
Monday | 13:00-16:00 | Björn | Start project git basic on documents (no coding?) (in groups, on repo) |
Tuesday | 09:00-12:00 | Lars | Create project's class diagram (using git) |
Tuesday | 13:00-16:00 | Richel | pair programming + TDD |
Wednesday | 09:00-10:00 | Björn | understand git branches, git merge |
Wednesday | 10:15-11:00 | Richel | apply git branches |
Wednesday | 11:15-12:00 | Björn | understand git pull request with code review |
Wednesday | 13:00-14:00 | Richel | apply code review |
Wednesday | 14:15-15:00 | Richel | understand TDD (+data structures) |
Wednesday | 15:15-15:45 | Richel | apply TDD (+data structures) |
Wednesday | 15:45-16:00 | Richel | retrospect |
Thursday | 09:00-12:00 | Richel | Data structures (+ algorithms) |
Thursday | 13:00-16:00 | R (+M) | Algorithms + Optimisation |
Friday | 09:00-12:00 | Lars | Modular programming deep |
Friday | 13:00-16:00 | Björn | Deployment |
- Monday (Björn and Lars together)
- overview
- Lessons
- Less "what is programming/scripting"
- SDLCs
- risk analys
- modules intro
- oo intro (students ready for Tue morning)
- (paradigms/formalised devel)
- tools (all presented) [name=Björn]
- Activities
- discussions
- Lessons
- Start project with planning
- Week Project with interspersed theory
- initiate git/github [name=Björn]
- UML, (pseudocode), design
- object (early process)
- initial documentation (how) [name=Björn]
- Week Project with interspersed theory
- overview
-
Tuesday (Lars and Richèl together) (+ Björn?)
- Class diagrams (45 theory)
- reproducibility (part of everything) ([name=Lars] and all)
- sharing etc
- Pair programming
- TDD (also overview of testing?)
- Activities
- coding
- Activities
-
Wednesday (Richèl and Björn together)
- git branches (merging, issues, pull requests)
- activities
- features?
- activities
- More TDD (??) + code reviews (issues/pull requests)
- These can be more or less merged?
- Q: How much time is required here?
- Can we move something from the last days here?
- (Data structures)
- git branches (merging, issues, pull requests)
- Thursday (Richèl alone?)
- (Data structures)
- Algorithms
- Optimisation
- (Modular programming)
- Friday (Lars and Richèl) (+ Björn?)
- (Modular programming)
- Packaging, virtualenv (do it!)
- Deployment
- Packaging, virtualenv (do it!)
- (Wrap up with documentation and package)
- (Modular programming)
Proposed schedule Richèl¶
Day | Time | Teacher | Subject |
---|---|---|---|
Monday | 09:00-12:00 | Lars | Class design (in groups, on repo, using web interface only) |
Monday | 13:00-16:00 | Björn | git basic (in groups, on repo) |
Tueday | 09:00-12:00 | Lars | Create project's class diagram (using git) |
Tueday | 13:00-16:00 | Richel | pair programming + TDD |
Wednesday | 09:00-12:00 | Björn | git branches |
Wednesday | 13:00-16:00 | Richel | TDD + Code reviews |
Thursday | 09:00-12:00 | Richel | Data structures |
Thursday | 13:00-16:00 | Richel | Algorithms |
Friday | 09:00-12:00 | Lars | Modular programming |
Friday | 13:00-16:00 | R (M) | Optimisation |
- Abbreviations: algos = algorithms, DP = Design patterns, DS = data structures, optimi = optimization, social = social coding, TDD = Test Driven Development
- [name=Lars]:DP should mention refinment optimization of design through DP