HN user

tkosan

34 karma

My name is Ted Kosan. I am the lead developer of the MathPiper computer algebra system:

http://www.mathpiper.org/

My gmail address name is ted.kosan

Posts1
Comments26
View on HN

I am the main developer of the MathPiper CAS (http://mathpiper.org), and I forked it from the Yacas CAS in 2008. MathPiper is a rewriting system that is similar in design to Mathematica. Most CASs don't solve elementary algebra equations the way humans solve them by hand, so these systems can't show the steps they took in a form that is easily understandable by a human.

However, a few CASs do solve elementary algebra equations the way humans do, and the most famous of these is probably PRESS (Prolog Equation Solving System). The story of PRESS's development is an interesting one.

In the 1970s and 1980s, a group of artificial intelligence researchers led by Dr. Alan Bundy at Edinburgh University conducted research on how computers can be "taught" to solve elementary algebra equations the way humans do. The first thing they did was to try and figure out exactly how mathematicians do mathematics. They were surprised to learn that a significant number of the techniques that mathematicians used to perform mathematics were not written down anywhere. They were not in any textbooks, nor were they in any journals or research papers. As the researchers dug deeper, they discovered that the techniques did not have names, and they were not taught explicitly. The researchers concluded that mathematicians were using these techniques unconsciously. (Alan Bundy. The Computer Modelling of Mathematical Reasoning. Academic Press, 1983, p.164.)

Why were these researchers the first people in history to discover this information? I think it’s because computers were the first "students" in history that absolutely refused to learn any mathematics that was not taught explicitly. The researchers then devoted years of effort to discovering and naming the unwritten techniques that mathematicians used to perform mathematics. When they "taught" PRESS these techniques, it was able to perform mathematics similar to the way humans typically would.

The step-by-step solver I am building is based on PRESS, and here is an example of what I have working so far:

https://www.youtube.com/watch?v=cy6bwNBkAK0

I am in the process of writing a step-by-step elementary algebra equation solver that solves these problems like a human does. One thing I have learned from this experience is a good way for a person to discover how much they don't know about even the simpler parts of mathematics is to try teaching them to a computer. This leads me to suspect that Meai is correct about most mathematicians not having a complete understanding of the material they teach.

Doug Lenat (who started the Cyc project) says Cyc is the "last man standing" of the large logic-based AI projects. So I don't think any open-source projects that are similar to it exist.

If aigrant.org was able to provide accounts on a Cyc system to community members, would you be interested in having one?

I spend 1-2 hours each day learning Cyc, and each day I see it do something new. For example, I just asked Cyc "Where did the 2012 Summer Olympics take place?" and this was its response:

  %cycl,microtheory="InferencePSC"
  
  (eventOccursAt 
      (SummerOlympicsFn 
        (YearFn 2012))
      ?VAR)
  
  %/cycl
  
      %output,mpversion=".257",preserve="false"
         #  ?VAR                          
        --- ---------------------------------------------------------------------
          1 UnitedKingdomOfGreatBritainAndNorthernIreland
          2 England                       
          3 EasternContinent              
          4 ContinentOfEurasia            
          5 Occident                      
          6 MilkyWay-Galaxy               
          7 PlanetEarth                   
          8 NorthernHemisphere-Region     
          9 ContinentOfEurope             
         10 CityOfLondonEngland           
  .   %/output

I have had access to the research version of Cyc (http://www.cyc.com/) for over a year, and its capabilities are breathtaking. If aigrant.org had a subcommunity of people who were working on Cyc-related side-projects, I would definitely be interested in contributing to it.

What would be helpful is if aigrant.org could provide an account on a Cyc instance to community members.

How well do you understand the kind of elementary algebra equation solving that is taught in high school? If you don't understand it well enough to write a program that can solve easier elementary algebra equations, then learning how to write a program like this is a great way to start learning how math works.

If you are interested in discussing this topic, feel free to contact me using the email address that is in my profile.

I am the main developer of the MathPiper open source computer algebra system (http://mathpiper.org). An effective kind of programming language to learn that will help you learn math is a programming language that is part of a computer algebra system. The following video shows MathPiper solving an equation step-by-step:

https://www.youtube.com/watch?v=cy6bwNBkAK0

If you are interested in learning the MathPiper programming language and how this solver works, feel free to contact me using the email address that is in my profile.

I am the main developer of the MathPiper computer algebra system. When students ask "when will I use algebra?" it is a symptom of a deeper problem, which is what they are being taught is not algebra. Almost no math teachers know how the "game" of algebra actually works, and therefore they are incapable of teaching others how to play it. What are they teaching that is being called algebra? That's a good question. What would the game be called that operated exactly like chess, except the rules for how the pieces are moved were never written down and never taught explicitly? Lets call it c_es_. One critical ability that is needed to be good at c_es_ that is not needed to be good at chess is figuring out how the pieces are moved by only observing how other people move them.

Most people don't like playing games they can't win because they have not been taught how to play. Most people would not like playing c_es_ for this reason, so they would only play it if they were forced to. They would also start asking questions like "why am I being forced to play this illogical game?". The way to help your son is not by providing him with reasons for why he is being forced to play a game he has not been properly taught how to play. The way to help him is to simply teach him how algebra actually works. I can show you how to do this (my contact information is in my profile).

I think new education systems that are based on software will eventually replace most teacher-based education systems. Not only do teachers not scale, most of them don't understand the subjects they are teaching at a deep enough level to teach these subjects effectively.

I am convinced that software tutors that are based on AI research which was primarily done in the 1970s and 1980s will form the core of these new software education systems. For the past few years I have been working on an AI tutor for solving elementary algebra equations that can already teach parts of this subject better than a human can. If you are interested in discussing how AI tutors like this can be used to help realize the vision you have for Bloom, contact me using the email address that is in my profile.

The book “A Logical Approach to Discrete Math” by David Gries is excellent for learning math on a theoretical level, and for understanding proofs.

I have found that writing software that automatically solves elementary algebra equations using the techniques humans use is also a very good method for understand how math works at a deep level. Here is a demo of a step-by-step equation solver that I am currently writing:

https://youtu.be/cy6bwNBkAK0

Contact me by email if you are interested in learning more about either of these options (my email address is in my profile).

No currently used step-by-step equation software I am aware of shows all of the steps (inferences) that are needed to solve an equation, and why it took those steps. For example, I just had cymath solve 8x - 2 = -9 + 7x. The solution it provides is missing steps, and there is no explanation of why it took the steps it did. The solver I am writing shows all of the steps needed to solve an equation, and it is capable of explaining why it took these steps (although the "why" part is not shown in the video).

I think teaching fundamental mathematics to programmers using ITS (Intelligent Tutoring System) technology is a very promising idea. For example, an ITS that is capable of doing step-by-step elementary algebra equation solving would be able to teach this subject, and it would also be able to provide instant feedback which is much more detailed than a human would typically provide.

I have been working on a step-by-step elementary algebra equation solver for a few years now, and here is an example of what I have working so far:

http://p1.ssucet.org/tkosan/misc/mathfuture/steps/solve_equa...

If you are interested in discussing the possibility of teaching programmers fundamental mathematics using technology like this, feel free to contact me (my email address is in my profile).

In 1993 my wife and I had a son, and we decided to homeschool him. I took responsibility for my son’s mathematics education. I started by collecting hundreds of used math books (and some new ones), and then I identified the best of them to use as textbooks. I discovered that most of the books were of very low quality, and that only a few of them seemed to be any good. I did not realize until my son was in college that the reason the “good” books were good was because they were based on formal mathematics.

My son did not have any noticeable talent for mathematics when he first started learning it. In fact, he was not very good at math at all. I couldn’t directly teach him math because I did not understand it very well at that time, so I had him work through some of the math books I set aside. Before he went to college, he worked through one “Saxon Math” arithmetic book, one book titled “How to Think Like a Mathematician” by Kevin Houston (which dealt with how to do proofs), and a book titled “Fundamental Mathematics” fourth edition by Wade and Taylor (which was based on 1960s New Math). Around a third of the way through the fundamental mathematics book he apparently saw how formal mathematics worked because he started being able to do mathematics quickly, accurately, and with confidence. He did not like math very much up to this point, but as soon as he was able to do math, he began to like it more and more.

Before college, my son never took even one math test. When he entered college, he majored in mathematics and physics. He was easily able to do all of the work in the mathematics and physics courses he took. This past spring he graduated with a GPA of 3.9.

Since 2008 I have been developing open source mathematics software that students can use to learn how mathematics works at a deep level. Here are some examples of what I have created so far:

http://patternmatics.org/test/expression_structure.html http://patternmatics.org/ https://www.youtube.com/watch?v=kYtsQ_PczlY http://www.mathpiper.org/

The last link is to an education-oriented computer algebra system. If you (or anyone else) is interested in learning more about this software and my thoughts on mathematics education, feel free to ask questions about it on the MathPiper developer list.

I started learning how to program in Prolog a few years ago. I found Prolog to be very difficult to understand, mostly because I did not understand what symbolic logic was. I then purchased a significant number of books on symbolic logic and started studying them. I don’t think it is possible to understand Prolog without first understanding how symbolic logic works.

My recommendation for someone who is interested in learning how to program in Prolog is to start by reading “Logic for Problem Solving” by Robert Kowalski:

http://www.amazon.com/Problem-Solving-Revisited-Robert-Kowal...

I am currently about halfway through an earlier edition of this book, and it is the first book I have found that clearly explains the ideas upon which Prolog is based.

Steve Yegge has a blog post titled "Math For Programmers" which discusses this topic. Here is an excerpt from the post:

"1. Math is a lot easier to pick up after you know how to program. In fact, if you're a halfway decent programmer, you'll find it's almost a snap.

2. They teach math all wrong in school. Way, WAY wrong. If you teach yourself math the right way, you'll learn faster, remember it longer, and it'll be much more valuable to you as a programmer.

3. Knowing even a little of the right kinds of math can enable you do write some pretty interesting programs that would otherwise be too hard. In other words, math is something you can pick up a little at a time, whenever you have free time.

4. Nobody knows all of math, not even the best mathematicians. The field is constantly expanding, as people invent new formalisms to solve their own problems. And with any given math problem, just like in programming, there's more than one way to do it. You can pick the one you like best.

5. Math is... ummm, please don't tell anyone I said this; I'll never get invited to another party as long as I live. But math, well... I'd better whisper this, so listen up: (it's actually kinda fun.)"

Here is a link to the full blog post:

http://steve-yegge.blogspot.com/2006/03/math-for-programmers...