I believe that within the first few lessons, a few things must be at least somewhat touched on:
expressions,
predicates,
operator precedence, and the concepts behind
type.
Therefore I would suggest somewhat combining basic conditional
control flow with functions and basic variable use. Perhaps a set of 3 or so introductory lessons, named something such as "An Introduction to JASS Programming" which cover the basics of the things I have mentioned. Its rather hard to split up such fundamentally intertwined concepts, but if anyone can come up with a good way to, I'm all for it.
Beyond that, I would say teach iterative control flow and arrays, and
then cover the complexities of handles. Then perhaps teach about time-based code, and either in the same lesson or another, teach of triggers and event-oriented programming. Perhaps follow up with a brief summation and review lesson on basic spell design, with the homework being a basic spell.
So my suggested lesson plan would end up looking something like:
- Introduction to Programming
- Functions
- Expressions
- Predicates
- Operators
- Variables
- If-Then-Else control flow
- Etc.
- Loops and Arrays
- Handles and Memory Management
- Timers
- Triggers and Event-Oriented Programming
- Spell Design
Things such as code optimisation and efficiency can come later, when basic coding is already understood on a sufficient level to begin 'cutting away the fat'. Maybe after or even before that, get in to some vJASS specific features. (Or JASS features which vJASS makes usable, such as global constants.)
Others thoughts on this?