8
votes

As the title says,

How important is Discrete Mathematics for a Computer Scientist? Background: I'm pursuing a Master's degree with a focus on fundamentals such as Algorithms, Complexity and Computability Theory and Programming Languages to get a good foundation for working in the field of Parallel Computing.

Some more background: My university grants a lot of freedom in the choices of courses for my Master's degree. It's officially called "Software Engineering", but due to a the broad range of electives, a different focus is possible. Interestingly, none of the electives is a lecture in Math! I'm thinking about doing a course about Discrete Mathematics that would take half a semester to complete successfully, even if I can't use it for my degree. So with this question I'm trying to find out if the effort is justifiable.

1
  • 1
    I had discrete math in bachelor... helped me in computer graphics and artificial intelligence.
    – K..
    Aug 31, 2012 at 14:48

2 Answers 2

27
votes

As a Computer Scientist looking to get a Master's degree with focus on "Algorithms, Complexity and Computability Theory and Programming Languages" I would say Discrete Mathematics is very important.

Discrete math will help you with the "Algorithms, Complexity and Computability Theory" part of the focus more than programming language. The understanding of set theory, probability, and combinations will allow you to analyze algorithms. You will be able to successfully identify parameters and limitations of your algorithms and have the ability to realize how complex a problem/solution is.

As far as the programming language, discrete math doesn't touch on how to actually program; but rather it can be used for software system design specification. I used "ZED" in university, and it was dealing with designing a system using set theory. I'm not sure what percentage of software systems are designed with set theory these days though.

The last important concept to grab out of discrete math is boolean algebra. This is very useful not only for creating logical solution, but it is very useful in programming too. Software can be made/broke simply on the boolean logic in it.

Overall, discrete math is not a numbers class for the most part. It makes you use your brain in ways no other classes do. It is a logical thinking class and you must have patience if doing proofs/logic computations don't come easy to you. I've seen people change majors because they couldn't think "abstractly" enough to get through the course.

In short, I would make a stance that discrete math would be important class to take for a Computer Scientist/Software Engineer.

3
  • 1
    Was going to answer but this is essentially my answer.
    – Eliot Ball
    Aug 31, 2012 at 15:37
  • It's been a few years, but I remember Discrete Math going into Languages. First half of the class was Boolean Algebra and Sets, second half was languages and automata. Were they just combining two classes?
    – CLo
    Jan 9, 2013 at 12:52
  • I guess it depends on the pace of the class. If it was learning about a bunch of theories I guess you could get away with saying it was one class; but if you're writing something like an automation spec using Set language, then its a combination of two classes. Discrete math is a broad enough topic that it should only teach theory and use examples (i.e. homework) to elaborate on the theory.
    – Kcvin
    Jan 9, 2013 at 14:57
2
votes

Actually Discrete Mathematics is the backbone of Computer Science or I say the Theoretical Computer Science. Without The study of Discrete mathematics, We miss the crux of Computer Science-Logic Development. It brings rational clarity to your solutions and a formal way of analysing a problem.

Every field in computer science is related to discrete objects whether it is databases, Nueral networks, Computer Organization, Compilers, Network Programming etc. I would say it is the 'parent subject' of computer science and every one should study this subject.

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