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 also get a quick introduction to key theory topics, particularly 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 a C- or above in introductory programming for CS/CE majors (CS 125 or ECE 220) and in one term of calculus (Math 220 or 221). 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, it's best 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.

If you aren't sure whether you have the right background, contact us for advice.

Lectures and Discussion Sections

This course has 75-minute lectures twice a week and a 50-minute discussion section once a week. See the official registration system for the times and locations of lectures and discussions. Lectures are recommended but not required. They will present additional examples to help you understand the more difficult concepts from the textbook readings. Discuassions are required and discussion attendance contributes to your final grade.

Starting in week 3, the Thursday lecture period will be used for the weekly examlet.

Announcements

Announcements are made in lecture and/or on our Piazza forum. Information about exams can be found on your lecture's Exams page. You are encouraged to use Piazza to discuss concepts, homework problems, and the like. However, you may not post solutions to graded problems (e.g. exams, homeworks) that folks may still be working on. Even after the standard deadline, some of your classmates may still be working due to extensions. If you aren't sure whether it's appropriate to post something, consult the course staff.

On-line resources

We will be using

To sign up for CS 173 on piazza, you will need an access code that will be given out in lecture (or ask a member of the course staff). Please check carefully that you're enrolling in the forum corresponding to your lecture (A or B).

Most of you have been automatically registered for CS 173 on moodle. If not (e.g. not yet registered), use the same access code from lecture to enroll yourself. If you have to locate CS 173 in the main tree of courses, be aware that all engineering courses are listed under the College of Liberal Arts and Sciences. (Don't ask.)

Shortly before the first examlet, the instructors will create the gradescope site and add you to its roster.

If you have some reason why you don't want gradescope or piazza to know your U. Illinois email, contact the instructor to be added under an alternate email address.

Textbook

The official course text is Building Blocks for Theoretical Computer Science. This is Version 1.3, with a few updates for Spring 2020.

You will need to purchase the manual of discussion problems, available for about $5 at the Union Bookstore. You should bring this to your assigned discussion each week, along with writing materials.