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 was recently admitted into a Computing and Software Systems program (basically software engineering) and one of the first courses I'll be taking is called Mathematical Principles of Computing. The course description:

"Integrating mathematical principles with detailed instruction in computer programming. Explores mathematical reasoning and discrete structures through object-oriented programming. Includes algorithm analysis, basic abstract data types, and data structures."

I'm not a fan of math, but I've been doing well in all my math classes mostly A's and B's ever since I started two years ago, and I've been doing math every quarter - never took a quarter without math - so I've been doing it all in sequence without gaps.

However, I'm worried about this class. I've read briefly on what discrete math is and from what my advisor told me, its connection with computer science is that it has alot to do with proving algorithms.

One thing that my instructors briefly touched on and never went into detail was proving algorithms, and when I tried, I just wasn't very good at mathematical induction. It's one of the things that I ignored every time it showed up in a homework problem (usually in Calculus III which I'm finishing up right now).

1. What can I expect from this class?
2. How can I prepare myself for this class?
3. Other tips?

Thank you.

share|improve this question

closed as off-topic by MichaelT, gnat, GlenH7, Bart van Ingen Schenau, Dan Pichelman Nov 18 '13 at 19:07

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, gnat, GlenH7, Bart van Ingen Schenau, Dan Pichelman
If this question can be reworded to fit the rules in the help center, please edit the question.

We're unlikely to be able to give you advice on a course that we're not teaching, at a university we're not attending - there's too much of a difference across schools. Have you asked these questions of your advisor? The professor teaching the course? The TAs? Students who have already taken it at your school? –  blueberryfields Mar 12 '11 at 23:13
I'll be attending the school next quarter so I should be able to get help from TAs and teachers then. I was hoping to get general answers/advice from people who have taken a course similar to this one, where the topic of concern is discrete mathematics and its relation to computer science/programming. –  ShrimpCrackers Mar 12 '11 at 23:17
I just checked but only the syllabi for the current courses are listed and this course is offered next quarter. –  ShrimpCrackers Mar 12 '11 at 23:29
@ShrimpCrackers You might want to take a look at Knuth famous Concrete Mathematics book, if you have some time. It can/will give you a view on the mathematical basis of CompSci. –  Vitor Mar 12 '11 at 23:30
If you don't like math why'd you pick Software Engineering? Or is it that you don't like certain types of math (i.e. Geometry)? –  Kenneth Mar 12 '11 at 23:50

4 Answers 4

up vote 3 down vote accepted

I would not worry about the course. Discrete math is a breath of fresh air when compared to higher-order continuous math courses such as differential/integral calculus and differential equations. Discrete math is the branch of mathematics that underlies the field of computer science. If you have ever built a binary tree, then you have already worked with a discrete structure. A binary tree is as type of discrete structure known as a connected acyclic graph. A binary tree has an average case time bound of O(log n) and a worse case bound of O(n).

share|improve this answer

Quite frankly Discrete Math separates the men from the boys. The people who create complex compression algorithms from the ones who buy the libraries to use it in their application. If you're interested in going deep within computer science, this is the gateway to that path.

share|improve this answer
what would people who buy libraries be less "manful" that the ones who write it? Programmers tackle complex problems everyday in different fields with different set of skills. Your answer is not helpful at all! -1 –  jasonco Mar 13 '11 at 23:54
If you're taking it as a slight. I didn't intend it that way. Let me put it this way, if you want to be the guy with a patent for a new algorithm, you're not going to do it without a solid math background. When I meant men from boys I meant the people who are going to go deep in Comp Sci versus those who are going to do applied computing. There's nothing wrong with either group just saying that if you're serious about comp sci Discrete Math is the turning point. You get through that the rest is applying what you learned with DM to a specific field. –  Mike Brown Mar 14 '11 at 4:36
BTW I consider myself a Software Engineer...not a Computer Scientist so I'm in the "boys" group I guess. I love Computer Science but I quit school after Discrete math because I love making money better. Never had a chance to finish my degree. –  Mike Brown Mar 14 '11 at 4:40
I have computer science degree myself and work as a software developer. However, I wouldn't simplify things as "men" and "boys". I see it from this perspective: you may have skills as a software engineer that people who write "complex" algorithms don't have. –  jasonco Mar 14 '11 at 13:45
The people who create complex compression algorithms are the information theorists, not the number theorists or the graph theorists. –  Peter Taylor Mar 14 '11 at 22:50

From the description it sounds like more of a programming class than a computational math class to me. Honestly discrete math isn't anything to worry about and I don't remember in my discrete math class proving anything... Unless finding an answer was a proof... shakes head... Even in everyday programming I think you would find it very useful to know and be good at discrete math... its a problem solving technique that is extremely useful!

EDIT: It might be helpful for you to know that a LOT of employers want to see strong math skills because its the math skills that will lead to discovery, creation and advancement of software. That's what the industry wants/needs.

share|improve this answer
This is so much the case, that when I interview for software engineers, I set maths questions mainly, not computing. When I have been to interview it has often been that way. –  Orbling Mar 13 '11 at 0:23
@Orbling, what kind of questions do you ask? –  Job Mar 13 '11 at 0:24
@Job: This sort of thing. –  Orbling Mar 13 '11 at 0:28
@Orbling, Are all your interview questions geometry based? It seems as though other fields of math might be more appropriate (in my mind anyway) to test someone for a software engineering position... –  Kenneth Mar 14 '11 at 0:20
@Orbling that makes sense... I hadn't thought about it like that. –  Kenneth Mar 14 '11 at 15:29
  1. I'd expect big-O notation, sorting, probably some stuff on binary trees, stacks and queues for examples of data structures but that's just a guess.

  2. Review how big-O works and what are some of the common principles behind OO like inheritance, encapsulation, and polymorphism.

  3. If there is a Computer Science Club at whatever educational institution you attend, consider asking them if any of them remember this course and what was covered.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.