On 5/24/06, Andrew Harrington <aharrin@luc.edu> wrote:
[snip]
As usual, Andrew has expressed much too many different (and excellent!) ideas for me to be able to address them all.  I'll focus on a few of them.

...
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"]

Using <meta ...> is a great way to embed information.  It is not something that would create any syntax problem when viewed in a normal html browser; even better, it would be ok'ed by htmlTidy!

In terms of "content": rather than creating a new syntax (e.g. andOp, orOp), why not simply use Python keywords, syntax, or built-in functions as is whenever possible.  For example:

<META name="prereqs",  content="if, <, >, ==, !=, and, or, not">
<META name="outcomes",  content="else, elif">
 
[snip]
 

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.  

Classes for content/display mode are a good idea.

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.

I don't like frames... but there are ways with dynamic html to hide and show content. And, I agree that the interface should be consistent - at the very least, within a single tutorial, spanning many pages.  Eventually (version 1.0), it would be nice to have a standardisation convenient yet complete enough to be adopted by everyone.

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

Agreed.

Again, some agreement on a starting scheme is useful.  

I think this is going to evolve quasi-organically.

Other people's suggestions/agreements much appreciated.

Indeed!!!

André
 
--
  Andrew N. Harrington