CPS 102 - What, No Algorithms?

The most painful decision in designing the syllabus for this course was to omit a treatment of algorithms. There is no discussion of computational complexity, recursive algorithms, graph or tree algorithms (however, recursion, graphs, and trees are covered).

The reason for this choice is lack of time. There is no hope to cover all of, say, Rosen's book in one semester. Attention then was focused on the purely mathematical  ideas that are of use in a computer science curriculum. If these ideas are not covered in the discrete math class, they are likely to fall in the cracks between computer science courses.

Algorithms, on the other hand, always have their own, separate course in every computer science curriculum. If algorithms are not covered in discrete math, they will be covered later on.

Of course, there is some advantage in teaching the same concept repeatedly at different levels, and previous exposure to algorithms would be convenient for students who enter a more advanced course on this topic. However, the risk of having no formal exposure to combinatorics or number theory at all is greater than the inconvenience of being exposed to algorithms for the first time in a dedicated course.

In addition, some of the same concepts arise in algorithms and in the narrower view of discrete mathematics that this course implies. For instance, recursion, a crucial idea for algorithms, is not an inherently algorithmic idea per se : A treatment of recursive definitions and the germane notion of proofs by induction fits very well both in mathematics and in this course, and will predispose the student's mind to the algorithmic version of this concept as well.