3.3: inappropriately hard/missing info? #430
Replies: 3 comments 2 replies
-
I also think it needs to be replaced. One thing you didn't mention is how much easier many of these are with lists. I actually replaced the 4.1 lab with a redux of some of 3.3 but with lists. I give them a leap year predicate as part of the starter code, among other things. |
Beta Was this translation helpful? Give feedback.
-
Lab. |
Beta Was this translation helpful? Give feedback.
-
THANK YOU! This is the third year I've taught this course and I've always disliked the way this unit is constructed. If we show students how to make custom blocks in 3.1, why is there a massive detour to physics simulation in 3.2 that doesn't make use of custom blocks? Then 3.3 has the issues you pointed out. Just changing the order of the lessons would be a massive improvement. Lab 3.1 first, Part 1 of Lab 3.3 second, Lab 3.4 third, Part 2 of Lab 3.3 but only exercises 1 and 2 forth, and finally Lab 3.2, but altered to make use of custom blocks and serve as a launching point for the platformer lab. |
Beta Was this translation helpful? Give feedback.
-
Date math and civil time are famously pernicious things, where novice developers think they can just gin up their own implementation because how hard can it be, and they promptly learn why we have libraries for this stuff. And true to form, this lab is a lot harder than it looks. I had the pleasure of working with a longtime test owner of the calendar in Windows and IIRC she gave a pretty interesting talk on testing that used it as an example. Look up "inter gravissimas" (the papal bull that converted from Julian to Gregorian calendars) and think about the test cases that adds. The Windows calendar APIs do handle 1582 (and years preceding) correctly.
x mod y
block, which has not been introduced yet, is not mentioned in lab notes or lecture, and is not the thing most students will be able to intuitively apply based on their math training. The instructions should explain and apply thex mod y
block explicitly.day x of year y
block is impossible without duplicating code in previous blocks. Since 3.4 is the lab that introduces predicate and reporter blocks, the "is leap year" and "days in month" blocks are both Command blocks that justsay
their results, so you can't make use of them inside of yourday x of year y
block, but you absolutely need their logic. This heavy reuse is likely to be discouraging to students, and the counting off of remaining days (but look out for leap years!) is a pretty tricky algorithm for where students are at this point. I would recommend this as a bonus problem at best, again, unless I'm missing a pretty major trick.days in month
and a duplicate ofis leap year
to do this without the benefit of the reporter/predicate blocks the next lab introduces. This is unreasonably hard/tedious for the level of this course, especially when the next lab is about to introduce a tool that makes the problem vastly less annoying. I'd drop this entirely and treatday x of year y
as the bonus content, especially since the core algorithm isn't much different than the one you use there.Beta Was this translation helpful? Give feedback.
All reactions