• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

JASS Classroom Brainstorming

Status
Not open for further replies.
Level 11
Joined
Feb 18, 2004
Messages
394
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?
 
Level 11
Joined
Feb 18, 2004
Messages
394
By "Handles and Memory Management" I mean a lesson covering the concepts behind pointers, how those concepts apply to the handle type, and how one has to deal with the complications of JASS' memory management. (Nulling locals to decrease the reference count and having to manually deallocate almost EVERYTHING)

As for "Triggers and Event-Oriented Programming" I mean a lesson covering the way triggers work, and some information on programming in an event oriented system. (event happens, script executes)
 
Level 20
Joined
Apr 22, 2007
Messages
1,960
Here's something simple I just wrote up for the first series of lessons. Each number designates a topic which is not necessarily covered in the sub-topics. The sub-topics are just there to specify things that are important:

1. Introduction to the concept of a function.
  • Functions to accomplish tasks
  • The concept of parameters (taking and returning)
2. Introduction to variables.
  • Primitive non-handle/code types
  • Arithmetic operations
3. Function structure and syntax
  • Developing upon parameters
  • Developing upon the use of functions (functions to accomplish tasks and yield results)
 
Level 11
Joined
Feb 22, 2006
Messages
752
I think that people who have worked with GUI before (which is probably going to be about 99.9% of the people who are going to want to work with JASS) will already have at least a basic understand of some of this stuff. For example, variable types (though not necessarily the distinctions between local vars, parameters, global vars), execution flow, if/else control structures (loops maybe to a lesser extent), and definitely event-driven programming, since in GUI literally everything responds to some kind of event.

I just think it's a good thing to keep in mind when planning on how far we "dumb-down" the explanations of these concepts. If we go too far, we will just be wasting our and the students' time essentially rehashing what they already know.

Of course they will likely have little to no idea what the syntax is for any of these things, so at least the syntax should still be covered in full.
 
Level 11
Joined
Feb 22, 2006
Messages
752
Uh...ok?

I was just saying to keep in mind the audience's prior knowledge base when designing these lessons, not to completely leave things out.

By the way, how is this going to work anyway? More specifically, who decides who's going to write what lesson? Or is there going to be one person writing them all?

And as a last thing, if this is going to work I think it's going to need a bit of advertisement. Right now it's basically half-buried in the triggers/scripts section. I completely ignored it (as in didn't notice it) what must have been half a dozen times until poot explicitly told me it was there.
 
Level 20
Joined
Apr 22, 2007
Messages
1,960
Poot just basically reopened this a couple days ago.

I'm guessing you can write whichever lesson you want to, since we aren't a big group anyway.

As for advertisement, let's get a couple lessons finished first so we know exactly how to tackle the teaching process, and then Poot can probably make a news message about it a week or so before the classroom opens.
 
Level 40
Joined
Dec 14, 2005
Messages
10,532
By the way, how is this going to work anyway? More specifically, who decides who's going to write what lesson? Or is there going to be one person writing them all?
Grab a topic you like from the Concepts sticky and/or suggest more.

And as a last thing, if this is going to work I think it's going to need a bit of advertisement. Right now it's basically half-buried in the triggers/scripts section. I completely ignored it (as in didn't notice it) what must have been half a dozen times until poot explicitly told me it was there.
It isn't displayed for people who I haven't given access to it (so until you were sent that PM it didn't exist as far as your account was concerned). When we're ready to launch it, there will be a news post and stuff.
 
Status
Not open for further replies.
Top