Lesson plan Autumn 2024¶
- Author: Richel
- Date: 2024-09-11
Week 37¶
Suggested new schedule¶
Mu suggestion:
Day | Hours | Topic | Remarks |
---|---|---|---|
Monday | 1-6 | Risk analysis, design | More exercises, less theory |
Tuesday | 1-6 | git | More exercises, less theory. Add 'Always work in an Issue' |
Wednesday | 1-3 | TDD | Not in pair yet, consider adding pseudocode and in-code documentation |
Wednesday | 4-6 | Pair programming | In pairs from now on |
Thursday | 1-3 | Testing | . |
Thursday | 4-6 | Code reviews | Need a dedicated TA to review code |
Friday | 1-3 | Class design | More exercises, less theory |
Friday | 4-6 | Create a re-usable module | More exercises, less theory |
In the schedule to be discussed:
- Monday morning:
- Björn: course overview
- Björn: basic git
- Monday afternoon: Requirements modeling and risk assessment
- Lars: Define the project
- Lars: Make formal requirements model
- Lars: Make formal risk assessment
- Tuesday: Git setup and version control, from a reproducible research and social coding/development perspective
- Organize the project
- Wednesday:
- Richel: Test-Driven Development (TDD) and function design
- Thursday and Friday morning:
- Richel: Test-Driven Development and class design (TDD)
- Richel: Implement the project as a package
- Friday afternoon: Deployment and documentation
Week 36¶
Suggested new schedule¶
Day | Hours | Topic | Remarks |
---|---|---|---|
Monday | 1-3 | git basic workflow | More exercises, less theory |
Monday | 4-6 | git professional workflow | More exercises, less theory. Add 'Always work in an Issue' |
Tuesday | 1-3 | TDD | Not in pair yet, consider adding pseudocode and in-code documentation |
Tuesday | 4-6 | Pair programming | In pairs from now on |
Wednesday | 1-3 | Testing | . |
Wednesday | 4-6 | Code reviews | Need a dedicated TA to review code |
Thursday | 1-3 | Data structures | . |
Thursday | 4-6 | Function design | Consider adding documentation |
Friday | 1-3 | Class design | More exercises, less theory |
Friday | 4-6 | Create a re-usable module | More exercises, less theory |
List of suggested changes¶
Topic | Suggested time | Previous time | Remark |
---|---|---|---|
Risk analysis | - | Monday | not needed for shared project |
Use of ChatGPT to generate design documents | - | Monday | Not needed for shared project. No exercise |
Object orientated design | Consider Friday | Monday | No exercise. Project state on Friday gives more context |
Inheritance | Consider Friday | Monday | No exercise. Project state on Friday gives more context |
Creating a local GitHub repo | - | Monday | Not needed for shared project |
Markdown markup | Consider Friday | Monday | No exercise. Not needed for shared project |
mermaid markup | Consider for class design | Monday | No exercise yet |
put Mermaid in a README | Consider class design | Monday | No exercise yet |
optimization | - | Monday | not vital to the shared project |
documentation | Consider function design | Monday | No exercise yet |
pseudocode | Consider function design | Monday | No exercise yet. Not needed for shared project |
class list | Class design or git basics |
?Monday | Do class list before class diagram |
class diagram | Class design | ?Monday | Do class list before class diagram |
TDD | TDD | Tuesday | Before pair programming |
Pair programming | Pair programming | Tuesday | After TDD |
git merge conflicts | Monday | - | Need exercise for this |
git init |
- | Monday | Not needed for shared project, can be done on GitHub |
git branch -c |
- | Monday | can be done on GitHub |
git graph |
- | Monday | can be done on GitHub |
git diff |
- | Monday | can be done on GitHub |
git show |
- | Monday | no exercise |
git log |
- | Monday | no exercise, can be done on GitHub |
git mv |
- | Monday | no exercise |
git rm |
- | Monday | no exercise |
big code examples | - | Monday | Simplify to a 'Hello world' program |
use multiple files | - | Monday | Simplify to one file |
use big files | - | Monday | Simplify to short files |
use complex commit graphs | - | Monday | Simplify to simple commit graphs |
using more repos | - | Monday | Simplify to only use the shared repo |
using git plugin | - | Monday | Simplify by using GitHub network |
using GitHub templates | - | Monday | not needed for shared project |
using protected branches | - | Monday | not needed for shared project |
add using Issues | ? | - | We do use these in the shared project! |
using command-line | - | Monday/Wednesday | Remove if can be done with GitHub |
use git checkout |
Monday | Monday | git checkout works for older versions |
Optimization: profiling | ? | Thursday | No time |
Optimization: big-O profile | ? | Thursday | No time |
aggregation | - | Friday | We don't use it in the project |
remove deep __init__.py |
- | Friday | Not needed in the project |
Give definition of containers | Friday | Friday | No exercise yet |
Compare the types of container | - | Fridays | We use one container max. No exercise yet |
build systems | - | Friday | not needed for the project |
virtual environments | - | Friday | not needed for the project |
venv comparisons usage for different OSes | - | Friday | not needed for project |
venv usage | - | Friday | not needed for project |
In-code documentation | Consider function design | Friday | No exercise yet. |
Licensing | - | Friday | not needed for the project: we give it a license |
Static HTML website generator | - | Friday | not needed for the project |
making a package and using it | Friday | - | Need to create exercise |
Wiki | - | Friday | not needed for the project, no formal terminology |
I am happy we voted democratically on what the course goal is and what is yes/no course content.
I do feel the course has been made worse by this. These are my worries:
- We voted for the coarse goal of 'to give an understanding of formal principles of software development', instead of 'applying formal principles of software development'. I worry that we have failed to reduce lecturing and have failed to reduce lecturing useless content (there are many things I am not convinced of to be useful, even after have seen some of these topic being discussed multiple times; if something is said to be 'essential' does not convince me)
- We voted for 'Only what is used by the student project is course content, with alternatives relevant to academics provided in lecture (or extra material) to what we do'. I suggested 'Only what is used by the student project is course content' to reduce lecturing. Also here, I worry that we have failed to reduce lecturing