3

I am about to embark on a 'comprehensive' and thorough study of undergraduate mathematics. In the interests of efficiency and a desire to improve my programming skills, I ask:

In oppose to the pen and paper approach, would it be advisable to implement all of the problems I encounter in the textbooks in a programming language? Would there be any downside to this with regards to understanding the material? I am not talking about allowing the computer to solve the problem for me, just that I would like to implement the step by step process in a programming language.I will be using Python and later on C++, Haskell, Lisp and Java.

Thanks in advance.

  • 1
    Is your course only about discrete mathematics? I doubt you can program things about set theory for example (at a beginner level). – Gabriel Romon Apr 01 '14 at 18:37
  • Can you clarify what it would mean to implement the proof of a theorem? Most problems in mathematics beyond introductory schooling are in terms of symbols and abstract relationships rather than particular numbers. It can certainly be helpful to see how these relationships behave in response to particular numbers in place of the symbols (and computers are good for evaluating that), but that can only take you so far. – Dan Bryant Apr 01 '14 at 18:39
  • My course is a self-study course, I will be learning discrete/continuous, pure/applied, stats/probability and logic. – user123082 Apr 01 '14 at 18:49
  • Although not an answer to your question, I recommend you take a look at Doets and van Eijck, The Haskell Road to Logic, Maths and Programming. From the preface, "The purpose of this book is to teach logic and mathematical reasoning in practice, and to connect logical reasoning with computer programming. [...] [Haskell's] functional character allows implementations to remain very close to the concepts that get implemented, while the lazyness permits smooth handling of infinite data structures." – joeA Apr 01 '14 at 18:49
  • I don't know how one would implement a proof, I am aware of proof checking engines though. I mean I have heard of them. – user123082 Apr 01 '14 at 18:50
  • Thank you JoeA, I will most certainly consider that recommendation. – user123082 Apr 01 '14 at 18:51
  • I hope to work through most of http://hbpms.blogspot.co.uk/ and more of what is available to me in my personal library. I have books on problem solving, proof, engineering mathematics, statistics, etc. I have an interesting book called Computer Mathematics http://www.amazon.co.uk/Computer-Mathematics-Cambridge-Science-Texts/dp/0521273242/ref=sr_1_2?ie=UTF8&qid=1396378419&sr=8-2&keywords=computer+mathematics and I hope to work through 'The Art of Programming' at some point also. – user123082 Apr 01 '14 at 18:54

2 Answers2

2

To the extent that you're having to engage with the concepts you're learning in order to be able to write programs that explore those concepts, I certainly don't think this could hurt your learning process. 'Implementing' all problems you encounter, though, may be a bit of a tall order. I would suggest starting by looking at problems that interest you and writing programs to explore those problems.

In practice, your biggest obstacle is time. Life is too short to explore everything in its entirety, so choose your expeditions wisely and try to discover what you're truly passionate about.

1

Preamble/warning: So far, I do not do any mathematics on my computer. I’m interested in it and so I know a bit about it, but the only reason I post this as an answer is because it is just too lengthy for a comment. The following are immature estimations, but I really can’t imagine that I’m off by too much with them.


On “Would it be possible advisable …?”: Yes and no.

Yes: Although many of the statements (theorems) you encounter are fairly abstract and may even involve the highly non-constructive axiom of choice, there are proof assistants. (I recently learned about Isabelle which is based on ML and has similarities to Haskell.) It is possible to prove many abstract theorems using such tools. With Sage you can compute a lot of abstract things. So there are a lot of ways to do mathematics in a programming fashion.

(So, proof assistants are, I think, the only way to “implement” textbooks problems that involve proofs – and they are a huge amount of the problems and very essential to understanding.)

No: Implementing proofs and calculations means being very formal. I don’t even know if there are theoretical limits to the class of formal proofs that can be checked by a computer, but there is a practical one: There are statements which I just believe involve too much formal build-up to be expressed understandable to a computer. And the proofs, too, get more lenghty and lenghty. And also, there probably will be many arguments needed for simple exercises which may be clear to you, but very cumbersome to implement.

Bottom line: I don’t think it’s worth it to avoid pen & paper. To many mathematicians, mathematics is a lot about images and ideas and arguments which are not formal in nature, and maybe even vague or fuzzy. Trying to force them to rigorosity can cost you a lot of time without a gain of insight, and maybe even leading you astray.

Edit: I misread your question: But the bottom line: Although it might be theoretically possible to do all the textbook problems in a programming language, I really don’t think it is advisable. And actually, I think you will find this out for yourself, if you try to do this. You probably will feel the immense slow-down, and you maybe even will need to pen-&-paper-do the exercise first to see how you could possibly implement them.

Not avoiding pen & paper doesn’t mean avoiding the computer, though.

k.stm
  • 18,539