- [ ] Invite students to use the documentation (`?` in the REPL / docs tab in Pluto) - [ ] Present intro tutorial before the homework - [ ] Say that just because checks are passing doesn't mean the answer is correct - [ ] Add question numbers - [ ] Explain what an empty struct means + how to compare mutable and immutable structs (`==` vs `===`) - [ ] Clarify inner / outer constructors - [ ] Note on matrix indexing to prevent them from using linear indices - [ ] Give a reference for various kinds of type dispatch syntax (`f(x::X)` vs `f(x::Y) where {Y<:X}`) - [ ] Specify expected output for `attack(::Corgi, ::Pokemon)`, and state that we do not accept catch-all methods (code should rely on dispatch instead) - [ ] Define what we mean by method ambiguity and explicitly lead students to find and resolve it - [ ] Fix `check_defense_philip` check - [ ] Explain how boundaries should be handled in the `step!` function - [ ] Make it clear that the attacker cannot attack itself
?in the REPL / docs tab in Pluto)==vs===)f(x::X)vsf(x::Y) where {Y<:X})attack(::Corgi, ::Pokemon), and state that we do not accept catch-all methods (code should rely on dispatch instead)check_defense_philipcheckstep!function