// you’re reading...


Programming your way out of too much homework

A seemingly common high school math homework practice is to assign crunch assignments. Pages and pages of repetitive homework questions, essentially asking the same thing, but with different numbers. Arguably designed to reinforce a concept via a lot of repetitive practice (even though studies suggest that too much homework is counterproductive and lowers test scores). Though some students clearly pick up on task’s idea much faster, and fall bored with doing the same problem again and again.

What’s good with crunching out repetitive tasks, without complaints? Computers are! So is it really unfair (to ether student or teacher), if the same amount of homework time is dedicated to typing out the rules for solving a problem set into a TI 83 calculator, and having the machine crunch out the grunt work?

solving repetitive tasks with programming
By the way, Ruby does that in a single line
irb(main):001:0> 500.times { puts "I will not throw paper airplanes in class" }

TI 83 Tetris gameI think that is fair, as long as the students write their own code, not simply download a program for their fancy TI 83 plus silver edition calculator. They’ve got to learn something. Tetris is simply an unavoidable reward for quickly completed work.

Computers are not yet at the “Computer, solve all the quadratic equations on page six” stage, and nether are the hand held calculators that represent a fraction of the computing power. Developing math homework answers software actually requires the full understanding of the problem involved – all the rules, all the edge cases. It is said that a concept is demonstrated to have been learned the best, when one explains that concept to others. Programming is precisely that – an expressive language, used to unambiguously describe all the steps involved in problem solving of a certain type. Kudos for understanding math so well.

Read more


  1. Posted by Geoff | March 1, 2007, 1:59 pm

    Very convincing argument at the end, Tony. I like it.

    Reply to comment

  2. Posted by Biceps brachii | March 2, 2007, 12:55 am

    I surfed in by accident.
    You have interesting blog.
    I wonder do you have any conection to Macedonia (EU)? It’s abot your last name.


    Reply to comment

  3. Posted by Tony | March 2, 2007, 1:37 am

    Thx Geoff.

    For those interested, no, I do not have any (known, think six degrees of separation) connection to Macedonia.

    Reply to comment

  4. Posted by Kyle Korleski | March 2, 2007, 2:21 am

    I think I should learn Ruby on Rails…

    Reply to comment

  5. Posted by Clayton | March 2, 2007, 8:02 am

    I agree very much here with you Tony. However, I don’t think the idea that some students able to afford their ~$200 calculator and being able to punch code in to solve their problems is fair to other students that either a) can’t afford a “fancy TI 83 plus silver edition” graphing calculator or b) don’t have the know how or resources to learn enough to actually program their calculator to do the work for them. Denying other students the ability to learn in another way isn’t right if you ask me.

    Reply to comment

  6. Posted by Kyle Schouviller | March 2, 2007, 9:21 am

    I’m guilty of having done this, though it was for high school physics and I used Delphi.

    I think it’s important that teachers let students explore this avenue if they are able to. It certainly doesn’t hinder other students, and it is more productive for the student who is able to. Perhaps the teacher could even encourage the student to lead a lesson on programming something simple into the calculator so other students have an entry point to the topic if it interests them. I know I’d have probably picked it up at the time if I had someone to introduce me to the topic.

    However, I do understand the value of repetition. It really helps with retention. I could easily program something to solve math equations if I’m looking at a book while I’m doing it. Usually the nature of these problems is plugging a few variables into an equation and solving it, which is easy, but helps to build up fundamental skills.

    Look at Sudoku for example. It’s not a math problem, but you’re given some of the variables and you have to figure out the rest of the answers using the rules given. After doing it enough times, you’re likely to spot patterns and be able to solve the puzzles even faster. However, if you just write a program to solve a Sudoku puzzle, you’re not necessarily learning the material. You may know the rules behind the problem, but not the intricacies involved in solving it quickly and efficiently, or even applying that knowledge to other problems.

    Don’t get me wrong though, I think programming is a great way for students who are able and interested to apply their learning. It is a good way to help in understanding, and if they really don’t learn the material, it’ll show up on the test.

    Reply to comment

  7. Posted by Tony | March 2, 2007, 11:24 am

    @Kyle – I think you should learn Ruby as well ;)

    @Clayton – one doesn’t really need the fancy silver edition version, a basic TI 83 graphing calculator will do (it just has less flash memory) and a used one goes for about 1/4 of that price. Alternatively, I remember that one of my high schools had a bucket of those TI 83 that were given out in Math class during some “graphing functions” week.

    “Denying other students the ability to learn in another way isn’t right” – programming one’s calculator is that other way. (The other) Kyle seems to agree that teachers should allow students to explore this other avenue of a learning approach.

    @(the other) Kyle – you are absolutely right, practice establishes a solid foundation for a particular concept. Though back in high school I recall certain types of “problems” were assigned in much larger quantities, than needed to hammer in that point. Figuring out how to program a calculator just formed a path of least resistance.

    The example I used was the quadratic equation – once you figure out your A,B,Cs of the problem, additional practice will only increase the speed at which you type out the entire equation into the basic calculator (high school kids don’t do square roots in their head). The Sudoku example is different – while one might understand the rules to systematically fill out the grid (and do so in a single line of Perl), the goal is to train your brain to recognize patterns and hold numbers in your memory, not necessarily completing the puzzle.

    And yes, everything will always end up on a test. Welcome to University with final exams accounting for 80% of your grade (sometimes).

    Reply to comment

  8. Posted by Clayton | March 2, 2007, 2:39 pm

    @Tony: “programming one’s calculator is that other way. (The other) Kyle seems to agree that teachers should allow students to explore this other avenue of a learning approach.” – I believe that as well, but with schools becoming more and more tight with their materials, it’s very hard to get ahold of a TI-83 calculator, my school sure doesn’t lend out those calculators. Sure students could buy one, but that’s still a lot of money to invest into a calculator. My point is this, I’m all for letting students program their calculators and do their work that way, but for the students that don’t have a calculator to program, it’s not fair to them.

    Reply to comment

  9. Posted by Tony | March 2, 2007, 3:26 pm

    Well it’s not like those students are any more at a disadvantage as if there were a few naturally Math inclined students in class. Alternatively, computer terminals are much more accessible and easier to program, alas not as portable.

    A persistent problem with teaching is the natural distribution of students making up large classes. One would try to bias towards the middle, to accommodate the most students, but there will always remain a few struggling with the difficult material, and a few that will be bored with the same easy material. So while some would need that extra practice, others simply do not. There’s no way around this divide (other than having much smaller class sizes, but that is often not feasible). Programming is not for everyone, but it should bring some sanity into crunch work for those neglected student groups.

    Reply to comment

  10. Posted by Clayton | March 2, 2007, 3:53 pm

    I can see exactly where you’re coming from Tony, and I agree. (Just to note, I have been known to whip up a couple of programs to help with the massive amount of homework I sometimes get). However, there’s got to be some way to help those other students to keep up, even if we haven’t found it yet.

    Reply to comment

  11. Posted by Reilly | April 24, 2007, 2:14 am

    Wow this article really hit the spot for me.

    Four years ago now, during my final years at Australian high school, all maths students were required to buy a TI-83 (original). The text books contained (in print) TI-83 BASIC code for every type of maths problem. (Most of the time i didn’t read the paragraphs of text or look at the worked examples, i would just read the BASIC code and quickly gain an understanding.) We were allowed to use our TI-83 laden with programs in exams. The public education system obviously had the right idea.

    However, my teachers were ignorant and totally missed the point. They didn’t understand or promote the use of the TI-83 much beyond graphing.

    With no prior knowledge in coding i got my first lessons from the TI-83 manual for its version of BASIC. I actively used and improved the maths code. Then made BASIC games. Then went on to teach myself z80-risc assembly to make the cool Tetris-like games everyone played. Then after school i went on to do a bach. in computer science. And i like Python over Ruby. :P

    Of the ~50 advanced maths students in my year (of ~100 students), only 3 (me included) could write or modify TI-83 BASIC programs. What happened to the ideals of the 80s where coding should be taught in primary school? I remember being amused when i found an old book at the local library on z80 assembly coding: It was printed in size 18 font and elaborately illustrated with cute colourful robots moving bits of paper with numbers on them in and out of pigeon-hole boxes. It resembled a Mr Men book. (It was first published when the z80 was a common early-PC processor, but i dont recall the exact date.)

    The problem is computers became too complex and powerful. Teenagers of the Commodore 64 era have a much better understanding of computers than the teenagers of My Space. The simple, limited, self-contained TI-83 was my Commodore 64. It provided a perfect learning base for complex computer systems (thanks ticalc.org). It taught me how a programming language, machine code, RAM, ROM, display-buffer (LCD), input (keys) and CPU all fit together. All of which are buried too deep under a nice GUI in modern computers.

    PS: I just became a new fan of your blog.

    Reply to comment

  12. Posted by Tony | April 24, 2007, 11:56 pm

    Hey Reilly, welcome to the blog!

    It’s really cool how you’ve gotten into Computer Science just from the TI manual. It really shows that sometimes there just needs to be the right opportunity to spark the interest!

    Reply to comment

  13. Posted by Nick | January 7, 2009, 2:52 am

    “By the way, Ruby does that in a single line
    irb(main):001:0> 500.times { puts “I will not throw paper airplanes in class” }”

    put repeat ("I will not throw paper airplanes in class\n")

    Reply to comment

  14. Posted by Nick | January 7, 2009, 2:52 am

    err, I forgot a ,500 in the repeat function

    Reply to comment

Post a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>