# Using Coding To Teach Algebra

Algebra is a turning point for many students. Addition, subtraction, multiplication, division, and solving equations makes sense to most students because they come across these notions in their every day life. But functions are something completely different. It’s the first abstraction most students come across in their study of math. And I’ve seen a lot of students start to dislike math when they get to algebra. They get frustrated that they just don’t get it. They tune out and turn off to math. And that’s a shame. Because math is powerful stuff. It is the key to so much.

I’ve been really impressed with a program called Bootstrap. It is a curriculum module that math teachers can drop into an algebra (or geometry) class. It maps to the common core. In Bootstrap, students use code to make a simple videogame which they really enjoy doing. But they are also learning functions in the course of coding up their game. Once they understand how functions work in code, Bootstrap makes the leap to algebraic functions. And students get it. Because it is tangible to them instead of being this abstract concept they just don’t grok.

This is just one example, but a powerful one, of how learning to code also teaches students important other concepts that they need to learn to advance in their studies.

People ask me why teaching kids to code is so important. They ask “we don’t want everyone to become a software engineer, do we?” And of course the answer to that question is no. But coding is an important intervention device into a student’s learning. Just like writing an essay or doing a workbook is an important intervention. Coding unlocks comprehension and understanding of certain hard to understand concepts in a fun and tangible way.

And Bootstrap is a great example of that. If you are a math teacher for or a parent of students between 12 and 16, you should check it out.

## Comments (Archived):

I should teach a course-“Storytelling for coders”.Breadth of knowledge on the fringes of our core expertise makes us all better.Just makes sense.

“Using Coding to teach Shakespeare” by Arnold. Now that’s a class I’d take.

How about understanding Charles Bukowski as the key to writing better APIs?

I prefer Lebowski

Ha ha ha! This makes SO much sense to me, it’s scary.

Bring that on Arnaldo! The Post Office is one of my favorite books and I’m always keen to improve my programming skills. Where do I sign 🙂 ?

Thanks for sharing this.We were lucky re. algebra. My parents had provided real-life frameworks for us to grasp it before it was taught to us in school.

Could you give an example?

So…my Dad taught us chess when I was 5 and most kids learn algebra when they’re 12-16. There are functions in chess related to the value of each piece such that:Let pawn (p) = 1, knight (k) = 3, bishop (b) = 3, rook (r) = 5, Queen (q) = 9. If Player 1 has captured 3 pawns, 2 knights and a rook are they ahead of Player 2 which has captured 2 pawns, 2 knights and 2 bishops?The other example of algebra that involves a chessboard is the classic Chinese grain problem.Meanwhile, my mother taught us complex card games from an early age.Functional algebra was also explained in examples like how if we cut across a square it was a shorter distance (Pythagorus), a function was making the clouds move across the sky (force = f(position, velocity)), the arc of a rainbow is a function as are hills and valleys (quadratics) and even in knitting (which is also making patterns on a blank canvas like coding).On top of this, we learnt Input => f(n) => Output via car engines, circuitboards and cooking. My parents were always making things.Even today when my mother makes rice cakes she goes through the functional algebra involved in the rice cake’s elasticity and softness.Of course, functional algebra at its highest mathematical level is used in Search, Machine Learning, Quantum Physics, Neuroscience, robotics, hedge fund portfolio asset allocation etc.

We will go on a short limb and say this parental experience isn’t the norm but an exception. The majority will view their parents as amazing in at least some manner but few can boast parents having a Lewis Terman IQ of 150, we still view having common sense trumps) We also realize the contributors and viewers of this blog may not be representative of overall population. If there was a poll the majority may feel they had similar experiences as Twain Twain. Who wants to be left out. (Sarcasm included like a stuffed suitcase)

Haha, sarcasm duly noted. My experiences are different from the norm.I’m an outlier and have been as a baby. I didn’t need Malcolm Gladwell to tell us what outliers are. Maybe this explains why I grew up to take issue with Probability distribution curves and to invent a mathematical tool other than Probability for Human+Machine Intelligence.Yes, my invention could well improve Lewis Terman’s Stanford-Binet test too.School made me take an IQ test. That resulted in an invite from the Royal Society of Mathematics when I was 12 to their masterclasses where they taught us another form of functional algebra: the basis of Turing’s Enigma machine.RSM made us sit yet another exam and I passed that too.Funnily enough, either of my parents are graduates but they are (or “were” in my Dad’s case) amazingly intelligent in their common sense.Yes, I was an atypical little girl. I wore pretty pink gingham dresses and got As in maths and Comp Sci whilst also being captain of sports and speaking several languages and being really good at art.Apparently, if you’re a maths nerd you can’t be a jock or good at humanities and art or something. The limitations people can put on other people can be, frankly, ridiculous.Kids are limitlessly intelligent so if they’re lucky to have parents and role models who believe in this…They grow up to realize their own potential and to invent new technologies for future generations with artistic creativity.

Literally standed and clapped after reading your post as the current surroundings became bewildered. An accomplished woman (Not the amazement, never cared what gender of the writer just the content with intelligent reasoning) and most views based upon supported information. Will make my mother proud but the Uptown (NYC) woman will only affirm who do you think nurtures you accomplished fools.

Coding is logic normalized to a syntax — very much like algebra.

yup

Great startup. I was looking on Crunchbase to see who’s portfolio they were in, but they appear to be a non-profit. Judging by the team’s profiles they are a smart bunch themselves.

Check out Brilliant.org-a for profit effort to build the world’s largest social network of kids solving math and science problems together. They don’t have the jump to coding, but it’s probably easily added. I know teachers are using it in the classroom to teach kids. Read tweets coming out of places like India and China about it. (I was a seed investor)

I did, thanks.

It took Bootstrap nearly twenty years of effort to get to the current point. Designing a curriculum that is interesting, fits into existing efforts, AND can pass muster through evaluation, is not as easy as it sounds (or at least it wasn’t to us). I would be careful about declaring that slotting in coding is “easy”, unless you are willing to not have standards about what you call “coding” (i.e., anything goes). Bootstrap sets itself the highest standard here, at a level that the other startups in the field don’t attain.

Hi Mario – we’re primarily researchers and educators, so we’d be very interested in hearing your startup ideas. If you’ve never heard of us before, that’s probably a sign that we have a lot to learn when it comes to marketing. :)Our growth has come from word-of-mouth: teachers telling teachers, teachers telling principals, and principals telling superintendents. We’re very fortunate to work at the scale we do, and we’ve made every effort to keep our cost-per-child low enough that we can undercut our sexier, better-funded competitors.As researchers and educators, we’ve been focused on building great products for teachers, and collecting evidence that it works. But we’re thinking big – really big – in the long term, and that means we need to learn some new tricks when it comes to funding and startup culture. We’re grateful to for Fred’s support in helping us scale in NYC, and we’ve got demand in other large districts that we’re still figuring out how to serve. We know we’ve got a lot to learn when it comes to growing this venture, so we’d welcome any advice you have!

You sound humble and eager about your cause. Stay closely connected to Fred.

We’re humble, eager, AND hungry. (-: Fred and CSNYC have indeed been fantastic for us.

Hi Emmanuel. I’m just curious — why didn’t you use Scratch?

We’re big fans of Scratch as a tool for engaging young children, but we also come from the “right tool for the job” school of thought, and Scratch is simply a bad tool for what we’re trying to do here. Scratch embraces state at the deepest levels, to the point where “variables” in Scratch are completely incompatible with variables in algebra. Animation and interaction are also implemented in ways that are problematic for math instruction. There are half a dozen other reasons why Scratch couldn’t be used in a course like this, but these are probably the most significant.

I agree that Scratch’s shallow learning curve necessarily leads to complexity being hidden. I can also see how “unveiling” this complexity could actually create more work than hiding it saved.But, and I don’t want to sound critical here, I’m sure there must be a way of creating a smooth “upgrade path” from something as intuitive as Scratch to something as powerful as a full-blown language — with the learning curve it entails — like Scheme.

You should check out our Circles of Evaluation (unit 1 in our curriculum). They’ve been devastatingly successful as a migration path for Scratch kids into Scheme, and math teachers are crazy about them. 🙂

Thanks, I’ll definitely take a look. And good luck with this — I’m a big believer in these kinds of projects, to the extent that I recently went into a classroom and built a functional computer made of… kids!

David, great question.One of the attributes of the broader curriculum (“Program by Design”) that Bootstrap is part of is our belief that _no_ mainstream programming language is ever suitable for beginners out of the box. They all contain too many warts and confusing corners. These are exciting to discover for the few, and frustrating, baffling, and discouraging for the many. Therefore, our philosophy is of building a sequence of _language levels_ that grow with student knowledge.Think about your typical beginning programming textbook. It doesn’t introduce the whole language in chapter 1. Rather, it takes some view of how the language should be unveiled. And usually, even by the end, it has taught only a subset of “the language” that it’s in, if the language in question is big enough. Our question was, why don’t our programming environments do the same? Of course they can; we built the technology to make that clean and scalable.Therefore, unlike Mike, we wouldn’t classify the language we teach as “Scheme”. Rather, it’s a subset we call “BSL” (Bootstrap Student Language). A lot the fantastic and terrifying parts of Scheme are not in the language we cover.In short, we are _all about_ the upgrade path. We’ve been preaching and practicing it for nearly two decades.However, Scratch is not the appropriate starting point for that path, for reasons Emmanuel has explained. The semantics is just different; the languages should nest, whereas Scratch as the starting sublanguage would be outside the progression entirely. Instead, we are working with partners Code.org (who have borrowed Bootstrap for their middle-school math curriculum) to build out the suitable block-based language that would serve as this first step. (We built our own prototype on top of Blockly, but they simply have way more resources than we do.)

That’s a fantastic answer! Many thanks for taking the time to write it. It’s all a lot clearer now.

I’m beginning to think that maybe bundling Technology as part of STEM isn’t a great idea anymore.Maybe Technology should be taught separately with its own curriculum.Call it Technology, not programming and it would include programming, software, electronics, computers, mechatronics, alternative energy, etc.We should teach Technology to kids, period.

that is basically what the software engineering pilot program we’ve helped the DOE build in NYC is doing for middle school kids

Interesting.What i’ve learned from having a 14 year old in the extended family is that these kids are getting a lot of this by just living it.Collaborative homework with Google Docs. Crowdsourcing to fund a rebuild a Florida reef project, time lapse cloud based photo to show progress over time and so on.This individual is not technically inclined but application and problem solving wise a power user.

Typically if you go to a business school you pick a major and that is the an area of business that interests you the most that you then focus on and that you want to learn. That you are motivated to learn. (Unless you are a phone it in student of course).For example finance at Wharton is quite different than management or marketing and within the management department there is entrepreneurship which is quite different than just management.I think part of this is identifying the subject that excites a particular student (prior to college) because a student might find mechatronics interesting however they may be bored by alternative energy.

Right. the idea is to give them bite sizes to a variety of topics.

The term STEM and the conflation of the STEM subjects drives me nuts.Science is not engineering is not math. The things that make a great scientist are often very different from the things that make a great engineer. Pure science is vastly more abstract than engineering. Science is about understanding an existing universe. Engineering is about solving a problem (often via compromise). Real mathematics (not just applying mathematical solutions to solve problems) has little to do with either one. Math at anything beyond the undergrad level is closer to art or music. Yes, scientists and engineers use math (so do accountants and insurance actuarials) but no one calls accounting a “STEM career”.

And technology shouldnt be just “we have tablets” in the schools

I learned to code WAY before learning algebra (several years). Honestly, I’m not sure how most students learn functions the way it’s taught in a math class…the rules are weird, the definition of a function is weird. Even after taking an algebra class it took me a while to realize they were fundamentally the same things (coding function and algebraic function).

That was my experience as well. I’d say that half of that is due to curriculum and pedagogy: the kinds of problems we solve in math class – and the way we solve them – are so different from what we do in programming that it’s difficult for a student to make the connection. The other half of the problem is that many of the popular programming languages (java, python, javascript) don’t really behave the way algebra does, so the formalisms we learn in one don’t transfer to the other.When we get into k12, you have a much bigger problem: students don’t have formalisms in either one! If the language behaves in a way that is incompatible with algebra, it’s even less likely that a teacher will be able to make the connection.This is why Bootstrap exists – making the connection isn’t something that just *happens* when you throw programming into a math class.

Thanks for responding. I think it’s really great what your team is doing.On another topic, elsewhere on this thread you mentioned startup ideas for profit. Whether this remains non-profit or not, I think the larger problem you’re solving is logical thinking. Right now, you’re using coding to assist in learning algebra. But why learn algebra? Isn’t it to just enrich the way we think generally and make more “critical thinkers?”I’m not saying we shouldn’t learn math/algebra. In my experience, I was able to understand and work with economic functions and calculus because of my background in code, not math (though I’ve read many times that code is math incarnate). I suppose the real question would be, did I adept to coding well because of the way my mind works or did coding at a very early age (14) shape the way my mind worked? If it’s the latter, then sure, for now show how learning to code can improve algebra learning…you need to easily show results. But for the long term vision, the value here is that learning to code doesn’t just impact the ability to learn algebra, but the ability to reason more logically. Learning to code will, in itself, better the person. Just as learning math/algebra is to better the person.In the end, most people will never actually need to compute something algebraically. But it allows them to think differently and in ways they otherwise would not have. The same is true for coding.

You’ve hit the nail right on the head. 🙂 Long term, our goals are about far more than just algebra. I would also point out that Bootstrap is a trojan horse for putting CS (and the critical thinking that goes along with it!) in front of *all* students, in a way that opt-in classes just can’t do. Every child takes algebra, but not everyone chooses to take computer science. Equity is a major part of the equation for us, and aiming at algebra gets us that for free.Focusing on algebra also has a lot of practical benefits. Many schools want to teach CS, but they have to prioritize algebra because that’s how they are measured, and because algebra is a graduation requirement. A lot of the time, principals have to make a hard choice between spending precious resources on a new (optional) CS class or doubling up on the math their students need. With Bootstrap, it’s a two-for-one.But the other (far sneakier!) benefit is that a district that adopts Bootstrap automatically gets serious investment in PD for creating *computer science teachers*. If they want offer a CS class down the road, they can leverage their investment in Bootstrap, and offer a complete CS pathway that scales all the way to university-level courses….all using a common pedagogy that students and teachers can build on. Bootstrap for algebra now, AP later…without ripping everything else up and starting over. It’s a use-case that we think will be very compelling to the districts we serve.We feel that Algebra is both the right lever to effect the most change, AND a smart strategic move for the kind of big-picture stuff you’re talking about.

I’m a big fan of Bootstrap in the classroom and love the fact that Emmanuel built the program using Scheme as his choice of tool.It’s small and consistent and everything can be viewed as a function – including what other languages would call control structures such as “if” statements.Kids only need to get their heads around a small handful of things and it’s off to the races.

exactly!!!!

I agree with most everything you wrote here, Mike, and this probably isn’t the place for a technical discussion, but the statement that control structures “can be viewed” as functions in Scheme is just not correct.

Given your credentials [1] I would defer to you on this subject obviously but I am curious how given this page Mike’s statement is not correct?https://classes.soe.ucsc.ed…A Scheme program consists of a set of function definitions. There is nostructure imposed on the program and there is no main function. Functiondefinition may be nested. A Scheme program is executed by submitting anexpression for evaluation. Functions and expressions are written in theform (function_name arguments)[1] http://cs.brown.edu/~sk/

1. That excerpt is saying something different from what Mike is saying. The excerpt is talking about the top-level structure of a program and about what functions look like. It doesn’t say that _everything_ is a function (and neither does Mike, in his clarification).2. That tutorial is not strictly correct even in what it says. A program can consist at the top-level of things other than function definitions. It can consist of expressions or of macro definitions. Etc.3. There are lots of poorly-written tutorials on the Web — ask me to defend one I’ve at least heard of, much less endorsed (-:.Here is two really easy ways to see that a control structure like `if` is not a function:1. (if true 1 (/ 1 0))If `if` were a function, it would first evaluate its arguments. That means the program would halt with a division-by-zero. It does not. Ergo, `if“ is not a function.2. (define (f g) (g 1 2 3)) (f if)If `if` were a function, I could pass it as an argument to another function. Try the above and you would get a _parse_ error. Ergo, `if` is not a function.Replace `if` with any of the other non-functions in Scheme and you’ll get similar outcomes.Parsing really is a thing, even in Lispy languages. People are often very confused about this because of the mysticism that accompanies the way these languages are taught. While most languages are bicameral, Lisps are tricameral. Not understanding that there are two kinds of parsing going on leaves many people confused. I’ve only been trying to combat this confusion on Schemey sites for two decades now!

You’re right but that level of detail isn’t important when you’re introducing a 9/10 grader into thinking in a new way. When evaluating (as opposed to as data, which we also talk about) everything is basically in the form (f …) apply function f on parameters … . In that regard, if is the form (if a b c) – it takes a boolean and two other forms and then returns a value. So when getting the kids brains around scheme –> ideas in functional programming –> recursion it keeps things consistent as opposed to in a language like, let’s say Java where you’ve got functions and control structures that look nothing alike.We basically take the mathy stuff, list primitaves if, cond, lambda, and define and that’s more than sufficient to give the kids a solid foundation in the 1/2 term we allocate to scheme.Looking at it as I described above the only form that doesn’t follow is define. We tell the kids that what we’re telling them isn’t technically / fully correct (that is, we do teach them how these things work but we say that calling them functions is fudging things) but our approach has proven to be sound in inspiring and preparing kids for CS education and careers.

Yeah, I know, I inherit your kids and have to unteach them this confusion. (-:

I know, special forms like define are not functions. That’s which I say “can be viewed.” Pedagogically, it makes sense.

I don’t know what “can be viewed” means. There are numerous consequences of being a function that control structures and other special forms fail to match. In fact, just about every way I can think of “viewing” them as functions would fail, including the most rudimentary ones. No doubt one could generate a sufficiently calisthentic pedagogy to paper over this, but I find this of very questionable pedagogic value.

Bootstrap’s use of scheme is also a great example of matching tool to environment.Scheme is pretty mathy and can lack a lot of the flash and sizzle at the start but in a math class, to a less engaged student, just writing a line of code is sizzle while a more engaged kid will see the relationship right away.Scheme also works well in where I’ve used it – partly because of our kids, partly because of my teams rep, and partly because even if it takes a few days, the kids ultimately see where they can go with the tool and concepts that go with it.On the other hand, I probably wouldn’t use scheme in an after school program or summer class (and this is from a guy that LOVES functional programming).

to a less engaged student, just writing a line of code is sizzle while a more engaged kid will see the relationship right away.Mike, what do you mean by “just writing a line of code is sizzle”?.

I’ve seen disengaged kids perk up just by changing something in the environment so the mere fact that they’re typing something in on a computer and getting some answer out can be exciting.

Exactly. First time I used a computer was with a teletype Model 33. [1] Merely hearing that clack away spitting back a simple basic program was enough to hook me.Later in college I got called into the computer center office because they thought I was selling computer time. I had written a program to just go in circles and run doing nothing for some reason (I was always also into engines, stepper motors, and just things that ran and made noise).Fun is important. Here’s the thing. As I have said before on AVC I am not a programmer. But I know enough to be able to make some money with a computer and even my early knowledge allowed me to write some simple programs that I used in my first business in the 80’s that helped run the place (essentially job scheduling) on a Unix system that I unpacked, hooked up, and programmed with the manuals that came with it. (About 35k in 80’s dollars iirc). (Ran for about 4 or 5 years post when I sold the business.) I wasn’t super professional but I got things to actually work even with my simple skill set. Yet in Wharton I didn’t do particularly well in or enjoy the one course that I took there which was APL. Actually I hated that course. If I hadn’t had the other experiences prior to that, learning APL would have totally turned me off. Luckily I was exposed prior – and this was the important thing – I was able to play.That said everyone is different and has different goals. I knew enough to solve a particular problem that I had in business and had fun writing those programs and modifying them. Even though I was the boss I enjoyed the positive feedback from employees when they asked for features and I was able to provide the solution. And I learned a great deal just from that interaction. And it all started with that initial (as you say) perk that I got from the machine reacting to something that I told it to do.[1] https://en.wikipedia.org/wi…

You would enjoy this.My college roommate had one of the first Apple dealerships. They offered every one an option to buy stock when it went public. He borrowed some money, bought some of it and forgot about it.Just found his certificate.Lovely thing to find.

No way!

Wow. [1]But what happened to your friend is a total surprise.I am actually having a hard time calculating exactly what that stock is worth making an assumption as far as the amount of shares he would have purchased.So I found this:http://1stock1.com/1stock1_…Therefore the total value of a $5,000 investment in Apple, Inc. at its IPO would be worth $1,502,888.63, assuming all dividends had been reinvested into more Apple stock.That was about a year ago. Today the stock is at 126.44 so the value is approx 25% higher. Of course after capital gains taxes it would be lower so let’s call it 1.5 million. Enough to buy a nice 1 or 2 bedroom in Manhattan, right?I wonder what happened to the dividends that are from the 90’s. I wonder if they went to the state already or can still be claimed (escheat or whatever it’s called). [1] I know the feeling in a way. I have things that I have been sitting on since the 90’s then one day someone comes along and pays real money for it. Until then to me it’s as if it’s a forgotten stock certificate.

dunnohe is a very successful guy jumping from one career to another doing well at them all.i really cared less about its value and more about the uniqueness of the happenstance.we had shoulder length hair when we met. still the best of friends.

Will definitely show this to my step kids who are the right age.They are at a traditional camp now, but are going to a robotics and programming camp in Princeton when that is done. [1] You (and the fact that I read AVC) are part of the reason for that by the way.https://www.idtech.com/loca…

In my travels I have noticed a large number of great coders who are also musicians. There is something about coding that taps both sides of the brain. So do we want all students to be software enginners? No. But do we want them to practice the connections between logic and creativity where much innovation happens – absolutely.

THIS +1,000,000,000,000 times: practice the connections between logic and creativity.Although I wouldn’t agree that coding taps both sides of our brains. I know some engineers who’d be considered “linear left-brain thinkers” whilst others are “hyper-creative right brainers” (e.g. the ones who do fractal art).The greatest left+right brainer is, of course, Da Vinci.My parents bought us a piano, a flute, a trombone, a guitar, violins and encouraged us to go to extra-curricular music lessons.My younger brother is the musically gifted one; he could play Rachmaninov by ear from a young age on the piano and violin.I apply the principles of music in my tech inventions.

“I apply the principles of music in my tech inventions.”What what? Whoa.

We’re ALL standing on the shoulders of giants…Here’s Ada Lovelace on music, computer programming and language…Music also has resonance and relevance in Quantum phenomena such as our intelligence and how we perceive (observable and subjective realities). Sound, light and energy share wave-particle duality.That piece of existing knowledge can be transformative when re-imagined, applied to and integrated with how we think about Human & Machine Intelligence.It’s the missing key to the “Holy Grail” of technology and it’s in the minds and busy hands of female makers that we find this key necessary to make the machines actually “intelligent”.Lots of male investors and managers can’t see this yet which is why they’re missing out on $ TRILLIONS — if not infinite $ — of value.:*).

THanks, that got me looking up Ada Lovelace.

The universal music/dance of the “resonant intervals” 🙂

See the music in the mathematics and the Universe and us makes sense.

And girls and women know PLENTY about functions and how to put things into order so those things perform.We prioritize the timetables and budgets of everyone in our households as well as, often, at work.For example, we apply a combination of logic and creativity (reason & emotions) to get our partners, bosses/colleagues and kids to do XYZ.That’s another example of my mother teaching me real-life functional algebra right there!

Yup !Creativity = imaginative recombinancy across any/all domainsinversely Imagination = creative recombinancy across any/all domains

Coherency.This is my favorite word.

A tech VC just told me yesterday how it’s hard to find good marketers. And I have heard this before in my geo/region. I might have told him to hire for 2 things: writing in English and general organization. A close third is the competency once called finger dexterity (because paper-based communications have not gone away and we need to be neat and tidy). Graphic design is an extra, only because writing is more important thing for that first hire. When the writing is strong enough, the analytic skills are not usually far behind. I say all this because writing in English is another application of logic, of course, if not the most important one! Hi Chomsky!

Bitcoin-Blockchain could do with good marketers, that’s for sure!The way the “male” parts of our brains think and communicate is about how something functions.Meanwhile, the “female” parts of our brains consider how to MOVE people forward.And therein is a nuance about how to make something work (function) better simply by how we write and communicate it.Chomsky’s right in his assumptions about inherited generative language and the significant influence of mothers. However, he’s missing key bits of structure (both mathematical and biochemical)…Although…It’s not his fault that Descartes, Pascal-deFermat and Bayes forked us down the path of Probability which, imo, is inadequate for dealing with language and parameterizing intelligence by.

Historically in the US we have taught mathematics different than other countries. Our approach has been to teach a lot of one subject then move onto the next. A deep dive into addition, for example, with single digits, then multiple digits then decimals, etc. Algebra is taught in eighth grade, geometry in ninth, etc.At least in my daughters’ elementary school, this has started to change. By third grade they are learning the basics of addition, subtraction, multiplication and division. They are starting to deal with basic fractions, which is actually the first place most students lose their interest in math (relationship of decimal, percent and fractions.) They are already learning the basics of algebra, geometry and statistics.It will be interesting to watch this generation of students to see how they do as they get older, and whether this change in approach helps.

Yep, my son was getting introduced to geometry, fractions and functions in 1st grade this year! Blew my mind.

This is exactly what blows my mind too. People say American kids suck at math and science. I’m not sure what is happening at high schools (because my kids aren’t that old) but when I see what they do in elementary school I think how can this be so?? When I see the quality of some of the work from kids in engineering, and the fact that many countries send their best and brightest over here for college I think?????Is it that we just don’t do the standardized tests??I’m not saying don’t try to improve I’m just saying I don’t see how we are so behind.

Yep, my wife is a 1st grade teacher. She’s constantly trying to come up with better ways to teach fractions. Amazing considering I don’t remember learning that stuff till….3rd grade maybe?? Maybe later??

Things cycle – for a while, we were teaching a mix of topics in high school. Ninth grade was mostly algebra, but with some geometry mixed in, 10th grade was more geometry but with more algebra etc – note that algebra is still considered a 9th grade class – many schools introduce, but IMO do a poor job really teaching algebra in 10th grade, but I digress.The result for this “integrated math” approach was that teachers were re-teaching topics each year. Most of the best math teachers I know think that the Algebra –> Geometry (which is really logic/deductive reasoning using Euclidean Geometry as a platform) –> Alg2 / Trig to be a better approach with some but not total overlap.Interesting and somewhat related — I was talking to a friend of mine who was on the US IMO team back in the day — he said that based on his experience in world competition, most Americans looked at problems from an algebraic point of view while Eastern Europeans frequently attacked problems from a geometric one.

Been reading Issacsons Einstein biography on this now rather lengthy trip back to CT from CA. One of the interesting parts is that Einstein regretted not spending more time on Math. Math is natures playbook.

Fred – thanks so much for the shout-out, and for your support in helping us scale in NYC!

i think its me who should be thanking you

So what’s with the common core way of teaching math?Is it a real issue or wonkish?

This rings SO true to me on so many levels. When I was a kid, as the son of an electronics engineer, my household had computers around in an era right before the forefront of so-called personal computing. Having them at my disposal to fiddle around with, I soon started to actually understand how they worked and I eventually learned how to code beginning with a very early version of BASIC. By the time Algebra came up in my schooling, I was doing fairly advanced things on the computer and I instantly grasped not only the logic but the power of Algebra as this amazing tool. Not only did I breeze through that part of my education but it utterly changed my life. Even today, Algebra is my favorite branch of math because it is such an effective tool for simplifying and ultimately solving complex problems.

Very cool.Not sure how Bootstrap is dealing with this, but something fascinating we found with MathFights is that kids and teenagers will gladly play the game endlessly – even if it means seeing the same content multiple times.I think using programming as a vehicle for learning maths is great because it allows kids to approach each problem in myriad ways, helping keep things fresh. Stoked to dig into Boostrap a little more!

In Bootstrap, the kids don’t _play_ a game, they _build_ one. And they only have it built at the very last step. And, frankly, the games are not terribly sophisticated (because the games are a means to teaching algebra, not an end).Part of the smarts is in designing a curriculum that, despite all this delayed and limited gratification, gives students a feel of ownership at every point (from even the first few minutes), so even their not-so-fancy game is _their_ not-so-fancy game. Limited but carefully timed injections of ownership keep them in the hunt.Therefore, the problem you mention isn’t problem at all for us, by design. We certainly agree that anyone who starts with playing games would have some trouble weaning kids off of them.Do get in touch if you have questions once you’ve seen our curriculum in more detail!

I definitely hear you on the power of ownership as a driver for completing an activity, it’s something we’re exploring as well.

I’d like to watch something like this on Livecoding.tv

I’ve taught functions, apparently withsome success, to a fairly wide variety ofstudents.So, let’s see: The proposal here is, toget students 12-16 to understandfunctions, we start with them havingaccess to, understanding, and likingcomputers, computer games, and coding.Hmm …. That’s dragging in extramaterial not necessary for the concept,functions, to be taught.Generally my view is that the math is moreimportant than the coding and that it’sbetter to use math to help teach codingthan to use coding to help teach math.In comparison with coding, which oftenrequires working through horribly poorlywritten specifications, math is much moreclear, simple, precise, and solid; in aword, the quality of the existing work inmath is much higher.Moreover, computers just do what they aretold, and coding is just the way to tellthe computers what to do. Then by far themost powerful way to know what to tell thecomputers to do is math, and this pointwill grow in importance over time as wehave already coded what we knew how to doeven in principle just intuitively andmanually and, then, need more powerfulways to tell the computers what to do.Motivation for FunctionsYes, in teaching it can be important tomotivate concepts, but we are just awashin means of motivating the importance offunctions including with examples frompure/applied math, physical science,really essentially all of the sciences,nearly every field of engineering, a lotin technology, and more.Intuitively we can think of afunction as a question answeringmachine: So, for a function f, wecan feed in a question x and getback answer f(x).In a response to this post I will attemptto include an illustrative figure of afunction as such a question answeringmachine.Example 1:Given a number, call it x, we couldcalculate the numbery = 2x – 3Then commonly y is said to be afunction of x.We could select several values forx and for each find thecorresponding value for y fromy = 2x – 3Then we could draw a graph with the valuesof x on the horizontal axis and thecorresponding values of y on thevertical axis.So, for each pair (x, y) we get apoint on the graph.It turns out, for this particularfunction, if we connect the points, thenwe get a straight line.In a little more detail for this function,when x = 0, we have that y =-3. Further, for each time we add 1 tox, we add 2 to y. That is,if x is increasing, then yis increasing twice as fast as x.For many, but not all, examples offunctions, it is possible, useful, andcommon to draw corresponding graphs.Example 2:A music CD? Sure: We can usefully regardit as an example of a function. So, as athttps://en.wikipedia.org/wi…we can start with the number 44,100. So,we divide each second into 44,100intervals of equal length, that is, pick44,100 points equally spaced. At eachpoint we get a number (or for stereo, twonumbers) which is the value of the soundpressure of the music at that point intime. We represent the sound pressure bya 16 bit number. So, the CD is afunction in the sense that, at eachof the points in time, the functionreturns a 16 bit number (two for stereo).We could draw a graph of this functionwith the points in time on the horizontalaxis and the 16 bit numbers on thevertical axis.Example 3:The Internet domain name system (DNS) isessentially a function. So, say, on acommand line in Windows, can use thecommand nslookup and type, say,nslookup google.comand get back a list of internet protocol(IP) addresses with the first one, say,167.206.145.94Then we can give a Web browser a uniformresource locator (URL) with this IPaddress:http://167.206.145.94and, thus, connect to Google and see theusual Google home page.So, in this case, the DNS is a functionthat takes domain names and returns IPaddresses.Example 4:In computing, it is common to have anobject-oriented class called acollection class for storingkey-value pairs.In the code of a Web server it is commonto need to arrange that each user have alogical session with a uniquesession ID and for each user have akey-value pair in an instance of acollection class where the key has thesession ID and the value has an instanceof a class, say, a session stateclass, that has data needed to specify thecurrent state of the user’ssession. The value is typically aserialization, of the instance ofthe session state class, to an array ofbytes.So, the instance of the collection classessentially defines a function.Redis is some open-source software popularfor handling session state and alsoessentially defines a function.The most popular algorithms forprogramming a collection class appear tobe AVL trees and red-black trees.SetsTo be more clear and careful about justwhat functions are, we should take theapproach that has been regarded for 100+years as by far the most clear, simple,precise, and solid — start with sets andsay what a function is in terms of justsets.Yes, here we are being more clear, simple,precise, and solid than is common in mostof the rest of thinking and writing –such is the nature of mathematics.So, here we say what sets are:In nearly all our thinking and doing inlife (we’re talking quite general stuffhere), we work with things, concepts,objects, numbers, colors, etc. Call eachsuch thing an element. We all arequite familiar with elements.For a definition, a set, say,A, is a collection of elements suchthat for each element x (we readsuch writing as: we have an element inmind; call it x) either x isin set A or x is not in setA.If x is in set A, then wewrite x ∈ A.The elements in a set A (again, weread such writing as: We have a set inmind; call it A) are in noparticular order so that it makes no senseto ask what is the first element in setA.Each element x in set A isin that set just once, never more thanonce.Note: If we want a concept of acollection of elements where an elementcan be in the collection more than once,i.e., such a concept we might call alist, then we can construct thatconcept using functions.Intuitively two sets, A, B areequal if and only if they have the sameelements. More precisely, sets A,B are equal if and only if for eachelement x, element x is inset A if and only if x is inset B. That is, the usual way toprove that two sets A, B are equalis in two steps: Step (1), show that foreach element x in set A, elementx is also in set B. Step(2), show that for each element xin set B, element x is also in setA.For sets A, B, if each element ofset A is also an element of setB, then we say that set A isa subset of set B and writeA ⊂ B.So, sure, sets A, B are equal ifand only if set A is a subset ofset B and set B is a subsetof set A, that is A ⊂B and B ⊂ A.One way to define a set is just to listits elements, e.g.,A = {1, 2, 3}For another way to define a set, supposewe have a statement P so that, foreach element x, statement Pis either true or false for elementx. E.g., an example of such astatement P is x is a number and is greater than 2. In that case, we can define the setA of all numbers greater than 2with the notationA = { x | x greater than 2 }orA = { x | P(x) }This means of defining sets is common andpowerful.Intuitively sets play the role of littlerefrigerator dishes, you know, like theone in the back long since covered withmold. So, such dishes let us separateleft over peas from soup, roast beef,fried fish, coleslaw, etc. Sets are justconceptual but otherwise let us separatethe elements we want to think about.The Russell ParadoxConsiderA = { x | x is not an element of x }Then immediately we have that set Ais an element of set A if and onlyif it is not.So, we have a contradiction. This exampleis due to B. Russell and is famous asRussell’s paradox.To avoid this paradox, there was researchin axiomatic set theory where,basically, the solution was a carefulversion of: Broadly, intuitively, we aresupposed to know what the elements areand, then, make the sets out of theelements or from sets we already have.That resolves the Russell paradox.More generally, the Russell paradox, likemany other paradoxes, is an example of astatement being self-referencing –generally we don’t like self-referencingstatements.Ordered PairsGiven elements x, y, we want toconsider the ordered pair denotedby (x, y).Intuitively, there is no problem, but wewould like to have a definition directlyin terms of sets.Why? Since the Russell paradox caused acontradiction, in an effort to avoid morecontradictions we want to see that it ispossible to define everything inmathematics in terms of just sets. Sofar, apparently we can.Here’s a definition of an ordered pair interms of sets:(x, y) = {{x},{x, y}}So, with this definition, we can knowthat, in the ordered pair (x, y),element x is the firstelement and element y is thesecond element.Athttp://en.wikipedia.org/wik…this definition is due to K. Kuratowski,but I’ve also seen it credited to N.Wiener.Now that we have a simple, clear, precise,and solid definition of an ordered pairdirectly in terms of sets, we know thatsuch a definition is possible and will notsee this definition again.RelationsGiven sets A, B their Cartesianproduct is the setA x B = { (x, y) | x in A and y in B }Set R is a relation on setsA, B provided that R is asubset of A x B.FunctionsGiven sets A, B, a functionfrom set A into set B is asubset of the relation A x Bso that for each x in Athere exists a unique y in Bso that the ordered pair (x, y) isin the function f. In this case wewritef(x) = yandf: A –> B.So we have defined a function as just aset of ordered pairs with a few extraproperties. So, this definition is notvery intuitive but is simple and solid andis in terms of just sets, nothing else.Then the domain of functionf is set A, and therange of function f is theset{ f(x) | x in A }Functions are super important in math,more so the deeper one goes. E.g., thevon Neumann approach to axiomatic settheory is based on functions. One of thevon Neumann contributions to math was infunctional analysis, right, basedon functions — it’s like geometry, thatis, like points, planes, etc. in ordinarythree dimensional space except each pointis a function. So, we get to have asequence of functions approximatinganother function.Generally in math, we can’t compute justwhat we want in one stroke but need tocreep up on what we want in steps,e.g., iterations. So, if what wewant is a function, then we might iteratewith functions to approximate the functionwe want.For the Kolmogorov approach toprobability, a central idea is a randomvariable, and his definition is a function– really cute, and powerful. E.g., cancombine with von Neumann’s functionalanalysis and have a sequence of randomvariables approximate a random variable wewant.Yup, functions are important in math.Functions in math are a much moreexplicit, precise, powerful, and generalconcept than functions in software. So,introducing functions in math viafunctions in software degrades the conceptof functions in math.

Picture of a function machine:

Your premises re. what Bootstrap expects are incorrect.As someone classically trained in mathematics and logic, I skipped most of the rest of your message. I will just say your perspective on functions re. computing vs math seems to suffer from not really understanding their computational richness, as identified in many projects starting from Scott-Strachey in denotational semantics or Martin-Löf in intuitionistic type theory.

Your premises re.what Bootstrap expects areincorrect. In what sense incorrect?I wrote: The proposal hereis, to get students 12-16 tounderstand functions, we startwith them having access to,understanding, and likingcomputers, computer games, andcoding.For type theory, there issome serious question if that ismathematics at all or solid atall. When I looked at it, itlooked like from some people whowere not able to think and writeclearly and had been smokingfunny stuff.The set theory I outlined goingback 100+ years is a goodcandidate for the most solidcrown jewel in all ofcivilization. Can go off intomodel theory, etc. anddig even deeper into the sub,sub-basement of foundations ofmath if you want, but set theoryis a great compromise high onsimplicity, clarity, utility,and quality.Clearly in no way is Bootstraptrying to drag their studentsinto type theory. InsteadBootstrap is concerned with justfirst algebra and wants to usecomputing to teach it.I outlined the problems:(1) Bootstrap asks for too muchas prerequisites, that is,computers, games, coding, etc.(2) Functions are reallyimportant and, yes, relevant incomputing as I illustrated insome examples, but, still, thesolid, high quality path tofunctions is (A) theintroductory, intuitive,motivational material I gavefollowed by (B) just the firstthings in set theory, thestudents should know anyway, andthen a definition of functionsdirectly in terms of sets as hasbeen the standard approach backwell over 70 years.It might have helped if you hadset aside type theory and readwhat I wrote.As I wrote, I’ve taughtfunctions to audiences of widevariety: My experienceindicates that what I wrote isquite accessible even to notvery good sophomore collegebusiness school students –right away, faster than even areally fast explanation. Rightaway.And commonly the students arevery pleased, finally, to have aclear, rock solid definition offunctions, a concept on whichthere is too much confusion.To be more clear, much of theconfusion is from trying tofigure out what a function isfrom fields outside of math.E.g., in parts of physics andengineering, students areexpected to understand astatement such as “kineticenergy is a function ofvelocity”. They are not reallysaying thatE = (1/2)mv^2,that is, that kinetic energyE is one-half massm times velocity vsquared. Instead, roughly whatis meant is, “in nearly anysituation, if increase velocity,then the kinetic energyincreases” which is verydifferent from any cleandefinition of a function.Actually, that “kinetic energyis a function of velocity” makessense at most only intuitively.Indeed, in nearly any situationin physics, there can be manyfunctions whose values givekinetic energy. E.g., knowingmass, kinetic energy is also afunction of momentum. For afalling ball, kinetic energy isalso a function of time. Alsoof altitude. Also of drag fromthe atmosphere. Also of thetemperature increase in theatmosphere. Also loss inpotential energy.Right: Such discussions inphysics are a terrible way totry to understand what afunction is and commonly resultin students, even quite late intheir studies, being badlyconfused about what a functionis.Similarly for much of computing.E.g., in computing, tounderstand functions, might alsowant to understand such mushysituations as scope of names,side effects, reentrant code,static storage, call byreference, call by value, callby name, exceptional conditionhandling, etc. What amess. Then a collectionclass with key-values pairs canbe regarded as a function.Similarly for a lot in SQL.Computing just does not providea clean view of functions. Mathdoes; computing doesn’t.Again, once again, one moretime, over again, this time justfor you, to be clear on justwhat the heck a function reallyis, what I wrote is a goodtreatment.For more, sure, go to Kelley,General Topology andSuppes, Axiomatic SetTheory. Also nearly anycollege text on abstractalgebra, e.g., sets, relations,equivalence relations,permutations, injections,bijections, surjections,automorphisms, isomorphisms,homomorphisms, inversefunctions, groups, rings,fields, etc., e.g., Herstein,Topics in Algebra, willgive crystal clear, rock soliddefinitions, descriptions,motivations, and examples offunctions fully in line withwhat I gave. For more that isclosely related, also get intoordinal numbers, cardinalnumbers, the axiom of choice,well-ordering, the really niceSchroeder-Bernstein theorem,say, the first parts of Royden,Real Analysis, theappendix in Kelley, and much ofSuppes.In math, functions are definite,clear, precise, and rock solid.In other fields, e.g.,computing, functions are asdefinite and solid as a monthold, dead jelly fish.

> 1) Bootstrap asks for too much> as prerequisites, that is,> computers, games, coding, etc.Coding is most definitely *not* a prerequisite for Bootstrap students, nor is gaming. Feel free to take a look at our materials, if you’d like to learn more.> In other fields, e.g.,> computing, functions are as> definite and solid as a month> old, dead jelly fish.You may be surprised to hear that “Computing” is actually a very broad field, with programming being just one component. And even within programming, there is an enormous diversity of languages and functional behaviors. Some of them might resemble the “month old, dead jellyfish” you speak of (perhaps you’d agree with my critique of Scratch, above?), but it would be naive to assume they all do. You will be happy to know that the language we use in Bootstrap is truly *functional*, meaning it models the behavior of the “clear, precise and rock solid” functions in algebra that we both find so appealing!

You wrote: Coding is mostdefinitely *not* aprerequisite for Bootstrapstudents, nor is gaming.But Fred wrote: In Bootstrap,students use code to make asimple videogame which theyreally enjoy doing. But theyare also learning functionsin the course of coding uptheir game. Once theyunderstand how functionswork in code, Bootstrapmakes the leap to algebraicfunctions. And, from what Fred wrote, Iwrote and you responded to, The proposalhere is, to get students12-16 to understandfunctions, we start withthem having access to,understanding, and likingcomputers, computer games,and coding. Between you, me, and Fred,there’s somemisunderstanding in theresomewhere. I’ll f’get aboutit unless we want to discussit over a beer, say, at thePlanet Diner on the SWcorner of the Taconic StateParkway and Route 55 out inDutchess County.You wrote: And even withinprogramming, there is anenormous diversity oflanguages and functionalbehaviors Right: We’re in fullagreement: So, net, due tothat “diversity”, computingis a terrible place to tryto understand what afunction is.So, my point is, for theteaching, be clear on what afunction is in math and thenexplain that nearlyeverything in the STEMfields is just awash inrough examples, some rougherthan others.But, in computing, for afunction there, due to, say,static internal variables,code that is not “threadsafe”, how exceptionalcondition handling works,and much more, functions incode are more complicatedthan functions in math, somuch more complicated that aclean definition of afunction that applies acrosscomputing is not possible.In math? Yes. Incomputing? No.Indeed, if in someparticular case you can justtell me that a function isidempotent, I’ll besurprised and thrilled.E.g., when I wrote thesoftware to schedule thefleet at FedEx, I wrote inPL/I which has some reallynice, but intricate, scopeof names rules. So, I had afunction, say, MIN, regardedas external, i.e.,resolved by the linkageeditor, that would find theminimum of a convex realvalued function of one realvariable.So, I wrote such a functionsay, CONVEX, and had it, interms of scope of names,internal to theblock where I wascalling MIN.Then I passed as an argumentto MIN the entryconstant of CONVEX.But MIN was a simple thing,and CONVEX was not butneeded a lot of data thatwould usually be passed toCONVEX as arguments. But,then, MIN was not writtenfor so many arguments.So what to do? I had CONVEXget the data it needed fromits calling block just byscope of names.Then MIN called CONVEXmultiple times, and on eachcall CONVEX used variablesin the block MIN was calledfrom and that CONVEX wasinternal to.Yup, MIN and CONVEX werefunctions, but they weregoofy things, much morecomplicated than a functionin math.That fleet schedulingsoftware kept FedEx fromgoing out of business.I did something similar insome IBM artificialintelligence software, alsoplaying cute games with thedifference between staticdescendancy anddynamic descendancyin PL/I — got an award forthat one.

Thanks for throwing a lot of fancy terms at me. I’ve actually studied all that math, and more. Herstein has a pride of place on my bookshelf. And model theory is something I work with almost daily. Which means I’m not only not intimidated, I know enough about those topics to know that all that is neither here nor there for this discussion.You have _assumed_ that Bootstrap teaches imperative functions, as is typical in much of programming. It doesn’t. It teaches functions that have a purely algebraic interpretation. See Felleisen’s seminal dissertation on the V-CS calculus if you want to understand the underpinnings of how it works. If anything, for two decades now we’ve pushed back against the dominant CS methodology of machine-based interpretations, which are what lead to the concepts you mention.As for your claims about prerequisites:• Bootstrap does not ask as a _prerequisite_ for coding. It teaches people who have never programmed before (the vast majority of our students) to program for the first time.• Bootstrap is designed to work well in schools that have minimal computing equipment. What computing technology we do need has been carefully designed to work in schools that have weak upgrade paths (e.g., a fully browser-based programming environment). We provide ample paper materials because we know the limited time schools have with computers. We work in a very diverse set of schools where, without thinking through these things extensively, the program wouldn’t fly at all.• Bootstrap does indeed expect that students will find games at least mildly interesting. The kinds of games our students design and write are utterly simple, and this level of engagement has not been a problem at all. However, we are acutely conscious that not everyone will find this immediately motivating. We have a variety of sibling curricula that do not involve games at all, but this has not gotten many requests from teachers, who find our approach to games sufficiently copacetic.For some reason you seem to take the existence of this program as some sort of affront on your own ability to teach math. It’s not. It succeeds through a very different set of parameters. We believe this problem is so big and so important that every line of attack that is promising is worth exploring, and I congratulate you on having one more that works. It’s unfortunate that you feel the need to jump in with attacking _assertions_ rather than _questions_ to make sure you have the basic facts right.I will now bow out and let you have the last word(s).

For your For some reason youseem to take the existence ofthis program as some sort ofaffront on your own ability toteach math. No. My posts here are not aboutme.Moreover, I am not interested inteaching, have never been, willnever be. I haven’t taught inyears.My interest in posting aboutBootstrap was for the good ofthe students.All I knew about Bootstrap waswhat I read in Fred’s originalpost.Fred mentioned that theBootstrap program was using”coding” as a way to teachfunctions to students who needto learn algebra. My suggestionwas that it was simpler, easier,etc. to teach functions as math,as I outlined, not as computing,and, then, apply that work inmath to where functions orsomething very close was usedmany ways all across the STEMfields, including computing.For your Thanks for throwinga lot of fancy terms at me.That was not my intention. Theterms are not “fancy”. Youmentioned type theory:I just found where I had readabout type theory: On 5/19/2015I happened to read about some ofthe work of Vladimir Voevodskyin”Will Computers Redefine theRoots of Math?” athttps://www.quantamagazine….So, yes, that is an effort toreplace set theory, e.g.,Zermelo–Fraenkel set theory, asthe accepted foundation ofmathematics. No thanks. Notinterested. No sale.From that article type theory isquite far from anything to betaught students in K-12.My suggestion was to definefunctions in terms of settheory, just the simplest,beginning parts of set theory.Such set theory is just dirtsimple, so simple that even withRussell’s paradox, in case anybright high school studentwanted to mention that, I wasable to give more than thenecessary material in just mylittle post to this thread.Yes, I outlined the usualapproach of axiomatic set theoryto circumvent the Russellparadox, and apparentlyVoevodsky has another way. Fromwhat I read about Voevodsky, nothanks.For your And model theory issomething I work with almostdaily. Which means I’m not onlynot intimidated, I know enoughabout those topics to know thatall that is neither here northere for this discussion.Intimidation is not the point.Why I mentioned model theory: Ididn’t want to suggest that allof set theory is simple somentioned model theory.I have long tried to avoid modeltheory. I do still have M.Zorn’s copy of P. Cohen’s paperon the continuum hypothesis andknow a guy who worked in modeltheory and Ramsey theory, beforehe made money enough in softwareto get a nice place in Malibu.Again I have tried to ignoresuch things and have beensuccessful.I just mentioned model theory asan example of “a bridge too far”for what is needed from settheory to teach functions inhigh school. That is, I wantedto say that to define afunction, we need only thesimplest parts of set theory, toput an upper bound on what isneeded.Again, to teach functions, Ijust wanted the simplest partsof set theory. Really simple,so simple I was able to give apresentation likely ready forteaching in just my post.For your Herstein has apride of place on my bookshelf.Yes, mine, too. Still, one ofmy profs definitely concluded,in math I’m an analystand not an algebraist.But, over and over I got pushed,pulled, dragged into more inalgebra than I wanted, e.g., theGalois theory in Herstein,coding theory, grouprepresentation theory,numerically exact matrixinversion based on primenumbers, the Euclidean greatestcommon divisor algorithm, theChinese remainder theorem, etc.So, algebra is not my favoritemath subject. But, sure, if Iwant to dig into the code forPGP encryption, I may review alittle number theory, first, inHerstein.For your You have _assumed_that Bootstrap teachesimperative functions, as istypical in much of programming.Yes, there is theimperative programmingstyle and the functionalprogramming style.The subject wasfunctions, and Fredmentioned coding. So, forfunctions in coding, Ireally should assume functionsas in C#, Visual Basic .NET,C++, C, Fortran, Pascal, PL/I,Algol, etc.But you wrote: It doesn’t. Itteaches functions that have apurely algebraic interpretation.See Felleisen’s seminaldissertation on the V-CScalculus if you want tounderstand the underpinnings ofhow it works. Well, athttp://dl.acm.org/citation….I see Matthias Felleisen,&lgr;-V-CS: an extended&lgr;-calculus for scheme, LFP’88 Proceedings of the 1988 ACMconference on LISP andfunctional programming, Pages72-85 and athttp://www.researchgate.net…see ABSTRACT The&lgr;-v-CS-calculus is aconservative extension of the&lgr;-value-calculus forreasoning about programs inScheme-like languages. Thebasis of the extended calculusis a symbolic rewritingsemantics for imperativeprograms. We show with numerousexamples how to state and proveequational properties ofScheme-programs in the calculus.The examples suggest that thealgebraic manipulation ofimperative-functional programsis as feasible and as fruitfulas that of functional ones.Being able to manipulate”imperative-functional programs”sounds like progress.I’ve long wanted a means ofprogramming where the sourcecode could be analyzed andresult in some usefultransformations and guarantees,e.g., correctness, performance.The history of techniques ofproofs of correctness makes thisgoal seem a bit challenging.So, here with &lgr; we aresupposed to see the lower caseGreek letter lambda as in:λ-v-CS-calculusSo, we are into the lambdacalculus, Scheme, and functionalprogramming.Uh, in Fred’s post, the maingoal was to teach algebra tohigh school students and therealso to explain functions. Good– algebra and functions aredarned important topics,specifically in mathematics;they are topics in mathematicsand not directly in computing orcomputer science unlesscomputing wants to engage in acase of academic theft orputting old wine, withadulteration corruption,degradation, dilution,pollution, in bottles with newlabels. And as in Fred’s post,part of the goal was to teachthis material to students whomight have trouble learning it.E.g., we’re not assuming thatthe students are all futurewinners of the Abel Prize, aFields Medal, or the TuringAward.Going back at least 70 years, ifonly from the challenge of theRussell paradox, which Iexplained, mathematics has had atheme, define everything inmathematics in terms of sets, inparticular to define functionsin terms of sets.As I illustrated, to definefunctions in terms of sets takesonly trivial amounts of settheory, that actually I was ableto include, that at least atfirst you indicated that youdidn’t read.The definition of functions interms of sets that I gave isrock solid and standard as insome of the references I gave,Kelley, Suppes, etc.So, what I gave is a goodtreatment, also okay for highschool, of the mathematicaltopic of functions.Then, again, as above: Fred mentioned thatthe Bootstrap program was using”coding” as a way to teachfunctions to students who needto learn algebra. My suggestionwas that it was simpler, easier,etc. to teach functions as math,as I outlined, not as computing,and, then, apply that work inmath to where functions orsomething very close was usedmany ways all across the STEMfields, including computing.I indicated that the topic offunctions in math is “clear,simple, precise, and solid” butin computing and the rest of theSTEM fields, often a mess.Now it appears that the “code”is to be some version offunctional programming, andclose to Scheme, Lisp, and theλ-calculus.I hope the students will stillactually understand algebra,functions, and something abouthow they are exemplified incomputing.

> Now it appears that the “code” is to be> some version of functional programming,> and close to Scheme, Lisp, and the> λ -calculus.Ah, I didn’t realize you were aware that there were languages that would address your concern! If you look at our materials, you will see that we do indeed use one of these languages.If you have any other burning concerns about our choice of language or pedagogy, you may want to take a moment to look at what we actually do with students before posting. Your concerns are well-taken and much appreciated, but this will help prevent us from going down rabbit holes like this. :)Anyway, I’m glad we could clear this up!

As is always the case on this blog when it turns to education, everyone suffers from an almost comic restriction of range. At best, we could teach algebra by coding for maybe the top 15% of the population–most of whom would find it boring and prefer the usual version we teach today, while a small fraction of this top say, 15% would only think it was cool if everyone else wasn’t doing it. Most of the “only do if it makes me not like the rest of the herd” would be white men, with men of other races making up a lot of the rest, and women barely registering on the scale. Good lord, women don’t like programming *now*, and you want to make programming the gateway to algebra? The rest of the population outside that 15% or so would simply never learn coding or math. So the short answer to this post is no, you shouldn’t teach kids algebra through coding, for the same reason you don’t put lipstick on a pig.The single biggest (really, the only) objective in educational policy is closing the achievement gap between races and income levels. So teaching algebra through coding is only anything other than a pipedream for a mainstream solution as opposed to a vc’s notion of something that will get funded unless it helps black and Hispanic kids (poor or no) improve relative to those same bright white guys. And it won’t. Ever. Massive interventions at the preschool level haven’t shown lasting effects, and you’re thinking hey, but teaching them computer programming as freshmen, that’s the ticket?!If you want to prove me wrong, take a group of kids with iqs ranging 90-105, and another group of kids with IQs lower than 90. Any race or income. If you see them improving dramatically in algebra, then come back and we can talk seriously. Until then, it’s a joke to even pretend kids of the group with IQ below 90 could do much with algebra in any form. As an example (not proof), here’s a story of two kids I taught (one in a math support, one in geometry) with documented IQs below 90. 90-105 IQs (or equivalent) can, I think, grasp enough of a1-a2 & geometry to make it worth the challenge, but they won’t get all of it.This application strikes me as catnip that pretends to be algebra–which certainly isn’t a bad thing, but not at all what Fred presents it to be. <li>Bootstrap, students use code to make a simple videogame which they really enjoy doing. But they are also learning functions in the course of coding up their game. Once they understand how functions work in code, Bootstrap makes the leap to algebraic functions. And students get it. Because it is tangible to them instead of being this abstract concept they just don’t grok.Newsflash: Math is abstract. I agree that making math tangible where possible is essential to kids who struggle with abstractions. But no, half–well over half–of the students won’t “get it”. And the problem I mean hell, look at the kids commenting. They are clearly bright and verbal with it. Anyone think they’re the kids that need a major boost in algebra proficiency? No.I’m not saying it won’t sell to suburban schools that track by ability, or to parents who think it’s super whiz bang wow for their little genius. Best of luck.One more post on functions coming up.

I think the point here is that code is a useful learning tool, not the only one; furthermore, the approach here is a voluntary one, not mandatory – so schools (and teachers, and hopefully students) who it doesn’t work for can drop it and try something else.It’s not a matter of doing it for the sake of being different, it’s a matter of being different for the sake of doing it at all. From the little education in Education I’ve acquired, different people learn different ways; therefore, if the goal is a numerate populace, having more different ways to learn numeracy is better than fewer.It’s like rolling dice, in a way – sure, you’ve got people who’ve rolled snake-eyes, and the people with a sum of 10+ aren’t going to be fazed if you pick the red die rather than the blue one, but if a lot of education only works when the red die reads 3+… why not offer a method that focuses on the blue?

We in Bootstrap share your concerns about some of the well-funded programs out there, which wind up catering to the elite.In contrast, Bootstrap serves precisely the students you’re talking about: under-represented kids who are under performing in their math classes. We’ve been doing this for ten years now, and (as our our papers show) our data shows real results from this population.

Good job!

Oops–my connection at home keeps dropping. Never got around to part two last night, and I’m having a terrible time with this commenting system.But leave cognitive ability aside, it’s not really true that algebra I today considers functions an essential element. We work primarily with different strategies of solving equations and introducing linear and quadratic equations, leaving aside their status as functions. The five big ideas of algebra I traditionally have been graphing lines in slope-intercept form, multi-step equations solving for x, binomial multiplication, trinomial factoring, and simple systems. Common Core seeks to move those to earlier grades that are called something else, and renaming algebra 2 to algebra 1. I doubt that will succeed. Hasn’t so far. “Functions” have been part of algebra 1 standards long before Common Core, but we don’t usually do more than nod in the direction of the Vertical Line Test and maybe visual representations of non-algebraic functions, and then only for the test in algebra one.Algebra 2 is where we start to explain the complexity of functions. Functions in math are much more complex than what programming offers–and I speak as someone who was a programmer/systems/business analyst for years, and who does use coding as a way to analogize functions. But functions and equations aren’t interchangable, more like interlocking Venn circles. About six weeks ago, I wrote this piece on explaining function notation to algebra 2 students. I thought it was a fuzzy piece, but a surprising number of math professors and college-level instructors found it instructive and said nice things about the issues I raised (you can see them on Twitter). Meanwhile, applied mathematicians and hobbyists commented that the entire differentiation between equations and functions unnecessary. (or they misunderstood my problem set as being about a system, rather than as way to introduce function notation, but whatever. )So functions in algebra 1 are not nearly as extensive as the program seems to offer, and not because the teachers just don’t bother but because the essential skills of algebra 1 just don’t include functions. Meanwhile, the complexity needed to understand, or at least start to grasp, functions in the depth they’ll need for advanced math is simply not there–and isn’t intended to be, based on the kids promoting it. Too much for algebra 1, not enough for algebra 2.

Delete.

Talking about startups teaching kids algebra, I would highly recommend you check out the game Dragonbox by the French/Norwegian company WeWantToKnow. Best take on the problem I’ve seen so far: http://wewanttoknow.com/alg…

Dragonbox is very cool but, as I hope is clear, this is a fundamentally different thing. Dragonbox uses a _created game_ to teach algebra — there are many of those. Bootstrap is using _the creation of a game_ to teach algebra. Also, unlike Dragonbox, Bootstrap focuses on functions due to the cognitive burden they present to learners.

There’s no better way to learn math than for it to be applied.I never got algebra until I started seeing it used in Physics equations (Sci-Fi Geeks <3 Physics).Then everything changed.

This makes perfect sense to me.I learned how to program (in BASIC on an Apple IIe) when I was in 4th grade. By the time I got to algebra (8th grade) everything was super intuitive because if already been using variables, etc for years.

I agree with you. We may be dealing with semantics here