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). If you have a grade below B- in either of these courses, you will probably find this course extremely hard unless you have some additional background. For example, if you got a C in Calculus I, you may be better advised to do Calculus II before this course.
This course makes only very limited use of calculus. 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) and programs that manipulate linked lists or other pointer-based data structures. 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, courses that provide such preparation include CS 101, ECE 190, and ECE 220 (198 KL). Notice that ECE 120 (198 JL) is not sufficient preparation and CS 103 is sufficient only if you got an A.
If you aren't sure whether you have the right background, contact us for advice.