Week 5: Best Practices (Teaching Notes)
Time (start) | Duration | Topic |
---|---|---|
00:00 | 10 min | Introduction |
00:10 | 20 min | Technical setup |
00:20 | 20 min | Programming |
00:30 | 20 min | Teamwork |
01:10 | 10 min | Wrap-up |
01:20 | 80 min | Overall |
- We should take notes on the work status discussion
- Rationale to proceed from technical to teamwork: Helping students overcome technical issues is one of the preconditions to working together in a team.
Approach:
- Discuss where students searched, and how to proceed (do not provide easy solutions)
- Ask students to explain how they currently understand the task, and where they would search
- Key task: facilitate self-organizing, understanding code
Introduction
- We encourage you to share challenges/errors/lessons-learned (without evaluation or judgment)
- We will not hold errors against you - on the contrary, we recognize it as a contribution if you articulate challenges or share solutions
Technical setup
Address questions as they come up (extend this part of the documentation for recurring issues).
Open questions
See rustpad suggestions
Programming
- A walk-through explaining colrev search and SearchSources (showing the changes in settings and records retrieved), and guidelines in testing code would be helpful.
Open questions
See rustpad suggestions
Teamwork
- pre-commit hooks (code quality) and tests (check whether it runs on all branches)
- Commit practices (atomic, no unrelated materials)
- Remember to sync regularly between remotes/origin and your fork
- Refresh skills related to Git, gitk, fork, using of branches/pull-requests, issues, and merging.
Branching strategy (= task-splitting strategy)
- Skeleton (existing or new package?) - draft method signatures (e.g., accepting a dictionary, defining a dictionary at the beginning)
- Use branches to test different options
- Possible task splitting strategy: search / load / add_endpoint
- Update the docs
class XY:
def __init__(self, ...):
...
def add_endpoint(self, ...):
...
def load(self, options) -> dict:
options = {"query": "term"}
print('Started search')
return {...}
def search(self, ...) :
...
if __name__ == "main":
search()
Call the module as a script using
__name__ == "main"
andpython module_name.py
Problems within teams
- No clear roles - which roles should exist?
- Ask for challenges, offer help
- Mention that we will check Git contribution (fair effort of all team members)
- Usually, we give one grade per group, but groups can raise challenges (allow us to help - last resort: different grades for group members, giving a bonus to those who do more)
Open questions
See rustpad suggestions
Wrap-up
Encouragement (remember):
- Challenging task
- We recognize your efforts working in a complex environment
- We are here to help
- All groups completed their projects successfully in the last projects
TO DO after the session
Help groups to “fix” main when necessary, using git reset --hard
and git push -f