Hi,
I am struggling around with interactive online py tutorials
with https://launchpad.net/projects/intro-to-code
(ith might become securely sandboxed soon, as pypy made it possible
http://blog.sandbox.lt/en/WSGI%20and%20PyPy%20sandbox :)
but one more thing is I'd like to let access xturtle functionality online
- one possible way could be triggering tkinter to save its canvas to ps,
and then convert them with imagemagic and show via web (animated gif or static)
- but if pyjamas can render GUI for js
(http://www.google.lt/search?&q=pyjamas+python ),
mayby there is a way to **translate turtle commands to processing.js analogues**
http://ejohn.org/blog/processingjs/
would it be difficult -- how do you think?
--
Jurgis Pralgauskis
tel: 8-616 77613;
jabber: jurgis(a)akl.lt; skype: dz0rdzas;
Don't worry, be happy and make things better ;)
http://sagemath.visiems.lt

Greetings edu-sig folks:
I've got a somewhat long one here. I encourage any responders not to quote
the whole thing, just go for the gusto and quote the one thing you wanna do
a thread on? I welcome changes to the subject line. One of my bad habits
is to introduce new topics in response to a pre-existing thread.
1. PYCON
=========
An entreaty that usa.pycon 2010 education track events get some chronicling
here, by those lucky enough to attend.
I'll be following remotely.
2. OSCON
=========
I've just submitted a proposal to OSCON for an education track talk in that
Portland venue this summer.
I'll let you know how that goes. There's no explicit education track in
that conference I'm pretty sure.
3. MFTDA
=========
More thoughts on 'Mathematics for the Digital Age' (MFTDA):
This could obviously be used at the college level as a discrete math course
offering.
The introduction clearly links it to 'Concrete Mathematics' which we used to
discuss on this list. Tim Peters first brought it to my attention as I
recall, whereas most other subscribers likely already knew of it. CM
is used at Stanford (even today?) as a kind of on-ramp to TAOCP by Knuth.
In fact, Knuth is a co-author of CM -- not news to many subscribers here I'm
guessing.
What I'd forgetten entirely, and what the MFTDA introduction reminds me of,
is that 'Concrete Mathematics' is an amalgam of "CONtinuous" and "disCRETE"
-- hence CONCRETE.
3.a: DISCRETE AND/OR DIGITAL?
============================
In my thread with Gary Litvin, this was one of my chief concerns: are we
boxing ourselves in, by calling it discrete math?
In taking Python (or any computer language) into the math classroom, we're
*not* wanting to exclude topics simply because they're not traditionally
considered "discrete math" topics, right?
Consider calculators. They're digital devices just as surely as computers
are, and they permeate the math curriculum at all levels. Teachers use
those TIs and Casios to study continuous curves in one or more variables, to
explore calculus concepts. Consider Mathematica, likewise digital....
Some of us have been hoping to interest local community colleges in serving
as venues for these teacher training programs that in some cases equip math
teachers already in the field with some of these new skills. The idea, as
I've posted about already, was laid out during a workshop last summer: lets
add a new high school course that satisfies a math requirement, isn't an
elective.
As such, this course wouldn't be on the CS AP track. Trying to prepare
students to pass some AP CS test would just take too much time away from the
math we want to study.
Or could there be a new test, call it AP something else?
I doubt ETS has much interest in new categories of AP (not that all of us
care that much about US tracks in the first place).
http://apcentral.collegeboard.com/apc/public/courses/teachers_corner/index.…
I've been hyping "digital mathematics" as a kind of niche marketing term,
as distinct from "discrete" but is this wise?
Per math-thinking-l (another list), I'd say I'm in the distinct minority in
thinking "digital math" is a good term. It's unexplored, not conservative,
whereas discrete math is already accepted and entrenched.
To try going in with some "digital math" is just stacking the deck against
one's own efforts, increasing the odds against success. Still, we need to
call it something. Computer Math? Computational Math? Discrete Math?
3.b WHAT LEVEL OF DIFFICULTY?
=============================
Back to the Litvin text, which has a lot going for it, I think it might be
too difficult for some of the students we're hoping to reach.
Phillips Academy is one of the most prestigious, reminiscent of Catlin Gabel
or Oregon Episcopal in our neck of the woods (I could rattle off a few
more). The text comes across as "early college" i.e. college level for high
schoolers, or at least as a kind of advanced Algebra 2 (thinking of the
chapter on polynomials in particular).
It goes all the way through RSA (public key crypto) as I've typically
advocated we do.
The good news is MFTDA (Math for the Digital Age) could be like TAOCP or
SICP by Abelson, Sussman & Sussman, by forming the nucleus of a genre. In
additional to full blown texts, we'll perhaps see a growing inventory of
cyberspace assets contributed directly by teachers and students?
That's hardly a hypothetical question actually, as those materials already
exist in abundance (including as Youtubes in some cases), just need to be
organized, glued together, and connected into curricula more successfully.
For example, I often circle 'Warriors of the Net' as a great little cartoon
about TCP/IP. But then do we want to get into those guts?
MFTDA takes the more traditional route in diving into CPU / registers /
memory, offers 8088 assembler, relates these to byte codes running on a VM
ala Java and Python, other so-called interpreted languages. It's not either
/ or though: dig down to the chip on the one hand, dig down to bits over
the wire on the other.
The way I heard some of the teachers talk at our workshop on Aug 7, was more
in terms of serving a refugee population feeling burned out on more
traditional fare. They do Algebra 1, Geometry... and then decide against
Algebra 2.
These first two courses haven't been all that successful necessarily,
meaning the motivation to continue along the pre-calc/ calculus track may
not be present, and yet a 3rd year of math is required for that high school
diploma. A computer science elective wouldn't satisfy that requirement. A
discrete math offering would.
So.... where do we go with this? What topics? In what depth? What
solutions are already out there?
3.c WHAT KILLED CODING?
====================
http://www.salon.com/tech/feature/2006/09/14/basic/ (related reading)
Some of the advice I get from math teachers on math-teach (a list at the
Math Forum) is to just forget about using a computer language. That was
trendy in the 1980s maybe, but went out of fashion for a reason.
I'm not clear on exactly those reasons were myself. In the 1980s, I was
working in computer literacy for McGraw-Hill and it looked like Logo and
BASIC would be moving in big time.
A typical linear algebra text of that era, Wayne Bishop a co-author (one of
the math-teach mainstays), had these BASIC programs in the back for
multiplying and reducing matrices. That seemed the wave of the future back
then, but then subsequent editions of that book have dropped the software
component.
http://www.amazon.com/Elementary-Linear-Algebra-S-Venit/dp/0871500949/ref=t…
Here's what I think might have happened: the shift to the object oriented
paradigm left a lot of math teachers feeling programming was going off in
some new direction and it'd be hopeless to try to keep up.
Computer programming needed to go its own way (or so its seemed) and be
strictly its own discipline, leaving mathematics students free to practice
their own ways, minus this alien content.
But then OO ala Smalltalk was actually supposed to make programming easier,
the theory being we already think in terms of objects, of nouns, named
things, with attributes and behaviors. This wasn't about inventing an
entirely new paradigm for computer programming, it was about finding ways to
express an existing paradigm (that of objects in the world) in computer
languages.
3.d OBJECTS FIRST?
====================
Sorry this is being so long. Let me just end with another take on the
"objects first" approach.
In order to make Python more accessible and the mathematics correspondingly
easier, we begin with very simple classes based around animals (e.g. the
Turtle class). We encourage thinking about animals, their attributes and
behaviors. Only later on will we try our had at more generic "math objects"
such as Rational Numbers.
MFTDA actually includes a Rational number class, but doesn't give it much
focus. It seems to be the only class definition in the entire text. I
think this maybe mirrors an attitude among CS professors that classes and
objects are an advanced 2nd year topic.
My own view is somewhere in between: I think a full blown treatment of OO,
including abstract classes, metaclasses, multiple inheritance, is indeed
advanced and probably not suitable for a one year or half year high school
math course.
Or, if suitable, then mostly in the form a really primitive examples of the
Foo and Bar class variety, more to communicate the generic design patterns
and concepts than to develop full blown computer programs such as one might
use in production environments.
What examples do teachers wish to contribute? What would be a good
introductory example of multiple inheritance I wonder? I recall David
MacQuigg sharing some examples where __mro__ (method resolution order) made
an appearance.
http://wikieducator.org/User:Macquigg (I recommend reading Dr. Macquigg's
excellent testimonial here, with a link to his PyWhip).
So yes, the CS professors are right. A full blown intro to classes is too
much to start off with.
On the other hand, a few simple classes such as Rational Number, Integer
Modulo N, Polynomial, Vector, Edge, Polyhedron, could take their place
alongside String, List, Set, other primitives.
Note: Rational Number is now a primitive in the Standard Library, thanks to
the fractions.Fraction class.
>>> from fractions import Fraction
>>> a = Fraction(1, 4)
>>> b = Fraction(2, 5)
>>> c = Fraction(2, 10)
>>> a
Fraction(1, 4)
>>> b
Fraction(2, 5)
>>> c
Fraction(1, 5)
>>> a + b + c
Fraction(17, 20)
>>> a * b * c
Fraction(1, 50)
>>> a ** 2 + b ** 3 - c ** 4
Fraction(1249, 10000)
The idea, then, is to build some awareness of classes and objects using
familiar analogies relating to every day life. A class definition is a
blueprint (one needs to explain "blueprint" -- design, plan) whereas an
instance of the class has it's own place in memory, its own "self" as it
were (intro to Python "self" syntax).
Do some animal classes. Then note how dot notation is what's used to access
the attributes and behaviors of a user-defined object.
Then note how Python's primitive objects are likewise instances of various
classes (e.g. the List class).
It's dot notation itself that we're hoping to make second nature (familiar,
not too arcane).
3.e THE TIME DIMENSION
====================
That's the breakthrough in understanding we're seeking: brief anatomy
lessons with user-defined classes provide enough background to anchor an
understanding of built-in classes and objects. It's really "dot notation"
itself that we're seeking to anchor here. noun.verb(args) and
noun.adjective provide a primitive grammar or logic. We also think in terms
of a "life cycle" for objects, from birth to garbage collection once
no-longer named.
Asking whether two objects are contemporaneous or "partially overlapping"
should be a sensible question. Mathematics tends to be sequential, in terms
of definitions and theorems, building on itself, but with no explicit
reference to a time dimension. Focusing on "objects in memory" brings more
of a temporal dimension into focus, allowing us to talk about local vs.
global, about scope. MFTDA looks at scope quite a bit, as one needs to in
programming.
What do others think? Does adding programming put more emphasis on "time"
than we're used to?
Having examined a turtle, snake, monkey and dog class in some detail, we're
ready to appreciate that lists, dictionaries and strings are likewise
instances of classes, as are numbers themselves. Yes, we've already used
primitive data structures to define our Dog and Turtle. That's OK. Now
we're ready to zoom in on the "guts" of a Snake to see how the stomach (a
list) is likewise an object, just like the snake itself.
http://wikieducator.org/PYTHON_TUTORIALS#Classes
This is a great segue to the turtle of Standard Library fame. We're now
ready to think in terms of instantiating a turtle object and controlling it
using dot notation. We've kept the essence of Logo, while creating an
"explicit receiver" (to use Smalltalk jargon).
Then perhaps we go along our merry way, like in MFTDA, focusing primarily on
functions for awhile (maybe generators), taking our time getting back to
user-defined classes. On this second pass, we'll get more into "math
objects" such as Polyhedra (my favorite) but we'll still be less advanced
than in a true CS course treatment.
This is a proposal only, a reiteration of my earlier posts in many ways.
What I'm supposing would work best is if a training team set up these
possibilities, but then left it to individual teachers or faculty
teams which way to go. Having some standards in the picture needn't squeeze
every degree of freedom out of the picture. A teacher preferring an
"objects first" approach would be free to explore that, whereas a different
teacher might consider this way too difficult and inappropriate for his or
her students. Not every teacher wants to use VPython for example, cool
though that package may be.
Especially when working towards a few pilots, I think it's important to not
intimidate, not scare away, by suggesting TOOWTDI ("there's only one way to
do it").
3.f MY ROLE
====================
Any reader making it this far might be asking whether I have any authority
or standing to be suggesting any of this.
Who am I to be setting education policy, in the State of Oregon or anywhere
else?
The answer is I'm no one in particular, and I'm not in a position to tell
others how to play their hands.
My own approach was to open source most of my materials. I have not written
a text book. I am not an appointed education czar.
My model is one of democratic participation and wanting to foster lots of
discussion.
Minus much participation or activism, I don't think there's much chance of
much of anything happening, in terms of getting some of these new kinds of
math classes going. The status quo seems the most comfortable option until
one day people wake up to the fact they're way behind the curve in some
ways. At that point, the future shock may be severe and result not in
creative action, but semi-paralysis. That seems closer to what's happening
in so many communities: future shock + semi-paralysis.
Intel and the Gates Foundation will continue to earmark millions if not
billions for education, but none of those funds will go towards beefing up
math classes with some industrial grade computer language unless we take a
more activist approach.
The opportunity to better integrate topics around computers will simply fall
by the wayside, as it has since the 1980s in most cases (with some happy
exceptions).
Let's get creative then? Innovate? I'm hoping the Atlanta conference will
help move us along in some promising new directions. I will be monitoring
this list. Know of good blogs? Post some links?
Kirby

"""
Rows of Pascal's Triangle
See:
http://en.wikipedia.org/wiki/Pascal%27s_triangle
"Calculating an individual row"
Consider a row starting as follows:
1, 12...
Initialize to [1] and multiply by (row_num/1)
to get the next term, row[1].
Then decrement and increment again, getting
(11 / 2), (10 / 3), (9 / 4) and so forth, and multiply
by the last term so far. Stop when the numerator
is 0.
1 * (12/1) = 12
12 * (11 / 2) = 66
66 * (10 / 3) = 220
220 * (9 / 4) = 495
etc.
This is another way of computing successive values
of C(n, k) without using a factorial function and
dividing.
Independently discovered by David Koski,
implemented in Python by Kirby Urner
"""
def pascal_row(row_num):
numer = row_num
denom = 1
# initialize row of Pascal's Triangle
row = [1]
while numer > 0:
row.append((row[-1] * numer/denom))
numer -= 1 # decrement numerator
denom += 1 # increment denominator
return row
def pascal_mod2(row_num = 0):
"""
row integers mod 2, give a binary string which
corresponds to Rule 60 in the Wolfram categorization
scheme for cellular automata
http://www.research.att.com/~njas/sequences/A001317
"""
while True:
therow = pascal_row(row_num)
binary = "".join(str(i % 2) for i in therow)
yield [int(binary,2), binary]
row_num += 1
"""
traditional generator for successive rows, included
for completeness
"""
def pascal_gen():
row = [1]
while True:
yield row
row = [i + j for i,j in zip(row + [0], [0] + row)]

#################################################################
IEEE WETICE 2010
1st International Workshop on
Collaborative Modeling and Simulation
CALL FOR PAPERS
#################################################################
June 28 - June 30, 2010, Larissa (Greece)
http://www.sel.uniroma2.it/CoMetS10
#################################################################
# Papers Due: *** March 2, 2010 ***
# Accepted papers will be published in the conference proceedings
# by the IEEE Computer Society Press and indexed by EI.
#################################################################
Modeling and Simulation (M&S) is increasingly becoming a central
activity in the design of new systems and in the analysis of
existing systems because it enables designers and researchers to
investigate systems behavior through virtual representations. For
this reason, M&S is gaining a primary role in many industrial and
research fields, such as space, critical infrastructures,
manufacturing, emergency management, biomedical systems and
sustainable future. However, as the complexity of the
investigated systems increases and the types of investigations
widens, the cost of M&S activities increases because of the more
complex models and of the communications among a wider number and
variety of M&S stakeholders (e.g., sub-domain experts, simulator
users, simulator engineers, and final system users). To address
the increasing costs of M&S activities, collaborative
technologies must be introduced to support these activities by
fostering the sharing and reuse of models, by facilitating the
communications among M&S stakeholders, and more generally by
integrating processes, tools and platforms.
Aside from seeking applications of collaborative technologies to
M&S activities, the workshop seeks innovative contributions that
deal with the application of M&S practices to the design of
collaborative environments. These environments are continuously
becoming more complex and therefore their design requires
systematic approaches to meet the required quality of
collaboration. This is important for two reasons: to reduce
rework activities on the actual collaborative environment, and to
maximize the productivity and the quality of the process the
collaborative environment supports. M&S offers the methodologies
and tools for such investigations and therefore it can be used to
improve the quality of collaborative environments.
A non-exhaustive list of hi-level topics includes:
* collaborative environments for M&S
* agent-based M&S
* collaborative distributed simulation
* net-centric M&S
* web-based M&S
* model sharing and reuse
* model building and evaluation
* modeling and simulation of business processes
* modeling for collaboration
* simulation-based performance evaluation of collaborative
networks
* model-driven simulation engineering
* domain specific languages for the simulation of collaborative
environments
* domain specific languages for collaborative M&S
To stimulate creativity, however, the workshop maintains a wider
scope and invites interested researchers to present contributions
that offer original perspectives on collaboration and M&S.
+++++++++++++++++++++++++++++++++++
On-Line Submissions and Publication
+++++++++++++++++++++++++++++++++++
CoMetS'10 intends to bring together researchers and practitioners
to discuss key issues, approaches, open problems, innovative
applications and trends in the workshop research area.
Papers should contain original contributions not published or
submitted elsewhere. Papers up to six pages (including figures,
tables and references) can be submitted. Papers should follow the
IEEE format, which is single spaced, two columns, 10 pt
Times/Roman font. All submissions should be electronic (in PDF)
and will be peer-reviewed by at least three program committee
members.
Full papers accepted for the workshop will be included in the
proceedings, published by the IEEE Computer Society Press (IEEE
approval pending). Note that at least one author from each
accepted paper should register to attend WETICE 2010 to get the
paper published in the proceedings.
Authors may contact the organizers for expression of interests
and content appropriateness at any time. Papers can be submitted
in PDF format at the submission site
(http://www.easychair.org/conferences/?conf=comets10), which is
supported by the EasyChair conference management system. Please
contact the workshop chairs (comets10(a)easychair.org) if you
experience problems with the EasyChair Web site.
+++++++++++++++
Important Dates
+++++++++++++++
* Submission Deadline: March 2, 2010
* Decision to paper authors: April 2, 2010
* Final version of accepted papers due to IEEE: April 14, 2010
* Conference dates: June 28 - June 30, 2010
++++++++++++++++++++
Organizing Committee
++++++++++++++++++++
* Andrea D'Ambrogio, University of Roma TorVergata, Italy
* Daniele Gianni, European Space Agency, Netherlands
* Joachim Fuchs, European Space Agency, Netherlands
* Giuseppe Iazeolla, University of Roma TorVergata, Italy
+++++++++++++++++
Program Committee
+++++++++++++++++
* Michele Angelaccio, University of Roma TorVergata, Italy
* Olivier Dalle, University of Nice Sophia Antipolis, CNRS & INRIA,
France
* Steve McKeever, University of Oxford, UK
* Alessandra Pieroni, University of Roma TorVergata, Italy
* Andrew Rice, University of Cambridge, UK
* José L. Risco-Martin, Universidad Complutense de Madrid, Spain
* Helena Szczerbicka, University of Hannover, Germany
* Hans Vangheluwe, McGill University, Canada
* Gabriel Wainer, Carleton University, Canada
* J.Chris White, ViaSim Solutions, USA
* Quirien Wijnands, European Space Agency, Netherlands
* Heming Zhang, Tsinghua University, China
*** Contact Information ***
Andrea D'Ambrogio (workshop co-chair)
Email: dambro(a)info.uniroma2.it

On Mon, 25 Jan 2010 06:00:01 -0500, <edu-sig-request(a)python.org> wrote:
> I'm almost sure that there's no way for a turtle to know anything
> about the background. That's an unfortunate limitation!
In FMSLogo:
PIXEL
Description
Outputs a three element list of numbers that represent the red, green, and blue intensity of the pixel currently under the turtle.
> As for putting a limit on a turtle's travel, you need to write an
> appropriate conditional. For example, if you want your turtle to stay
> within a 200x200 square centered around the origin and stop if it gets
> out, do something roughly like:
>
> while(math.abs(t.xcor()) < 100 and math.abs(t.ycor()) < 100):
> move turtle
>
> Of course, you could instead use if statements and simulate bouncing
> (if my turtle's x coordinate is beyond my bounding box, subtract from
> its x coordinate).
In FMSLogo:
WINDOW
Description
Tells the turtle to enter "window" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will move off screen. The visible graphics window is considered as just part of an infinite graphics plane; the turtle can be anywhere on the plane.
WRAP
Description
Tells the turtle to enter "wrap" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will "wrap around" and reappear at the opposite edge of the window. The top edge wraps to the bottom edge, while the left edge wraps to the right edge. (So the window is topologically equivalent to a torus.) This is the turtle's initial mode.
FENCE
Description
Tells the turtle to enter "fence" mode. From now on, if the turtle is asked to move past the boundary of the graphics window, it will move as far as it can and then stop at the edge with an "out of bounds" error message.
Daniel
http://sourceforge.net/projects/fmslogo/files/

At 04:12 AM 1/24/2010, kirby urner wrote:
>Some of us have been hoping to interest local community colleges in
>serving as venues for these teacher training programs that in some
>cases equip math teachers already in the field with some of these
>new skills. The idea, as I've posted about already, was laid out
>during a workshop last summer: lets add a new high school course
>that satisfies a math requirement, isn't an elective.
>
>As such, this course wouldn't be on the CS AP track. Trying to
>prepare students to pass some AP CS test would just take too much
>time away from the math we want to study.
>
>Or could there be a new test, call it AP something else?
Several years ago, Maria (Litvin) asked a high-ranking College Board
person whether AP Discrete Mathematics was a possibility. The answer
was absolutely no. The main reason was that the College Board was
looking for ways to reduce gender imbalance and minorities
participation, and another math course wouldn't help. Hence AP Human
Geography... When the College Board abruptly cancelled the AP CS AB
exam, part of the rationale given, again, was that cancelling this
exam wouldn't hurt the gender balance and minorities
participation. What they meant was they could afford to cancel this
small and unprofitable exam. (They also cancelled AP Italian -- no
gender imbalance there).
Interestingly, recently the College Board has established a
commission to explore a new AP CS course. Its name, I hope
tentative, is "AP Computer Science - Principles" -- see
http://docs.google.com/present/view?id=dffps2vw_167hdvspwfc.
Apparently, the current CS exam doesn't test any principles.
What might this new exam be like? CS with no programming and no
math? We'll see. My guess is, if it eventually comes about, it will
be a no-specific-programming-language exam, which will simply replace
the current AP CS exam in Java. I believe two AP CS exams will be untenable.
Gary Litvin
www.skylit.com

Hello,
I am trying to think of things to do with the turtle module with my
students, and I have some ideas where I am not sure whether the
turtle module can do it.
1) is there a way to determine the current screen pixel color? I am
thinking about having the turtle go forward until it reaches an
object, say a red circle. I can probably do this by making circle
objects (drawn with turtles themselves) which know their own
position, and check against this info. But I thought it might be
useful also for the turtle to know.
2) is there a way to put a limit on the extent the turtle can
travel? it seems I can keep moving off of the screen. Is there a
way to make it so that a forward(50) command, at the edge, either
raises an exception (at the wall) or simply doesn't move the turtle
because of the limit?
thanks!
bb
--
Brian Blais
bblais(a)bryant.edu
http://web.bryant.edu/~bblaishttp://bblais.blogspot.com/

At 03:52 PM 1/25/2010, kirby urner wrote:
>However, if you show the 2 + 2 is adding two objects (2 .__add__(2)
>the same thing), is that "objects first"?
Yes.

At 04:12 AM 1/24/2010, kirby urner wrote:
>Back to the Litvin text, which has a lot going for it, I think it
>might be too difficult for some of the students we're hoping to reach.
>
>Phillips Academy is one of the most prestigious, reminiscent of
>Catlin Gabel or Oregon Episcopal in our neck of the woods (I could
>rattle off a few more). The text comes across as "early college"
>i.e. college level for high schoolers, or at least as a kind of
>advanced Algebra 2 (thinking of the chapter on polynomials in particular).
>
>It goes all the way through RSA (public key crypto) as I've
>typically advocated we do.
>
>The good news is MFTDA (Math for the Digital Age) could be like
>TAOCP or SICP by Abelson, Sussman & Sussman, by forming the nucleus
>of a genre. In additional to full blown texts, we'll perhaps see a
>growing inventory of cyberspace assets contributed directly by
>teachers and students?
First, let me say I am honored to have our book mentioned in the same
paragraph with Knuth and Abelson, Sussman & Sussman. :)
Kirby is right: our book is suitable for students in a typical
first-year discrete math college course. That doesn't mean, though,
that a bright middle schooler or an open-minded 9th- or 10th-grader
can't handle it. Unfortunately there is virtually nothing in the
standard K-12 math that prepares students for this kind of math,
Phillips Academy or not. If anything, younger students are more
enthusiastic and open to actually solving problems. Maria (Litvin)
recently asked her students Question 2 from Section 1.2: How many
subsets does a set of 3 elements have, including the empty set and
the set itself? Her students understood what a subset is, but only
one from the whole class could answer the question. The others had
no clue how to approach a problem -- any problem! Most of these kids
are currently enrolled in AP Calculus or a more advanced math course,
such as linear algebra... I suspect if you explain to an interested
and reasonably bright 10-year-old what a subset is and ask the same
question, chances are he/she will quickly list all the subsets and
give you the right answer within a couple of minutes. It is true, of
course, that the last two chapters, the one on map coloring and the
one on number theory and cryptology, are quite technical. Only very
bright students -- high school or college -- will be able to handle
them. But we need to somehow keep these kids busy, too, don't we?
Gary Litvin
www.skylit.com