Hi. I am a father infinitely frustrated with algebra, as it is taught in our schools. I just can't believe computers aren't used more, even
at the level of Algebra I.
I channeled my frustration and wrote a (free online) book about learning algebra by writing simple code.
If anyone wants to take a look at it, please try a few lessons and let me know what you think. Here it is:
There seems to be bias in the academic community against the use of computer algebra. I've been criticized for using Mathematica by professors teaching online courses in quantum mechanics, who seem to feel you aren't really solving the problem unless you do it all with paper and pencil.
I actually found that students are the same way. They have such a strong expectation that all math/science learning be done with pencil and paper, that they can be greatly dismayed and outright irritated with computer assignments,
I second this observation. The push back from students when implementing flipped classroom assignments, cooperative learning activities, or even just plain active learning pauses during lecture is sometimes extreme and disruptive. My opinion is that this is a consequence of the entitlement philosophy many students have now internalized as well as the troubling trend of grade inflation (at least here in the US). I explained to all of my students that failure is a critical part of the learning process, and it is better for them to struggle and fail and reassess their progress during lecture and on homework assignments then it is to fail an exam or later at their job ...
More back to this topic, over the past two years, I have given students assignments where they needed to use a variety of engineering software: Wolfram Programming Lab, MATLAB/Simulink, COMSOL, Pro/II, Bluehill, BioPAC, WaveForms, and the Arduino IDE. I have found student acceptance to be mixed but slanted more to positive. I think that once they have reached the 200-300 level engineering courses, they realize that pen and paper is holding them back from a deeper understanding of the topic. Unfortunately, a new negative pops up once the students accept that they need to start using the computer (and associated data collection hardware for labs), they now want a complete template, algorithm, or step-by-step instructions for using the software to solve their problem or they want to be able to find these easily on the first page of a google search. Right back to the entitlement philosophy ...
Hello there and thanks for chiming in. I am glad to hear of your observations. Most I speak to about the computer in the classroom experience say "it went great! The student's loved it!"
Most of my work has been done in trying to integrate simple computer animation into basic physics (mechanics)--mostly simple stuff, like animating a single sphere on the screen, a la the vPython approach (although I used physgl.org)....
Here are some things I've noticed about student and computer use (sorry it's so long):
Why: Students appear confused over issues a computer is and is not able
handle "automatically." Their high expectation is perhaps due to their
familiarity with video games where everything automatically "works."
How to rectify: Keep the computer assignment simple and based on only a
single topic at a time, so students expectations can become more
focused, grounded and realistic.
Why: Students are impatient, wanting quick completion of their work.
Rectify: Encourage students to slow down and think through a problem
before approaching the computer. The theme above serves as our guide to
emphasize the meaning of motion, so we methodically engage them in a
careful conversation about this theme and where they have addressed it
in their code.
Why: An over-use of consumer applications, particularly on touch
screen-devices where icons and large buttons are the norm and
organization of text (in emails or texting) is rarely necessary.
Rectify: Persist with the lessons so students gain more and more
practice (as science majors), gaining a deeper understanding of computer
use beyond consumer-level software.
Why: Weak K-12 preparation in the use of spatial coordinates and minimal
experience students with precise visualization needs.
Rectify: Continue to demonstrate ties between geometry and mechanics
(physics), as the location of an object relative to some starting point
is a critical outcome of this course.
Why: Textbook-based curriculums offer no real opportunity for students
to use vectors and immediately see their effects on a problem, and
on-paper assessment is rarely thorough enough to expose incorrect use of
Rectify: Insist that vectors are a continual support structure for the
problems, and refine lessons to constantly reflect the use of vectors
Why: The students lack previous experiences of using math as a useful
problem-solving tool; their education up to this point has focused on
studying math. The regular occurrence of this point demonstrates a lack
of adaptability of our students to different technical environments
(here, the computer).
Rectify: Watch for similar issues when students and their use of
large-screen calculators, with which they have much experience with
formula input. Suggest to students that the use of parenthesis
(including balancing them) on a computer is the same as on their math
assignments or calculators.
Why: Pencil and paper mathematics, where most of their experience lies,
is extremely flexible in terms of the presentation of a problems flow,
in what must explicitly be written and when. Computer programming is
almost a diametric problem-solving medium.
Rectify: Modifications to software, where physics and math pedagogy are
integrated into the programming language itself. In this case, the
software should identify undefined variables or improperly mixed
data-types and point them out, with associated text/tutorials about why
what they are doing is incorrect.
Why: To most, the computer is a digital entertainment hub.
Recitfy: Put level-appropriate "challenging" problems in front of our
students, that will show them that they will not always find efficient
solutions "on the web somewhere" or with point-and-click software. At
some point, software will need to be written to solve a problem.
I like the style of the course. Why did you use python only and post it on the wolfram community or did I miss something?
Hi..no you didn't miss anything. I visit here from time to time and noted that it's a good place for a discussion on using computers in math/science education. I used Mathematica almost daily, but still like the idea of using some BASIC-language-style instructional materials.
I only read the first 2 chapters. I know well and respect your motivation. But
one cent - Dont we fear that the young kids will only be able to differentiate a polynomial using a machine? I have been known to worry that todays young pilots can only fly the plane in auto-pilot mode (i.e. Buffalo incident some years back). Using a DSL* may not allow landing the plane safely in all conditions.
one cent - You very quickly cover loops and conditionals. Dr. Wolfram specifically asserts that this is not the place to start. In my mind there is some tension between these approaches, because I think of Cases as a loop and conditional. But I am still learning what functional is.
Anyways, thanks for trying to be part of the solution.
DSL: domain-specific language
Thank you for your thoughtful response.
On your first point about using machine derivatives. I get what you're saying and I hear you on the autopilot (I think that one has even crept into the Boeing vs. Airbus debate.) I'm just not sure what's better....rote derivatives by hand as "the lesson" or computer-based derivatives, with some other goal (graphing f vs f' perhaps?) as "the lesson." Long long term, the computer derivatives might be all they need. Again, I just don't know...
I am familiar with Dr. Wolfram's position on this...I read his blog and quite like his book "An elementary intro to wolfram language," but conditionals and loop are MY FAVORITE thing to put in front of beginners. To me they're the first step into programming and getting kids to see what a machine can do: make decisions and do something over and over again.
Yeah, and on your DSL comment: Lua is so vanilla, I think lessons learned in it are easily translated into other languages.