I’m in Italian guy almost in my 30. I have a regular job as a programmer. When in school I’ve never been much interested nor good in math and even at the university I’ve been studying languages, hence something more on the literary side that on the scientific one.
When in high school I’ve had mostly literary classes, so, again, my current knowledge of algebra, geometry and arithmetic is quite basic.
I’ve always been interested in programming, though, up to making it my profession. With my growing interest in math, I’m tinkering with the idea of even getting a Computer Science or Computer Engineering degree at the university. Both rely heavily on maths and I would have to study it by myself, as I cannot afford following classes (as said before, I have a full-time job), starting from the basis that I don’t have.
Before attending to it, I want to start learning math by myself, to gain the necessary base knowledge I don’t currently have. Do you think it is possible to successfully study mathematics with such a short initial knowledge and not having my full day to do it?
Any general advice or book / site to get me started with the “preparation” study? What are the basic areas I should concentrate on to be prepared to the first year math exams?
Thank you in advance.
Your first course with programming in it will probably use some functional programming language such as an ML variant, Scheme, Haskell, a LISP, etc. As I understand it, universities start with that for two reasons, (i) it works well for teaching (this is debatable, though), and (ii) whatever misconceptions and terrible habits the neophytes bring to the table from unguided tinkering with e.g. Visual Basic will be almost entirely useless, thus ensuring that you also have a good chance of beating some bad habits out of them.
The first heavy math class in a CS education (other than the typically required first course in mathematics) is probably algorithms. Curiously the math requirements for an algorithms course are rather low in the “skills” department, but high in the “mathematical maturity” department. That first course in math will teach you the method of induction and – equally important – the ability to reason mathematically.
Get a solid foundation in problem solving. Many CS educations are actually not that math heavy but often rely on what is generally know as a “certain mathematical maturity”. Luckily quite a few good books exists about this subject, but none more important (and accssible/enjoyable) than:
How to solve it
If you stay clear of the graphics/optimization (and image processing) curses then you might get a graduate degree without doing any Linear Algebra, however you should properly pick up a basic book on discrete mathematics. Plus if you plan to do any programming lanugage theory you should read a book about mathematical proofs (In which case you should pick How to prove it).
And last, the only way to learn math is to do math, and in the context of CS you can get lots of good training by starting on project Euler. Finally top it off with reading a good algorithm book like The Algorithm Design Manual by
Steven S. Skiena.
I see we have something in common: we started as programmers by heart, so Your words sounds similar.
What I’ve discover after years of programming, influenced on my programming, scientific interests as well as career. That’s way I highly recommend it to you, even it might be hard way on beginning, later, it turns out to a lot of great and challenging fun:
They are more about practical algorithmic. It’s about problem solving, so you have to design algorithms and datastructures on your own. That’s why I call them “algorithmic contests”.
They develop not only programming skills. Cause They are about algorithms, they develop discrete-math, combinatorial, numerical, logical, asymptotic complexity intuition and many other skills, later, very very helpfull in turning whole CS into great fun, while keeping all practical aspects in your mind and hand at the same moment.
So, check out some programming contests available on the web, just like
where you can take “problems” and sort them by “ACC%” or “users” to get from easiest to hardest. Implementing stuff, gives your great opportunity to discover on your own, things, you later find in books. What’s advantage, you will learn it with fun, and remember much longer, cause of better understanding, and knowledge about practical application – I mean, “how to implement it”.
I’m currently in CS, so i could give you some titles of the books i have used over the years.
Discrete mathematics with applications by Susanna S.Epp
Calculus by Larson, Hostetler, Edwards ISBN: 0-618-14918-X I like this book the best for calc. I have like 5 calc books so…
Also You will probably be learning some sort of assembly language. I can’t remember if i even had a book for that, but we use MIPS.
We had to learn java for first year programming language, which almost any book from amazon should do.
For C, once you learn java you should pick up C pretty quickly. I really don’t even read this book. The class i am taking now is Haskell, ruby and prolog in one semester. So, haskell would be a nice little language to learn. Its pretty cool.
But i would definitely learn Calc and discrete math or statistics. discrete math is somewhat similar to stats so it would help.
But if a place to start right now is Calc.
Also i recommend CLEPing some of your general lower division course. This will save you money. Any REA book or even “5 steps to A 5” by mcgraw hill. While it will say AP what subject you take i found it useful for passing. I studied probably 2 weeks for one class i have never taken in my life and passed.
There are also plenty of resources out there like MIT online and Stanford online. They have free courses online.
Do you think it is possible to
successfully study mathematics with
such a short initial knowledge and not
having my full day to do it?
That depends on your university course and how faster you can learn and get skills, but you will like to devote at least 4-5 hours day, and will want to do as much exercises as you can.
When in high school I’ve had mostly
literary classes, so, again, my
current knowledge of algebra, geometry
and arithmetic is quite basic.
You should start with that basic stuff, they are the foundations for everything that comes next and doing that way will prevent you to go back very often while you are learning the college’s math. Once you get in touch with Algebra, Calculus and Discrete Math you will see how there is sinergy about programming and doing math that makes the hours worthy besides
the CS degree.
I want to give you an advice from my personal experience being a math student but like CS more 😉 :
half efforts don’t produce half results, you must do as more exercises as you can practicing
both theory and plumping work (when you get to lineral algebra you might remember my words),
don’t let that the amount of work to-do grow bigger every week, be sure to understand the theorems (that is, dont left the desk every time you get stuck, happens to everyone). After you dive in for a couple of weeks you will start noticing the difference… you will become more analytic and insightful.
Any general advice or book / site to
get me started with the “preparation”
study? What are the basic areas I
should concentrate on to be prepared
to the first year math exams?
Consult your courses specifications, they are many books out there, first read the ones your professor recommends…
Vi auguro buona fortuna (i wish you good luck right?)