Code Combat Posters and Curriculum (Standards, Assessments, and Lesson Plans)


Curriculum for Code Combat

Curriculum being: A list of standards, a plan to meet the standards, and assessments for how we know the standards were met. Hit the like button if you like them

Python Curriculum
Course 1 / World 1 / Hour of Code Word / pdf
Course 2 / World 2: Word / pdf
Course 3 / World 3.1: Word / pdf

Verbose Description

It first defines a set of measurable standards based on what students can do. I did not use preexisting standards because there aren’t many for programming and code combat teaches in a different order than most other coding sites.These custom standards align with what Code Combat teaches, so by the end of the Unit the standards are met.

It then states it will use 46 practical assessments to determine if they standards are met
A pratical is where students are asked to use what they learned a real or pratical setting. It is sometimes used for skills based subjects. The pratical assessments are then declared to be the levels (19 for Unit 1 Kithgard and 27 for unit 2 Forest). The lesson objectives are written in such a way where you cannot beat the level without completing them.Thus assessment is graded by the computer and is necessary for continuing on to the next level.

The Curriculum then states it uses Standards Based Grading, which gives a grade on if the standards of met. As lesson objectives are aligned to standards and our assessments cannot be completed without completing out lesson objectives, by completing the levels we both achieve our standards and can use levels beat for grades and only need 1 set of paperwork to both justify grades and show that students complete standards.

Note it is possible to see students code for evidence of completed learning simply by clicking on the green numbered boxes in in teacher view.

Teacher View

Anyway did all this because we have to get this by the accreditation team coming this spring. We will see if this passes. It did get past the pricipal. :smile:

Oh and the lesson plans borrow heavily from the level notes and the teacher’s guide.

I made some changes for rubicon on the pdf version. Now includes lines of inquiry. Old standards became skills and created standards which are just a collection of skills 1/22

Presentation slides and curricular materials for code combat
New Teachers Guide
Prime pathing, help!
Harrowland - conceptual issues, multiple loops
Brewball review
Presentation slides and curricular materials for code combat
Presentation slides and curricular materials for code combat

Python Poster (permanent link)


  • vectors! (updated!)
  • counting occurrences (decoy drill)
  • finding best
  • types
  • filtering by type
  • coordinate system
  • lists and arrays
  • checking by type
  • counting to 4 with arrays
  • counting to 5 with while
  • comparing coordinates (aka thunderhooves)
  • syntax in loops
  • definitions


Thank you very much for sharing your amazing posters, John @Hinkle ! Could you share PowerPoint file for Updated Python Poster too? I ask that because I want to translate it.


Nice. Later you could add some more basic algorithms. You already have counting and iterating over a list.

select from a list:

for(i in myList){
    //if the current item is 'ok'
    //for example if it is not an yak

find the best value:

//best_value = Infinity; //if you want to search for minim
for(i in myList)
    //compute the optimum you are searching for
   // for example, most health
    value = myList[i].health;


Here is the PowerPoint version of the document.

Poster Editable PowerPoint

After you finish the translation can you post it back to the forums?



Thanks, I have added a section on filtering and some common enemy types (which is actually going to be useful considering I added it only so I didn’t have to filter out my clip-art page).


By the way, at the higher level, some students might ask themselves:
"I know about the soldier.findNearestEnemy() and but are there any methods we do not know about?"
Something like soldier.launchUltimateCombo() ?

Well, for every object in the game you iterate over all its properties (JavaScript):

var  i;
for(i in soldier)

They are not documented but there are self-explanatory. For example, did you knew that each soldier has its own soldier.distanceTo() method?


Added it. I actually didn’t know you could use a for loop to go through the properties and methods on an object. (I’m actually pretty new to coding). Very useful.

Also does anyone know what they unit’s type is:

I am pretty sure it’s not ogre (which is named on the thang editor)


ya its ogre thats what i always use ogre
its for both male and female ogres


Of cause! Here are:

Russian CoCo JS Poster PowerPoint

Russian CoCo JS Poster PDF

And I will add translated Python Poster later.



I made an update to the ppt, there a few more slides on this one
coco poster python pptx

You should probably put the translated posters in a new post in Russian, to make it easier to find.


I don’t know if there is much interest from anyone in a js (or other programming language poster). I am not planning on making one, but if you would like one to exist here are two options:

  1. Feel free to download the pptx update it for js and put it back on the forums
  2. Send me the js code (either as a message or dumped on the forums) to copy and paste to put on the poster.


Thank you Hinkle! I am definitely interested in a JavaScript poster and downloaded your first one. I will try to update the poster but my knowledge in JavaScript is limited for now. I greatly appreciate all of your efforts.


Oh, are there any requests for concepts to put on the posters?
I sort of add things as I discover they are needed.

And could someone check my stuff on vectors to make sure it is correct?


Page 14:
The value Vector(x,y) describes a vector starting from the origin (0,0) and ending at the point (x,y).
Because of this, when working with vectors you:
1 Transform your (x0,y0)->(x1,y1) vectors into origin vector (0,0) -> (x1-x0,y1-y0) vectors

#The starting point of the vectors is shifted from this.pos to origin (0,0)
metoyak= Vector.subtract(yak.pos,this.pos);

2 Manipulate these vectors

#well, computing yaktome directly is faster,
#but for the purpose of instruction this is much clearer

#we get the vector going into the opposite direction:
#vector addition

3 Transform them back from origin vectors (0,0)->(x2,y2) into (x0,y0)->(x2+x0,y2+y0)

direction = Vector.add(direction,this.pos);

Check this drawing also:


Check my array methods analysis at:
Not sure if it is beginner stuff.


If you’re interested I can give you the vectorial algorithm that computes the minimal pass-by distance between a point and a moving object. Handy if you want to know if those doom robots are going to hit you or not.


Vector.rotate makes a lot more sense now.

I will try to work on my own algorithm for avoiding the doom robots, but when I get stuck I will ask for help.

Newbie just getting started

Update to posters.(see post 2) Fixed things on vectors and added disclaimer that vectors representing direction would be shown coming from objects, as it makes things easier to visualize. Code on page 14 works, except a vector.subtrack. I may fix that later. I also fixed the file name, so it no longer has a date in it.

Also added things for decoy drill.

Also @a1ip and @Brian if still need the updated pptx, let me know. If you had to stop on the project because of life, that’s fine too. (I still have to get around to starting the course 4 plans)


Hi John
I’m busy updating Code Combat materials for use with students as levels and naming has changed in Code Combat now. i.e. ‘self’ = ‘hero’. Would you mind if I used some of your work (with attribution) to update the teaching materials please?