tags:

views:

412

answers:

9

I have just started programming with Java and noticed I might need to improve my math skills if i'm to do anything worthwhile with it. I just noticed that some of the exercises should be easy for someone with a solid understanding in math as there seems to be some math formulae running the show. I finished high school two years ago and did not get any opportunity to do math at the highest level there. I'm deeply worried by this and so i'm looking for pointers from more experienced and knowledgeable people on what I should study to get a basic grasp of mathematics before indulging in deep waters.

I was generally a sharp student in math and I have got a real quick mind. My goal is to become a certified and well-experienced Java programmer by the end of the year. I know people will say experience takes time and effort but i'm willing to sacrifice whatever that I have towards fulfilment of this goal. I have programmed with PHP and MySQL a bit before and got a general understanding but Java gave me a real kick when I read about it. If you know any other stuff that may help me in this endeavour, please let me know.

Thanks.

+6  A: 

I strongly encourage you to read Steve Yegge's Math for Programmers.

If you're looking for some books, I recommend Concrete Mathematics and The Art of Computer Programming.

If you're looking for some problems to practice with, check out Project Euler.

Do not be discouraged by challenging problems. It's is only through overcoming challenges that you will grow. The community here is quite willing to give you assistance and nudges when you reach a roadblock.

Let's also not forget the famous quote:

Whatever your difficulties in mathematics, I can assure you mine are far greater.---Albert Einstein

Jason
Einstein was smart but overrated.
Hamish Grubijan
No, he was just a physicist not a mathematician... the math he needed hadn't been invented when he started working on General Relativity. No wonder it was hard. I've studied that stuff, it really is hard even with 80-odd years of improvement.
Andrew McGregor
General tensors hadn't been invented when Einstein did general relativity? Sorry, you'd better get your story straight. Einstein learned a lot about tensors and differential geometry from his friend Grossmann. He was a brilliant man, but he didn't invent the mathematics on which GR is based. Read "Subtle Is The Lord" by Abraham Pais. See page 212.
duffymo
@duffymo: Thanks for implicitly recommending me a new book to read. Looks great after reading excerpts on Amazon.
Jason
+7  A: 

Discrete Mathematics is what you are most likely needing. Understanding base 2 (binary) base 16 (hex) number systems is helpful a must. You don't have to get bogged down in discrete mathematics as some of that is way too deep and makes math majors cringe. Look over basics such as sets and logic.

As for trig/calculus... I have taken all these in college and have never relied on these extensively... or well, at all.

Zombies
Algorithms is also a branch of mathematics which is extremely important.
BlueRaja - Danny Pflughoeft
+1  A: 

Linear equations, matrix algebra, Base 2, 8 ,18, and 10 conversions, logarithms, and set theory (intersections, unions, etc) will give you a basic foundation. If your algebra is sound, look into discrete mathematics, precalculus, and trig. Once you've gotten that far, you should have no trouble continuing if you wish.

Honestly, it may be worth your time to take a placement test at a local community college to get an honest evaluation of your skills. From there, you have the choice of enrolling in a class or learning their curriculums through self-instruction.

Asklepius M.D.
+1 for community college idea
Hamish Grubijan
I'm not sure if base 18 is that important :P
svens
I couldn't get anything done without my trusty oct editor
rotard
A: 

"Concrete Mathematics" would be a book suggestion on this topic.

JB King
no, it would be the same book recommendation
Pete Kirkham
+2  A: 

Mathematical aptitude is not necessarily a prerequisite for being a good programmer. There is a strong association though in that good programmers tend to be good at math. That doesn't mean that learning more math will necessarily make you a better programmer. To become a better programmer usually takes a lot of coding. So with that in mind:

  • Code much and often and with best practices, try not to "cheat"
  • Challenge yourself
  • Try working through some problems on Project Euler
  • Trying doing advanced Sudoku in your head to practice deduction and to warm up
Paul Sasik
Also play with Einstein Puzzle 2.0 http://linux.wareseeker.com/Games/einstein-puzzle-2.0.zip/338379
Hamish Grubijan
A: 

Go through http://www.khanacademy.org/ math section. Most people graduate high school with only Calculus I under their belt.

If you go through all math here, you will have almost satisfied math requirements for a bachelors in CS. What remains is discrete math, algorithms, finite automata.

Check out MIT Open Courseware for that as well.

Hamish Grubijan
A: 

IF you have any free time left after all these great suggestions, I might throw Head First Statistics on your reading list as well. http://www.amazon.ca/Head-First-Statistics-Dawn-Griffiths/dp/0596527586

While not directly related to core Java programming, statistics finds many uses in some areas of computer science. For example, i"ve found this book very useful in some of the data mining projects I've been a part of.

I recommend this book because it is very easy and fun read, and serves as a good intro to statistics without bogging you down. This is that "before bead" reading you can do with minimal effort.

darren
A: 

This isn't recommendations so much as general encouragement; I learn by doing. Reading books on mathematics, out of the context of some problem to solve, is boring, dry and generally not conducive to learning. I find if I set myself a programming challenge, one that is above my current level of competency, I will learn a lot and open up new areas of knowledge as a consequence of solving the problem. Perhaps it's harder/slower this way, but I find it gives me a solid, practical grounding in a subject. For example, back in the days I learned a lot about modulo mathematics by trying to find the simplest way to do human Vs computer rock-paper-scissors game.... My two cents.

A: 

I've quite often tried working through books, and have a good selection of partly read maths books. I gained a lot doing a second-year Open University pure maths course (M208) a couple of years ago - it's well structured, you have to do all the exercises, and it was both wide enough to introduce a few things I wouldn't have looked at off my own bat, but deep enough to be satisfying.

Pete Kirkham