Hacker News new | past | comments | ask | show | jobs | submit login

So many times at college in computer science I heard the idea that math == computer science and that it is impossible to grok one but not the other.

I've heard the famous Dijkstra quote "Computer Science is to computers as Astronomy is to telescopes", but one aspect of computer science education strikes me as fundamentally different than math education: The technological revolution brought by the compiler. While it's true that a compiler can't tell you if your algorithm is correct and is thus useless for algorithm analysis (although there are other tools for that), its ability to check syntax, etc. makes it an invaluable tool for the beginning programmer who once he is comfortable with programming can use it as a tool to explore computer science. The compiler is like a computerized instructor giving feedback for elementary programming in the same way that a human instructor gives feedback to students for elementary math. Of course in advanced math the student must reason out complex proofs, but at the beginning stages of any algebra or calculus course there’s a lot of "You must do X before Y" and its that kind of basic rules that are analogous to programming language syntax and grammar.

The compiler in computer science education is different from a calculator or a system like matlab or even those online assessment tests like "Webwork" found in higher math education because those tools are only binary in their feedback: "Either you're completely right or completely wrong, and I'm not going to tell you why you're wrong. Good luck!" If you had worked the problem out on the board with an instructor hopefully they tell you “You were close, but you messed up here, you can’t take the square root of that without doing this other thing first” or "you used the chain method incorrectly over here"

It is my goal to one day develop an open source "math compiler" that allows you to write out the steps of your problem line-by-line (either through pen input or some sort of math symbol input system) and let the compiler give you that sort of feedback that would otherwise take a dedicated tutor to give. I know that there’s a million ways to solve a given math problem, but math textbooks usually teach things in certain orders, so you more or less know what the student will know at that point in the semester, and if someone is already thinking beyond the material then they don’t need this helper at this point anyway.

It’s a crazy idea, but it is my hope that in the years to come we will see technology not necessarily replace human educators, but rather supplement them, allowing feedback that would normally consume all of one instructor’s time and being able to simultaneously provide that to an entire classroom.




I heard the idea that math == computer science and that it is impossible to grok one but not the other.

IMO that's bullshit. I started university majoring in math with CS as secondary, but ended up switching as I was struggling to pass in math while getting straing As in CS.

Funny thing is, I still had to take some "pure" math lectures and during an oral test for one of them the professor asked which part of the lecture (group theory) I found most interesting. I told him it was the algorithm for ennumerating co-sets, since as CS major, algorithms were bread and butter to me. He laughed and said that this was the part most math majors had problems with...


Have you ever used Wolfram's Mathematica? He may be a huge crank, but the software is really awesome for doing mathematics research and learning. It can do all sorts of calculations automatically, but you can also easily program it to do them manually; it shows you a step-by-step derivation of pretty much anything it can compute.

Many mathematicians use it for their day-to-day research, and for learning something like calculus it can be enlightening to have millions of examples of anything you can think of at the tip of a finger.


> ... an open source "math compiler" ...

Automated theorem provers behave much like this. As you lay out the steps of a proof they will check that each step is correct and show you what you have remaining to prove. You can start with a vague proof outline and refine each step until there is enough detail for the compiler to infer a full formal proof. Check out the Isabelle/HOL tutorial for a good example: http://www.cl.cam.ac.uk/research/hvg/Isabelle/documentation....

These tools are still very young but they have already proved useful in cutting edge research eg http://research.microsoft.com/en-us/um/people/gonthier/4colp...




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: