CS 173: Discrete Structures Syllabus

The syllabus is divided into the following sections:

Please read all sections thoroughly; they provide a variety of critical information and useful guidance for succeeding in the course.

Course Description

Overview of 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.


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, etc.). 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/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 (a.k.a. procedure a.k.a. method) calls itself.

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


The official course textbook is Mathematics for Computer Science by Lehman, Leighton, and Meyer. If you are interested in reading another perspective, you may wish to consult Building Blocks for Theoretical Computer Science by Margaret Fleck. Each week we will post video lectures and lecture notes created by the instructors.

Online Tools

PrairieLearn is the primary tool we will use for delivering content. You will upload your solutions to lecture and homework problems, take examlets, and see your grades on PrairieLearn. Please log in and enroll CS 173.

We will use Piazza for Q & A and announcements. 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).

Video lectures will be posted on the CS 173 channel on Mediaspace. New video lectures will be posted by Tuesday of every week.

Back to top

Staff and Office Hours


Teaching Assistants

Office Hours

Office hours are shown in the following Google Calendar with links in the descriptions. Go to whichever office hours fit your schedule. You are not restricted to hours staffed by your instructor. Be aware that office hours may change. Revisit this page for current hours, and watch Piazza for last-minute announcements (e.g., someone is sick).

Please post your questions to the CS 173 Queue so that whoever is hosting office hours can keep track of questions.

Back to top

Assigned Work

Typical weekly schedule in this course will be as follows.

Missed examlets in a week can be made up the following week by taking 2 examlets --- the examlet for the week and the missed one. In addition, upto 3 examlets can be retaken at the final to improve scores. Solutions for lecture worksheets and homeworks are graded for participation. For the relative weight of these categories of assigned work see grading formula.


Monitoring grades

You are responsible for keeping an eye on your PrairieLearn scores and promptly reporting apparent errors. See the regrades Piazza post for how to report grading and/or entry problems.

Enter your scores from PrairieLearn into our template Excel sheet, to calculate your course total. If your percentage alarms you, seek help.

Lecture Worksheets and Homeworks

Every week you need to turn in solutions to worksheets solved during the lecture, and homework problems assigned for that week. Worksheet solutions need to be turned in by Thursday midnight (central time), and homework solutions by Saturday midnight (central time). These solutions will not be graded for correctness; as long as your solution provides an attempt for at least one problem assigned, you will get full credit for that week. To get full credit for lecture worksheets and homeworks, you need to only turn in 10 (out of 14) during the whole semester.


Fifty minute weekly examlets (mini-exams) will be held via PrairieLearn on Tuesdays beginning in Week 3 (September 8). The test will be taken during your regular lecture time. If you check out the grading formula, these account for most of your final course average. The schedule shows we plan to have thirteen weekly examlets, not counting the final.

Each missed examlet can be made up the following week by taking two examlets. Details are given on the missed work page. The 3-hour final exam will allow you to retake upto 3 examlet to help improve your total score.

Questions on examlets will often be slight variations of questions in the worksheet or homework. The best preparation for an examlet will be to work on that week's worksheet and homework problems, and then to make sure you understand their posted solutions.

Back to top

Grading Formula

Your final average is a weighted combination of your averages on examlets, lecture worksheet solutions, and homework solutions. Specifically,


When we translate these averages into final letter grades, a score of 90 will be at least an A-, 80 at least a B-, 70 at least a C-, 50 at least a D-. If the raw scores are running excessively low, we may revise these cutoffs to be more generous. However, this has happened only very rarely in recent years. In past terms, at least half of the grades have been A's and B's.

Grade Typical Description
A-/A/A+ Consistently strong performance and mature mathematical style
B-/B/B+ Solidly prepared to take later theory classes
C-/C/C+ Adequately prepared for later CS courses, esp. 225 and 374
D-/D/D+ Doing most of the work but not adequately prepared for later CS classes
F Stopped attending or missed many examlets; usually due to circumstances beyond the scope of this class

If you seem to be headed for a D-/D/D+ grade, seek help from the course staff.

We reserve the right to make adjustments to individual final grades to ensure that grades are appropriate in unusual circumstances, such as illness where it's infeasible to make up all the missed work, disabilities that affect the fairness of the standard grading formula, and so forth.

Back to top

Academic Integrity Policy

Historically, this class has very little cheating; we would like to keep it that way. Cheating ruins the experience for everyone and we will pursue appropriate penalties if we catch someone cheating. Please don't.

You can find a general discussion of academic integrity in the student code. You are expected to be familiar with these policies.

If you don't make a good-faith attempt to follow these policies, we may take action up to and including an academic integrity charge. Our standard penalty for cheating or plagiarism is a zero for the exam or assignment in question, plus lowering your final course grade by a whole letter grade. A second offense will typically cause you to fail the course.

The penalties for facilitating cheating or plagiarism, e.g., giving someone else the answer, depend on the circumstances. If the facilitation is deliberate, the facilitator may receive the same penalty as the person who did the copying.

Also notice that the department and college keep an electronic record of academic integrity cases. They may take more serious action if someone has prior offenses.

Back to top