Programming, Education, Computer Science

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?

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" }`

I 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.

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

Reply to comment

Hi!

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.

Greetings!

Reply to comment

Thx Geoff.

For those interested, no, I do not have any (

known, think six degrees of separation) connection to Macedonia.Reply to comment

I think I should learn Ruby on Rails…

Reply to comment

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

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

@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

@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

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

alwaysremain a few struggling with the difficult material, and a few that will be bored with thesameeasy 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

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

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.

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

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

“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” }”

Turing:

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

Reply to comment

err, I forgot a ,500 in the repeat function

Reply to comment