[Edu-sig] An engine to navigate between lessons

Andrew Harrington aharrin at luc.edu
Wed May 24 23:16:11 CEST 2006


Andre Roberge wrote:
 > On 5/14/06, Andrew Harrington <aharrin at luc.edu> wrote:
 >> Navigating Between Lessons

 >> I have been reading the discussion and trying the prototypes for Python
 >> content delivery with great excitement.  On seeing how well you were
 >> doing on the content delivery, my imagination took off and I wrote down
 >> a whole bunch of brainstorming ideas below on an important independent
 >> aspect of an interactive learning environment.  Just tonight the "Only
 >> Python" thread touched on the area I have been thinking about with the
 >> idea of choosing what comes next after evaluating code in the 
Crunchy Frog.

 > [snip - snip - snip     lots of interesting material cut out.]

 > There were a lot of great ideas expressed in this brainstorming 
tsunami. 

Thanks!

 > I will latch onto a single theme.

 > For this to work, we need tutorials "snippets" ... lots of them. 

For sure.  Snippets is a good term, too.

 > I don't
 > think we need to worry too much at this point about complex links
 > between them, nor about the "syntax" required for those links.  I
 > believe this is going to be the easy part ... after enough tutorial 
snippets
 > are written.  If it is web-based, the whole machinery pretty much
 > already exists. One way might be to embed keywords, including
 > "difficulty ranking", inside tutorials and use a search engine to decide
 > where to go next.  Or, rather than using a search engine, a "mind map"
 > type of visual index can be created, with some automatic updating
 > whenever a new tutorial snippet is added, or a keyword is added to that
 > tutorial.  A variation on the them is that keywords inside a given
 > tutorial could be given some relative weighting factor.

All of those methods could be used inside a particular lesson generator 
like Crunchy Frog.  I was certainly thinking of embedding stuff in the 
html for Crunchy Frog.  Having everything there is part of the elegant 
simplicity of generating data for Crunch Frog.

 > Regardless of the chosen method ... lots of tutorials will be needed. 
 > Until then, I think that trying to come up with the ideal method to link
 > them is probably pointless; a case of premature optimization....

 > André

Certainly much of the elaboration of an engine is mostly useful after 
there are lots of lessons, and certainly the stuff about using learning 
histories to tweak the engine is WAY in the future.

A major point I did not consider, that fits into your caution about 
premature optimization, is that Crunchy Frog is the only delivery 
mechanism at the moment, so all data comes through it, and we can 
concentrate on Crunchy Frog understanding data embedded in a Crunchy 
Frog Web page lesson.

I see data embedded in meta data, your custom vlam attributes, and 
classes identifying types of content:

The meta construction in the heading is a fine basic descriptive format 
for use by Crunchy Frog.  It is important that the format is clear:  
agreeing on what name attributes are used and the meaning of the content 
attribute that goes with a name. 

We could make skills binary as in

<META name="prereqs" content="ifElseRead, comparisonNumeric, assignment">
<META name="outcomes" content="ifElseUse">

or as I prefer, with a numeric rating, maybe with the number left out 
meaning 100 (mastery) and 0 meaning exposure.  The following might be in 
a testing module on understanding the flow of control in an if-else 
construction, assuming an earlier expository introduction:

<META name="prereqs" content="ifElseRead:0, comparisonNumeric, assignment">
<META name="outcomes" content="ifElseRead">

There is much meta data about a lesson that I think is useful, even when 
our total number of lessons is small.  A lot of the data is most 
obviously considered while creating a lesson, when I find it easiest to 
add classifications, and to edit them from a copy of a similar template 
lesson.

If we are piecing together snippets of tutorial, I think it is important 
to be conscious of what the prerequisites are and what is being taught.  
I would be happy to give a first pass on a consistent pattern for naming 
basic and composite skills for introductory programming in Python.    I 
still like the idea of short names for composite skills, so a persistent 
structure is needed to store components of compound skills.  One simple 
approach would be to use a text file with Python dictionary syntax and 
list value
"loops":["forLoop", "whileLoop"]
"booleanExpression":["booleanExpressionAtomic", "andOp", "orOp", "notOp"]

Other conventions, use keywords, author, and version.  For example:

<META name="keywords" content="drill, javaAnalogy">
<META name="author" content="Andrew Harrington">
<META name="version" content="0.3">

I need more research on what is relevant and practical, but I imagine 
various measures of the speed and creative ability needed of the 
learner, maybe difficulty (pretty general) or more specifically speed, 
repetitiveness, number of new ideas together, number of solution steps 
the learner must put together independently, ....  Even if names are 
agreed upon here, the initial measures are subjective, and probably only 
make sense being added when comparing a number of lessons.   This is an 
area where I look to have an eventual system make tweaks dynamically 
based on statistics from learner histories.

I imagine one lesson having multiple screens, and maybe multiple paths 
if help is given for wrong answers.  I treat the final page of a lesson 
covering a defined topic as being different from the others.  I imagine 
a "Next page" or other buttons in intermediate pages, as I mentioned in 
my recent Crunchy Frog wish list, and a "Next lesson" button at the 
end.  Data associated with the Next Lesson button might include several 
lessons of the authors that could logically follow independently. Maybe 
the first one would be chosen if there is no further basis for choosing 
added.  I would like to get to a point where the objectives of the 
learner are part of the state, and that affects the choice of the next 
lesson. 

I have looked through many narrative tutorial introductions, and I still 
like the idea of being able to extract a reference on what has been 
introduced so far.  I like the idea of marking new syntax and summaries 
in the expository text, maybe with a
<div class="syntax">, and <div class="summary">, making them easy to 
extract with Elementtree, and consistent in their display.   It would be 
nice for these summaries to pop up in a separate window or tab if 
requested.  I do not know if that fits in with the Python localhost 
interface.  If there had been any of these elements in lessons so far, I 
would put Syntax and Summary buttons somewhere, at the bottom of the 
lesson page or on a separate reference web page, or in a separate frame.

There is an embedded style in Crunchy from pages.  Styles for syntax and 
summary could be added.

Again, some agreement on a starting scheme is useful.  Other people's 
suggestions/agreements much appreciated.

-- 
  Andrew N. Harrington
  Computer Science Department      Undergraduate Program Director
  Loyola University Chicago        http://www.cs.luc.edu/~anh
  512B Lewis Towers (office)       Office Phone: 312-915-7982
  Snail mail to Lewis Towers 416   Dept. Fax:    312-915-7998
  820 North Michigan Avenue        aharrin at luc.edu
  Chicago, Illinois 60611          



More information about the Edu-sig mailing list