Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am currently a College Student in a Systems Analysis (3 year course). I am about to finish my course and would like to enroll in Computer Science at a University near me. I have a deep interest in learning sorting algorithms, measuring time complexity, cryptography, systems programming and security research. I am bored by the typical, high-level knowledge; java and general algorithm knowledge. I have absolutely no problem learning and utilizing new programming languages, mentalities and syntaxes.

My only worry with regards to entering this course is what Mathematical knowledge is required prior to entering. I have done linear algebra but not quadratic equations; I have not done Calculus, nor have I done any Big-O notation. I plan on enrolling in 1 (one) year, so this gives me one year to prepare. I would like to know what I should be studying and reading to prepare. Books, worksheets, videos and any sort of advice or opinion(s) would be greatly appreciated. I have a great passion for efficient computing/programming and solving problems in the most efficient manner. I'm just trying to figure out if I would be in over my head entering Computer Science. Some people have said that I am to old, 22 this year, I would love to hear the opinions and advice of the Stack community.

Thanks To All In Advance,


migration rejected from stackoverflow.com Jun 30 '14 at 0:56

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as off-topic by MichaelT, user61852, GlenH7, gnat, Dan Pichelman Jun 30 '14 at 0:56

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions seeking career or education advice are off topic on Programmers. They are only meaningful to the asker and do not generate lasting value for the broader programming community. Furthermore, in most cases, any answer is going to be a subjective opinion that may not take into account all the nuances of a (your) particular circumstance." – MichaelT, user61852, GlenH7, gnat, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

Which country? Oddly, it might make a difference :0) –  forsvarir Apr 14 '11 at 18:48
Speaking of time complexity - it's not "measured" but proven to be such and such, which is a mathematical problem. If you're interested in such things, you must not be afraid of a bit math. –  Ingo Apr 16 '11 at 18:54

4 Answers 4

How much math you need depends on the type and rigor of CS program you're entering. If it's a theorectical CS program, you will need some math. At minimum, plan on mathematical logic and proof, set theory, basic algebra, basic calculus, combinatorics and probability. In addition, I found graph theory and abstract algebra to be extremely helpful, especially in upper level courses.


Concrete Mathematics would be a good book covering various Math topics that tie into Computer Science. Rather than knowing specific course material before you take the course, I'd advocate understanding how you learn best and what kinds of Math interest you in terms of what kind of upper year courses may suit you better,e.g. Number Theory, Group Theory, Combinatorics, Analysis, or Topology to name a few topics.


A (good) three year degree in Computer Science will include a course on "Discrete Mathematics" which should cover the basics. If that's not part of the one year course you intend to take, see if it is available as a once off ... or try to get hold of the course materials and textbook and do it yourself informally.

Some of the topics that you mentioned may require deeper maths knowledge and skills, and it is not possible to predict whether you will learn the depth of knowledge in a straight CS degree / post-grad course. Serious cryptography for example probably requires a PhD in Pure Mathematics.

I have a great passion for efficient computing/programming and solving problems in the most efficient manner.

That can be dangerous ... if not moderated. Usually, it is more important that you get the program finished on time, that it works, and that the next guy (the one who takes over when you get hit by a bus) can maintain it.


CS is not about what you know, it's about building abstractions, implementing patterns.

I really would recommend you read Structure and Interpretation of Computer Programs (there's also the easier to follow lecture videos on MIT website, or youtube no doubt).

Although most programming languages are structured categorically, much of this structure is hidden from the programmer. Lisp (and many functional languages) are an exception to this and I think the 'bottom up', functional development style of Scheme / Lisp would be more useful to you than any single area of pure math.

The patterns you learn will be the same, and you'll see that no single paradigm can be universally dominant. As powerful as the pure, recursive functionality may appear initialy, it's useless unless used in combination with atomic, real-world predicates.

Calculus is just a way to join together and split stuff up in a well-structured manner.

Learn to control the order of evaluation, and the rest of it will come naturally..

I've also benefited hugely from remembering how blood sugar works, slower, steadier waves over longer lengths of time. The benefits of this pattern may seem only minimal until viewed as a combination in quadratic time such as a time series.

I'm pretty poor at explaining stuff like this, but if you want to read more then this item on Big O notation is a great example.