{% extends "templates/base.html" %}
{% block content %}
    <div>
    	<a name="top"/>
    	<menu>
    		<li><a href="#top">Top</a></li>
    		<li><a href="#grammar">Rule language</a></li>
    		<li><a href="#states">Implemented states</a></li>
    		<li><a href="#api">API documentation</a></li>
    		<li><a href="#teachers">For teachers</a></li>
    	</menu>
    	<hr/>
		<div><a name="parser">&nbsp;</a></div>
    	{{parser|safe}}
    	<hr/>
 		<div><a name="states">&nbsp;</a></div>
	   	<menu>
    		<li><a href="#top">Top</a></li>
    		<li><a href="#grammar">Rule language</a></li>
    		<li><a href="#states">Implemented states</a></li>
    		<li><a href="#api">API documentation</a></li>
    		<li><a href="#teachers">For teachers</a></li>
    	</menu>
    	<hr/>
    	<h2>Implemented states</h2>
    	<p>As it says in the rule language documentation, above, you can use
    	any sequence of alphanumeric characters you want as the name of a state  
    	- you can call it whatever you like. However, if you use state
    	names that there aren't already tiles for, and aren't already classes
    	for in the CSS file, your states won't be displayed nicely in the
    	<a href="{{servlet-context}}/">World</a> display. The states for which
    	there are already tiles are:</p>
    	<ul>
    	{% for state in states %}
    		<li>
    			{{state}} 
    			<img src="{{servlet-context}}/img/tiles/{{state}}.png"/>
    		</li>
    	{% endfor %}
    	</ul>
    	
		<div><a name="api">&nbsp;</a></div>
    	<hr/>
    	<menu>
    		<li><a href="#top">Top</a></li>
    		<li><a href="#grammar">Rule language</a></li>
    		<li><a href="#states">Implemented states</a></li>
    		<li><a href="#api">API documentation</a></li>
    		<li><a href="#teachers">For teachers</a></li>
    	</menu>
    	<hr/>
    	<h2>API documentation</h2>

		<p>If you're adventurous you may want to modify the MicroWorld engine
		itself. To do that you'll need this documentation.
    	
        <ul>
        	{% for component in components %}
        	<li>
        		<a href="{{servlet-context}}/docs/{{component}}/uberdoc.html">
        			{{component}}
        		</a>
        	</li>
        	{% endfor %}
        </ul>

		<div><a name="teachers">&nbsp;</a></div>
     	<hr/>
    	<menu>
    		<li><a href="#top">Top</a></li>
    		<li><a href="#grammar">Rule language</a></li>
    		<li><a href="#states">Implemented states</a></li>
    		<li><a href="#api">API documentation</a></li>
    		<li><a href="#teachers">For teachers</a></li>
    	</menu>
    	<hr/>
       <h2>For teachers</h2>
       <p>MicroWorld was written in the hope that it would be of use for teachers,
       particularly teachers in primary schools. The reason for attempting to write
       a very simple rule language was that young people would be able to create
       their own rules and rule sets.</p>

       <h3>Classroom setup</h3>
       <p>MicroWorld will run on a Raspberry Pi, and I plan to produce a 
       downloadable SD card image which auto-runs it. One ideal classroom setup
       would be to have one Raspberry Pi running MicroWorld to every group of 
       two or three children.</p>
       <p>MicroWorld will also run on any ordinary PC, including Windows, 
       Macintosh and Linux machines. I plan to produce a packaged installer
       for each operating system.</p>
       <h4>Servers and clients</h4>
       <p>MicroWorld is a web-app, which means it runs in a web server and the
       user interface is a web browser. It would be possible to arrange a 
       classroom with one copy of MicroWorld on a single server, and each child's
       machine running MicroWorld from that single server.</p> 
       <p>However, many users accessing the same server at the same time may 
       lead to poor performance. 
       Check performance on your system before introducing a class to it, and if in doubt,
       running a separate copy on each machine used by children may well be more
       satisfactory.</p>
       <p>If many users are using the same shared machine, you should make sure
       that they don't use the 'original' or 'med' versions of the Great Britain 
       and Ireland map - both of these are big, and performance will inevitably
       be poor.</p>

       <h3>Subject areas</h3>
       <p>One of my main objectives in writing MicroWorld was to create a system
       which would be engaging for children and would enable them to see 
       computing in the context of other subject areas.</p>
       <h4>Geography</h4> 
       <p>Maps of Great Britain and Ireland, and of the Isle of Man, are included
       in the distribution; however, only the 'small' version of the map of 
       Great Britain and Ireland is really useable, the others are too big and
       will be two slow. However, you can cut a map of your local area from the
       larger maps if that is helpful to your class.</p>
       <p>The following rulesets are of potential use in geography teaching:</p>
       <dl>
        <dt>basic</dt>
        <dd>A very simple ruleset which simply establishes vegetation in the
        landscape. Not particularly useful in itself, but a good ruleset for
        children to use as a basis for their own projects.</dd>
       	<dt>iceage<dt>
       	<dd>illustrates ice thawing gradually. Because of inadequacies in the
       	rule language, currently the ice retreats from north to south, which is
       	of course wrong for the northern hemisphere; but the principle of 
       	retreating ice, the way in which ice retreats up mountains, and the way 
       	in which ecosystems establish themselves.</dd>
       	<dt>ecology</dt>
       	<dd>Attempts to model the effects of browsers and predators - represented
       	by deer and wolves, respectively - on the landscape.</dd>
       	<dt>settlement</dt>
       	<dd>illustrates human settlement appearing first on coastal promontaries
       	(e.g. kitchen-midden people), gradually spreads inland (in this model as
       	nomadic pastoralists), and forms permanent settlements where conditions
       	are favourable. This helps explore why the towns in your locality are
       	where they are. The model is obviously simplified, but produces a
       	potentially useful account of settlement in at least north-western Europe
       	from paleolithic up to at least late bronze age. <b>Note</b> that unless
       	your map has at least some coastal promontaries this ruleset will need
       	to be modified.</dd>
       	<dt>
       </dl>
       <p>All of these rulesets are deliberately simple. This is so that 
       children have something to start with, but so that they can actually make
       real, demonstrable improvements quite simply.</p>
       <h4>History</h4>
       <p>The <em>settlement</em> ruleset is probably the best starting point for
       history exploration. As described above, it essentially covers only 
       pre-history; the development of the feudal system, for example, or of 
       industrialisation, are not modelled. They could be, as (more advanced) 
       class projects. Writing rules will enable discussion of why castles, or
       mills, are positioned where they are, and what the social consequences of
       these developments are.</p>
       <p>You might also want to explore the conditions for the spread of epidemic 
       disease - such as the black death - I've provided a state for this, 
       but no rules.</p>
       <h4>IT/Informatics</h4>
       <p>Obviously, any of the rulesets but particularly the <em>life</em>
       ruleset are good introduction points to informatics lessons. The rule
       language is sufficiently simple that introducing children to writing
       their own rules can begin almost as soon as basic literacy is 
       established.</p>
       <p>In more advanced IT lessons, at the upper end of primary school or in
       secondary schools, I would encourage you to explore modifying the engine
       itself in your classes. Also, it would be interesting to write an
       export program which would export MicroWorld maps to Minecraft, or 
       render them as explorable three dimensional spaces using 
       <a href="http://jmonkeyengine.org/">JMonkeyEngine</a>
       or <a href="https://nightmod.net/">NightMod</a>.</p>
       <h4>Art and design</h4>
       <p>A number of projects, progressively more ambitious, are possible in
       art and design.</p>
       <ol>
       <li>The tiles I've drawn are pretty basic - again, that's 
       intentional, children can easily produce better ones. They don't have to
       be 32x32, but they do all have to be the same size.</li>
       <li>The stylesheets providing the overall look and feel of the system
       could be modified</li>
       <li>If you have an IT project to render a 3d world, you will need 3d 
       models of each of the states, instead of tiles. That might be a job for
       <a href="http://blender.org">Blender</a>.</li></ol>

		<h3>Lesson plans</h3>
       	<ul>
       	{% for lesson in lessons %}
       		<li>
       			<a href="{{servlet-context}}/md?content=lesson-plans/{{lesson}}.md">
        			{{lesson}}
        		</a>
        	</li>
        {% endfor %}
        </ul>
     	<hr/>
    	<menu>
    		<li><a href="#top">Top</a></li>
    		<li><a href="#grammar">Rule language</a></li>
    		<li><a href="#states">Implemented states</a></li>
    		<li><a href="#api">API documentation</a></li>
    		<li><a href="#teachers">For teachers</a></li>
    	</menu>

    </div>
{% endblock %}