How are spreadsheets being used with students, asks Richard Young. One
site that I've found belongs to Devon Curriculum Services,
http://www.devon-cc.gov.uk/dcs/ ,
and has a page with an introduction to spreadsheet modelling,
http://www.devon-cc.gov.uk/babbage/models/mod.html .
Perhaps some of this is rather elementary for students of readers of
this list, but the section on data sampling, for example, at
http://www.devon-cc.gov.uk/babbage/models/mosamp.html ,
could be useful.
A slight change of direction. My friend and colleague Graham Stark was
kind enough in this thread to recommend my spreadsheet front end, Model
Master. (Because of where I am, I'm also thinking that Oxcel might be a
nice name for it....) What I'm doing is to provide a programming language
that will compile into spreadsheet code, whilst allowing users to include
proper comments in their code, and build programs by composing independent
modules rather than by cut-and-paste of worksheet ranges. MM also provides
a _lot_ of error checking, more than most programming languages I've seen.
For more on the perils of spreadsheet errors, see "Fatal addition", a New
Scientist feature at
http://www.newscientist.com/ns/970816/nspreadsheet.html , and Ray
Panko's spreadsheet errors site at
http://www.cba.hawaii.edu/panko/ssr/
(his server is sometimes down). These should be compulsory reading for any
spreadsheet user, especially if due to lose a job if they misforecast the
next year's corned beef futures or mistakenly use last year's interest
rate in a trade.
I've summarised some of the reasons why spreadsheets are error prone at
http://users.ox.ac.uk/~popx/mm_presentation/why_dangerous.html .
The basic idea behind my front end is that of objects and attributes.
Here's a simple company:
object company = <profits incomings outgoings>
where profits = incomings - outgoings
By default, this compiles into
A B C
1 "profits" "incomings" "outgoings"
2 "company" "company" "company"
3 B3-C3
where the first two rows are labels, and the third contains a formula in
the first column. Think of company as an object, and profits, incomings
and outgoings as its attributes. The compiler allocates attributes to
columns in an obvious way. (The <...> notation is meant to resemble the
mathematical notation for an ordered tuple.)
There's an option to flip the layout:
object company = <profits incomings outgoings> down
will array the attributes down rather than along.
You can store objects in libraries and extend them by adding new
attributes or formulae:
object company_and_workforce = company with <workforce>
where outgoings = workforce * 163
if we assume, rather arbitrarily and only for the sake of example, that
the company's only outgoings are formed by multiplying the number of
employees by 163. This is similar to inheritance in an object-oriented
language.
You can attach units to attributes
/* We shall measure all money in 1000 dollar units */
unit $K
object company = <profits as $K
incomings as $K
outgoings as $K
>
where profits = incomings - outgoings
unit person
object company_and_workforce = company
with <workforce : integer as person>
where outgoings = workforce * 163($K/person)
The compiler will check all attributes for the right dimensions, so
it will not, for example, allow you to accidentally use money where you
wanted an interest rate, or add force to mass:
unit m // Basic unit of length.
unit sec // Basic unit of time.
unit kg // Basic unit of mass.
unit acceleration = cm/sec^2
unit newton = kg * acceleration // Basic unit of force.
constant dud = 1newton + 2kg // Gives an error.
^
Error: Left-hand side of operator + has units kg*m*sec^-2, but
right-hand side has units kg.
The compiler also reports errors such as attributes that are used but not
set, and has some more advanced facilities for composing objects together,
enabling programmers to build up some quite complex simulations in a
modular fashion.
It has been suggested that MM would be a good tool for teaching modelling
to novice programmers. One does not need to worry about the order in which
things are declared, and the language requires one to write very little
apart from the formulae required to solve a problem and the information
needed to help the compiler catch errors.
Jocelyn Paine
http://users.ox.ac.uk/~popx/
+44 (0)468 534 091
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|