Introduction to the mathematical foundations of computer
science. Topics covered include: propositional and predicate logic,
proof methods, set theory, functions, sequences and summations,
mathematical induction, counting, pigeonhole principle, permutations
and combinations, relations and their properties, closure of
relations, partial orderings, introduction to graph theory,
introduction to algorithms, growth of functions and asymptotic
notation.
I, II (4 credits)
Prerequisite: Math 115.
The official required textbook is Rosen, Discrete Mathematics, 7th edition. The reading and homework assignments are from Rosen 7e. We recognize that Rosen 6e is much cheaper, and not hugely different. You may use it, but only at your own risk. Collaborate via Piazza to establish the correspondences between 6e and 7e readings and assignments.
We will be using a class interaction tool called Piazza for questions & answers. You will be able to post questions, answer other people's questions, give or ask for clarification on answers, see instructors' comments, etc. You should receive an email welcoming you to Piazza. It will tell you how to set up your account, and explain Piazza. You should be able to sign up at http://piazza.com/umich/fall2012/eecs203.
We will use i>clickers in class. Most of you have them. If not, you can get one from the bookstore. Go to our page on CTools ... i>clicker ... Remote Registration to register your clicker.
Bring the clicker, and extra AAA batteries, with you to each class. If you forget? That's why we drop the lowest four in-class quizzes.
You will learn more if you read the reading assignment before each lecture. To learn even more, and do better on the homework and exams, review it again after the lecture.
You are responsible for everything in the readings, even if it was not covered in lecture.
Each homework assignment is released at 6 pm Tuesdays via CTools and Piazza, as shown on the syllabus. That homework assignment is due at 11:55 pm the following Wednesday (eight days later), submitted as a PDF file via CTools. The solutions are released at approximately the same time, so no late homework will be accepted.
We recognize that health and other emergencies happen, so we will drop the two lowest homework grades.
9% | In-class quizzes | 25% | Homeworks | 20% | Mid-term exam 1 | 20% | Mid-term exam 2 | 25% | Final exam | 1% | Course evaluation |
We plan to provide 1-2 hard and interesting Challenge Problems each week. They are just for fun, if you are the sort of person who likes this sort of thing.
These are not required. You can get 100 in the course, and a grade of A, without doing any of them. However, to get an A+, you must impress us with your solutions to some number of Challenge problems, in addition to doing very well on the other aspects of the course.
These are not extra credit. You cannot use Challenge Problems to make up for poor performance in other aspects of the course. (There are no other extra credit opportunities either. Your best plan is to stay up with the course.)
If you do like this sort of thing, consider participating in the William Lowell Putnam Mathematical Competition on the first Saturday in December. The UM Math Department helps prepare students for this.
This course is governed by the Engineering Honor Code. This applies whether you are a student in the College of Engineering or not. Please read the description carefully.
On the one hand, an assignment turned in must be individual work. We will test the code you submit for plagiarism (copying), and we will report cheating. On the other hand, one of the best ways to learn a subject is to work together with your peers to understand the material. We want you to do this. How do we reconcile these two conflicting messages?
You are urged to serve as teachers for each other. There is no better way to learn something than to teach it to someone else, especially someone who is listening carefully and asking intelligent questions when they don't understand your explanation. But a teacher does not do the homework for the student. They show the way. They help untangle the misunderstanding. The student does their own homework. If you are helping someone, work to figure out what their problem is, help them get past it, so they can do their own work in writing the program they need to write. Don't show them your solution. Explain the underlying principles. If you are asking for help, try to formulate a good question that will guide the explainer in clarifying your problem. Don't look at their solution and copy it. Get them to explain the underlying principles, so you can write your own solution.