Course description for CS 173

Course Topics

This course is an introduction to the theoretical side of computer science. In it, you will learn how to construct proofs, as well as read and write literate formal mathematics. You will learn to do a simple analysis of algorithm running times. And you will also become familiar with a range of standard mathematics concepts commonly used in computer science.

Prerequisites

This course is designed for students who have gotten a C- or above in CS 125 and in one term of calculus (Math 220, 221, or 234).

This course does not use calculus directly. However, it assumes a strong fluency with precalculus mathematics (algebra, plane geometry, trigonometry, logarithms, and similar). Calculus courses help develop this fluency, as do some other technical courses (e.g. physics).

This course requires you to analyze algorithms written in "pseudo-code." We assume that you have taken an introductory programming but the choice of programming language (e.g. C vs. Java) does not matter. You should have written programs that manipulate the contents of arrays e.g. sort an array of numbers. You should also have written programs that are recursive, i.e. in which a function (aka procedure aka method) calls itself. Aside from CS 125, ECE 190 and CS 101 also provide such preparation.

Other technical background can sometimes serve in place of these prerequisites. If you aren't sure whether you have the right background, come speak to one of the instructors.