Daniel Lemire's blog

, 8 min read

We do not need to teach math and science

6 thoughts on “We do not need to teach math and science”

  1. John says:

    You are ignorant. We need to teach more mathematics so students can become good engineers.

  2. Will says:

    Roger Schank was the head of the lab at Northwestern University where I got my PhD. For the record, Schank is not a mathematician. But he has had a lot of interesting things to say about education, both the content (what to teach) and the process (how to teach).

    There is an interesting example of looking at a problem using Bayesian reasoning described at


    This is a clear example of right and wrong ‘reasoning on the basis of evidence.’ It is an example of how math can be used in the service of practice.

    To be fair, the math that my daughter is taking (algebra, basically) is more practically oriented than the math curriculum one usually thinks is used.

    (And, without basic math, how could we post to your weblog?)

  3. RivestF says:

    My opinion is that, it depends of the level. Working in multidisciplinary area, I would say that a lot of scientists should have done more math, a lot more math. But as for earlier, more general instruction, I think we should add more computer courses. Today’s adults are fooled by the internet, and what about our kids? More here: http://www-etud.iro.umontreal.ca/~rivestfr/wordpress/2006/10/29/un-dec-sans-programmation-est-ce-un-dec-sans-math/

  4. Guy: I agree. Being a good programmer has little to do with proving theorems. Programming is an art in itself and Paul Graham has written an entire book to make this point:


    The fact that we do not have, yet, recognition for programming as an art form is simply because programming is still a useful function and recognizing a useful function as “art” has consequences industrials would rather avoid… plus artists are poor and most programmers prefer to be well paid.

    Recognizing programming as an art form would put into question an entire branch of software engineering. There are many people, mostly people who went into business or research without ever being programmers, that think you can industrialize programming and turn it into a rigorous, step by step process that any monkey can follow. The boss designs the UML diagram with an architect, and he can then hire a bunch of inexpensive programmers to fill in the gaps. These programmers just follow the instructions and their work is checked by unit testing. In practice, this fails miserably and we have decades of experience to prove it. If you can’t buy talent, get out of the software business.

    The truth is hard to swallow: great software is built by great designers who, one would hope, have some background in mathematics (if only to understand the data structures), but who are committed, first of all, to good and pretty designs. Otherwise, you just get a bunch of code that seems to meet the requirements, and seems to mostly work. But yet, it never quite work right. It fails in odd ways and is impossible to fix completely.

    This is not to say that ugly hacks thrown together over the years do not work. They work and they are the only economically feasible option in many cases. But if you do not have enough great designers (“expert programmers”) in your team, you will simply start to experience serious code rotting and your project will fail. You will need to throw more and more money at fixing new issues and you will have to give up entirely on your code base.

    A company once tried to hire me to run their software department. They had invested on numerous inexpensive programmers over the years. I looked at the job offer seriously because I thought I could have done a good job at helping a team build great software. However, the minute the CEO started stressing the fact that their code base was a valuable asset, I knew not to take the job. The company went out of business a few years after I turned down the job. A code base, code thrown together over the years, has zero intrinsic value. If some of it was carefully crafted by great programmers, then, yes, there is probably great value in preserving some of it over the years and keeping the pieces together using some glue and some ugly hacks… but if you just keep on hiring cheap programmers, you have to understand that no matter how well managed and documented your software department is, your code base has no value. You can’t hire the worse artists and have them generate lots of art, and hope that the result will be valuable. It does not work.

    Programming is not a mechanical process.

  5. Guy T says:

    I totally agree with Schank. I would say that maths is used as a student “filtering device”… because it is easy to do so.

    Some of the best students I have seen in my (more than 20 years) career teaching CS had not background in maths. One of them had a degree in Literature: he knew how to organize his ideas, how to write clear and well-structured text, and he knew that “style” did make a difference — all these abilities, he could use to write good software (code as well as documentation).

    Good software design is about mastering complexity, with style, and this is not something which is necessarily learned by doing maths.

  6. SadieJane says:

    Without sounding like a fence rider, I partially agree and disaree.

    I strongly feel that math educationand skills are highly important. In fact, if students education also included some language skills, it would be almost complete.

    I do believe the most important factor is critical thinking. Viewing any new topic, or conversation, or idea with analytical common sense. Then, people would be less easily lead like sheep. Our youth would be prepared for the future, with the ability to determine how to learn from and adapt to the ever changing world.