Skip to content

Lesson plans

  • Autumn 2024, around April

Progress

When What Status
TU 13:00-14:00 Pair programming 1 Draft of content, draft of exercises
TU 14:00-14:45 Pair programming 2 Draft of content, draft of exercises
TU 15:00-15:45 TDD 1 [1] Draft of content, draft of exercises
WE 10:15-11:00 Switch branch No content, draft of exercises
WE 13:00-14:00 Merge, PR, review No content, draft of exercises
WE 14:15-15:00 formal testing 1 [2] Draft of content, draft of exercises
WE 15:15-15:45 formal testing 2 Draft of content, draft of exercises
TH Data structures Draft of content, draft of exercises
TH Algorithms Draft of content, draft of exercises
TH Optimization Draft of content, draft of exercises
  • [1] This hour falls off at the end of the day
  • [2] Need more hours of TDD

TODO:

  • [ ] Tie exercises to course project
  • [ ] Go through material again

Suggest course schedules

These are, I'd say, the dependencies in the course:

flowchart TD

  classDef bjorn_node fill:#ddf,color:#000,stroke:#00f
  classDef lars_node fill:#dfd,color:#000,stroke:#0f0
  classDef richel_node fill:#fdd,color:#000,stroke:#f00

  subgraph day_1
    pair_programming[Pair programming]:::richel_node
    git_basic[git basic workflow]:::bjorn_node
    class_design[Class design]:::lars_node
  end
  subgraph day_2
    class_diagram[Create project's class diagram]:::lars_node
    tdd[TDD]:::richel_node
  end
  subgraph day_3
    testing[Testing]:::richel_node
    code_reviews[Code reviews]:::richel_node
    git_branches[git branches]:::bjorn_node
  end
  subgraph day_4
    data_structures[Data structures]:::richel_node
    algorithms[Algorithms]:::richel_node
  end
  subgraph day_5
    modular_programming[Modular programming]:::lars_node
    optimisation[Optimisation]:::richel_node
  end


  class_design -.-> git_basic
  git_basic <-.-> pair_programming
  class_design <-.-> pair_programming
  tdd <--> pair_programming
  git_basic --> git_branches
  pair_programming --> code_reviews
  git_branches --> code_reviews
  class_design --> class_diagram
  class_diagram --> tdd
  git_basic --> tdd
  tdd --> testing
  git_branches --> testing
  code_reviews --> data_structures
  testing --> data_structures
  testing --> code_reviews
  data_structures --> algorithms
  algorithms --> modular_programming
  algorithms --> optimisation

The schedule I suggest:

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)
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-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
  • I think we should always work in groups as it is recommended by the literature, unless there is a good reason not to. Among others, these are best practices 'Principle 4: Must encourage teamwork and cooperation among students' [Saiyad et al., 2020] and 'Promoting group interaction, collaboration, and teamwork' [Fatimah et al., 2020]
  • I think class design should go before git, as this follows the 'from big to small' idea
  • I enjoy 1 full day between git basics and git branches: this gives a learner some time to get to feel git

Principles from [Saiyad et al., 2020]

Figure 1 from Saiyad et al., 2020

  • Principle 1: Teaching–Learning methods must match curriculum and objectives
  • Principle 2: Must encourage synchronous and asynchronous teacher–student interaction
  • Principle 3: Promote higher order thinking skills and communication skills
  • Principle 4: Must encourage teamwork and cooperation among students
  • Principle 5: Must encourage active learning
  • Principle 6: Must encourage development of self-directed learning
  • Principle 7: Must provide opportunities for online summative and formative assessment
  • Principle 8: Must have an inbuilt mechanism for prompt feedback
  • Principle 9: Must encourage effective time management and timely task completion
  • Principle 10: Must communicate high expectations from each stakeholder
  • Principle 11: Must respect diverse talents and ways of learning
  • Principle 12: Must have mechanism for monitoring development and mentoring

List of Pedagogical Skills from [Fatimah et al., 2020]

Effective online instructors should understand the fundamentals of online teaching and pedagogy. They must demonstrate this understanding through applying a large number of principles and strategies. These principles and strategies include:

  • Learning theories, such as learning styles, the adult learning theory, the learner-centered approach, and collaborative learning;
  • Designing and implementing appropriate instructional strategies, as well as classroom assessment and student engagement techniques;
  • Organizing and facilitating students’ participation and providing guidance and support as needed;
  • Using criterion-based assessment to evaluate individual and group performance;
  • Motivating students and showing enthusiasm and interest;
  • Encouraging knowledge construction based upon learners’ prior knowledge and life experience;
  • Fostering learners’ self-assessment and reflection; and
  • Promoting group interaction, collaboration, and teamwork

References

  • [Fatimah et al., 2020] Albrahim, Fatimah A. "Online teaching skills and competencies." Turkish Online Journal of Educational Technology-TOJET 19.1 (2020): 9-20.
  • [Saiyad et al., 2020] Saiyad, Shaista, et al. "Online teaching in medical training: Establishing good online teaching practices from cumulative experience." International Journal Of Applied And Basic Medical Research 10.3 (2020): 149. here