Is there any Discrete Math course or tutorial on the internet? Or on Khan Academy ?

## 26 Replies - 5613 Views - Last Post: 25 February 2013 - 04:34 PM

### #17

## Re: Learning Algorithms

Posted 22 February 2013 - 06:08 AM

Quote

Is there any Discrete Math course or tutorial on the internet?

If only thee was some way of searching for things on the web. I guess that's crazy talk though. Who could ever build a successful business around that...

### #18

## Re: Learning Algorithms

Posted 22 February 2013 - 06:16 AM

I mean a good one ... I don't want to follow a tutorial/course/etc that is not good ... I want to learn things the right way ... and since in my country you can't choose Discrete Math in highschool ... I can't make a difference between good and bad ...

So no need to be sarcastic since I practically learnt everything about programming by myself from the internet

So no need to be sarcastic since I practically learnt everything about programming by myself from the internet

### #19

## Re: Learning Algorithms

Posted 22 February 2013 - 06:34 AM

Ah, OK. A good course is a different question. I don't have first-hand experience of it but MIT put a lot of their course material online and they have a good reputation.

http://ocw.mit.edu/c...-2005/index.htm

http://ocw.mit.edu/c...-2005/index.htm

### #20

## Re: Learning Algorithms

Posted 22 February 2013 - 06:40 AM

Yea ... I saw that one when I googled ... but I can't find how I can "take" that course

### #21

## Re: Learning Algorithms

Posted 22 February 2013 - 06:51 AM

I don't think it's intended to be "taken", short of applying for their degree course. However, the lecture notes, assignments and sample solutions are there for you to learn from.

### #22

## Re: Learning Algorithms

Posted 22 February 2013 - 07:08 AM

I would like better a course or a tutorial of some sort that I can take step by step

### #23

## Re: Learning Algorithms

Posted 22 February 2013 - 06:02 PM

If you want to really visualize the sorting algorithms, this might be helpful.

It's certainly brilliant:

Bubblesort:

http://youtu.be/lyZQPjUT5B4

The same poster also has visualisations for the other major sorts. Check 'em out!

It's certainly brilliant:

Bubblesort:

http://youtu.be/lyZQPjUT5B4

The same poster also has visualisations for the other major sorts. Check 'em out!

### #24

## Re: Learning Algorithms

Posted 22 February 2013 - 06:32 PM

In computer science, you have to get good at reading and practicing yourself without something holding your hand and guiding you along, like a teacher/classroom setting. We have a math resource thread on DIC that's a good resource, though not a step-by-step guide.

Discrete Math classes are really unique. You could take three different Discrete Math classes at three different schools and get three very different flavors. It's generally a survey course with topics of interest to the teacher, including some or all of the topics: number theory, combinatorics, graph theory, discrete probability, natural languages, proof by induction, recurrence relations, logic, set theory, functions and relations, and computational complexity. Occasionally, it's used to teach you how to write proofs. I've taken both the survey and proofs-based versions. If you want good textbooks, Epp and Johnsonbaugh are very good. Rosen is the classic.

You could also look for online courses in those topics, though I think you'll find they start to become more like MIT's OCW than like a Khan Academy Calculus I class.

Discrete Math classes are really unique. You could take three different Discrete Math classes at three different schools and get three very different flavors. It's generally a survey course with topics of interest to the teacher, including some or all of the topics: number theory, combinatorics, graph theory, discrete probability, natural languages, proof by induction, recurrence relations, logic, set theory, functions and relations, and computational complexity. Occasionally, it's used to teach you how to write proofs. I've taken both the survey and proofs-based versions. If you want good textbooks, Epp and Johnsonbaugh are very good. Rosen is the classic.

You could also look for online courses in those topics, though I think you'll find they start to become more like MIT's OCW than like a Khan Academy Calculus I class.

### #25

## Re: Learning Algorithms

Posted 23 February 2013 - 10:38 AM

Hey !

I looked for Sedgewick's book and I was wondering what's the difference between "Algorithms in C" and "Algorithms in C++" , besides the language syntax , and with which one should I start ?

Thank you !

I looked for Sedgewick's book and I was wondering what's the difference between "Algorithms in C" and "Algorithms in C++" , besides the language syntax , and with which one should I start ?

Thank you !

### #26

## Re: Learning Algorithms

Posted 24 February 2013 - 03:13 PM

I can only vouch for Algorithms in C, haven't looked at the c++ version, but I would tend to think that simpler is better, so go with the C version. I also see that he credits a co-author for "C++ consulting", while he wrote all of the code for the C version himself.

Extending the ideas to object-oriented languages should really be just a matter of OO design. If you know how a linked list works, it should be no great trick to implement it in Java or C++ - that's the point of Java and C++.

Extending the ideas to object-oriented languages should really be just a matter of OO design. If you know how a linked list works, it should be no great trick to implement it in Java or C++ - that's the point of Java and C++.

### #27

## Re: Learning Algorithms

Posted 25 February 2013 - 04:34 PM

Algorithms are great fun, and I studied algorithmic complexity and calculus and data structures at university. I reasoned about graph algorithms and tried to understand the proof behind these.

Do I use my knowledge about algorithms in my day-to-day job as a software engineer? Not really. This may differ for those C++ programmers who are down at the machine level and need to optimise their code as efficiently as possible, but as a Java/Ruby/Python web application developer, I do not need to know how to implement a graph algorithm, or the merits of a dozen different sorting algorithms. I use in-built language features designed by those people with PhDs in Computer Science. I implemented an A* pathfinding algorithm the other day, but that was for fun, not something that someone paid me to do.

What I do find useful is a knowledge of design patterns and a good understanding of object orientated design. These are not really algorithms but they're transferable templates that you can take from one application to the next, and provide very useful ideas about how to structure programs. So my recommendation, assuming you know the basics, and understand why nested loops are bad and what sorting algorithms do, and linked lists and all those basic data structures, is to try and get your head around design patterns.

Do I use my knowledge about algorithms in my day-to-day job as a software engineer? Not really. This may differ for those C++ programmers who are down at the machine level and need to optimise their code as efficiently as possible, but as a Java/Ruby/Python web application developer, I do not need to know how to implement a graph algorithm, or the merits of a dozen different sorting algorithms. I use in-built language features designed by those people with PhDs in Computer Science. I implemented an A* pathfinding algorithm the other day, but that was for fun, not something that someone paid me to do.

What I do find useful is a knowledge of design patterns and a good understanding of object orientated design. These are not really algorithms but they're transferable templates that you can take from one application to the next, and provide very useful ideas about how to structure programs. So my recommendation, assuming you know the basics, and understand why nested loops are bad and what sorting algorithms do, and linked lists and all those basic data structures, is to try and get your head around design patterns.