Function declarations are too much for a beginner to handle, and structs right off the bat are
definitely too much for a beginner to handle.
Functions have to deal with
scope
variable declarations
returning values
as well as lots of keywords
if someone has never worked with any programming before and is even a bit afraid of doing programming as it looks scary and complicated (a lot of people are like that), doing functions right off the bat is definitely going to scare them away. Functions are the most complicated of the JASS** structures, therefore functions should be covered last. We've been covering the JASS features progressively. For example, you can't do loops until you know boolean expressions, and boolean expressions are best taught with if statements.
Week 3 is getting revamped, I came up with a different curriculum for it. Week 4 is also being changed. It'll be more than just loops =).
This is our current idea of what should be covered in week 3 with notes on each lesson
http://www.hiveworkshop.com/forums/pastebin.php?id=2x4eeg
As we cover the various elements of boolean expressions and if statements, we're going to make people identify the behavior of boolean expressions and craft boolean expressions from a set of conditions. The very end is simplifying those boolean expressions so that you aren't left with long chains of else ifs or long chains of ors/ands. Also going to introduce De Morgan's Law. That will be the only boolean algebra concept that is introduced. I'm introducing it because it is
extremely useful and
extremely awesome. We could cover boolean algebra and so on, but while I've needed De Morgan's Law for a plethora of things in JASS etc, I've only needed full blown boolean algebra once =P.
We're also going to be changing the grading.
1. do map, all problems etc, but not the project
2. turn in map
3. you get answers for problems (not graded, we just give you the answers)
4. attempt the project
5. project
is graded
We're not giving the answers outright as the lazier people will just not attempt the problems and as a result remember little to nothing =). You'll have to show that you have attempted to get the right answers =P. We will also check that you did actually work at it, not just fill in the problems with bs, lol.
We're also still debating the difficulty of the projects. We want everyone to develop their problem solving skills so that they can actually solve problems when working on their maps ; P. If they need a complicated system, they will need problem solving skills in order to architect that system and even recognize that they need it in the first place.
The projects are aimed to
1. review all content for the previous week
2. require the person to use critical thinking in order to design something using those concepts
3. come up with an algorithm/data structure within that design that they have never used before
Week 2 and week 3 have done this in a progressive manner, but doing this seems to make the projects very difficult. They are meant to be difficult, like grappling with a super nasty problem ;O. In hardcore mapping, you run into these super nasty problems all the time. However, it was not our intention to scare everyone away with the difficulty of these projects.
There are also of course more ways than 1 to do these projects, which is why constraints are introduced, so that you have to solve it using the #1 best way. Project 3 requires way too many constraints to hit that best way, so not sure what to do their =P. Not even sure how to describe the behavior of project 3, haha.
Anyways, that's the story at the moment.