(A Former IA's) EECS 203 FAQ

I was an IA (Michigan lingo for TA) for EECS 203 (Discrete Mathematics) at the University of Michigan for two semesters: Winter and Fall of 2020. It was the first course IA'd; I would later IA for EECS 376. It was a great privilege to teach something I was passionate about, and I learned a ton. I've found, through office hours, the Piazza forum, and many a conversation, that students had a lot of confusion and questions about 203. I thought it would be beneficial to try to clear these up in an unofficial FAQ, especially seeing as most 203 students are freshmen, who are going to be confused in general. Two caveats: (i) the course changes a little bit every semester, so this guide will gradually deteriorate in its relevance, and (ii) a lot of this is my own opinion, and some other course staff might have different answers to these questions. If you have a question that you don't see here, feel free to email me, and I might add it to this page.

What does EECS 203 teach?

EECS 203 is the discrete mathematics for computer science course at U of M. The main learning objectives are to turn you into a mathematical thinker and to increase your fluency in the mathematical basics of computer science. We teach symbolic logic, natural deduction, mathematical proof, set theory, probability, relations, number theory, cryptography... and more. It really is a lot, and the topic whiplash is felt by students and instructors alike. For this reason a lot of these topics are covered fairly shallowly. I've heard it described as a "survey" course, but I don't think that's accurate; while the topics are numerous, they all function as proxies for more or less the same learning objective. The most important thing isn't to come away having learned the Chinese Remainder Theorem, it's to come away with the mathematical maturity to understand and reason about something like CRT.

Do I have to take EECS 203?

If you're intending on a CS major or minor, yes -- unless you transfer in an equivalent course (see equivalencies see here). It's one of the courses (along with 280) you're required to take before you take EECS 281; after 281 you can declare your major in CS.

Can I avoid EECS 203 by doing discrete math at a community college?

Yes. But I don't recommend it. 203 sets up a lot of the skills you need to succeed in EECS 376 (which is required for a CS major, and you can't duck it in a community college). The ability to write proofs and mathematically reason is essential to survive EECS 376. From what I've heard of these CC courses, they're very easy and don't teach this (which is why people take them), but that will only delay your pain to EECS 376, and (probably) leave you worse off overall.

Is EECS 203 going to be useful for me?

Despite what most students seem to think, the short answer is "yes". 203 is the ABCs of computer science theory. There isn't a single topic covered in 203 which isn't expanded upon in an upper level CS course. Even natural deduction comes back in EECS 490 (Programming Languages). EECS 203 provides you with a baseline of mathematical literacy that people expect from good CS grads. If you're going into any career in theory (be it algorithms, cryptography, machine learning, etc.), this is obviously important. But even if you aren't (and you're probably a freshman who's not sure yet anyway), 203 concepts are applicable regardless of where you end up. Mathematical induction is the basis behind recursion. Probably is literally everywhere. Functions, sets, and relations are critical for a deep understanding of data structures. Computers are machines that operate on numbers (bits), so basic number theory is critical for any computer science student. Furthermore, all of these concrete topics serve as a proxy for you teaching you mathematical reasoning, which is important for any task that requires intellectual abstraction -- programming falls into this category.

How do I succeed in EECS 203?

Mainly: keep up with the lectures, go to discussion, make use of office hours, and do the work. None of that is really 203 specific. The vast majority of your grade is going to come from exams, not homeworks -- so think of the homeworks as part of your learning rather than an assessment. So don't lean on others for the homework. There's nothing wrong with discussing with your peers, but make sure they don't become a crutch. In 203, the exam questions are harder than the standard homework questions - it doesn't make sense to me either. But it means that if you can't do the homework alone, you sure can't do the exam alone. "Groupwork" was recently introduced to 203: these are tougher, exam+ difficulty problems that are graded on completion and meant to be completed in groups. For these reasons it might be tempting to not take groupwork seriously and lean on your teammates. Make sure you at least do the problems properly before the exam. Staff also release exams from previous semesters as practice; do these and don't look at the solutions except to check your answer at the end. Reading solutions can give a false sense of security; students understand the solution and then feel ready. But being able to understand the solution to a problem and coming up with a solution from scratch are very different things.

A pro tip: answer people's questions on Piazza. Piazza is a forum where students can ask questions, and both students and instructors can reply in separate responses. The EECS 203 staff has a dedicated Piazza team (I was a member) for answering students' Piazza questions, but that doesn't mean you can't answer as well -- in fact it will be appreciated as you'll be taking a load off of the instructors! By answering Piazza questions, you're essentially crowdsourcing your studying to the other 900+ students in the class. Even if you don't know the answer to someone's question, go figure it out and then write the student response. If you want to go super pro, enable realtime email notifications so you can get to the questions before the instructors do -- though I would still encourage writing a response to a question even if an instructor has already submitted one.

Lastly, I implore you to keep a positive attitude towards EECS 203, strictly for your own sake. I say this having years of experience in holding negative attitudes towards courses that weren't my cup of tea, and doing badly in all of those. Having a negative attitude towards the course will demoralize you and motivate you to do the bare minimum and look for shortcuts. This is no good for your grade. It is the natural tendency for students to bond over shared misery, so more often than not, conversations will veer towards being negative towards their courses. This negativity can be both viral and toxic -- something to be cautious of.

Tell me about office hours. What should I know?

Every staff member offers at least a couple of office hours a week. 203 is unique in that staff members set their own hours week to week, though usually they pick a time and stick to it. The purpose of these office hours are to help you with any course-related questions -- usually homework problems.

When coming to office hours for a homework problem, ideally, you should be caught up on the material the homework problem is testing. At the very least, you should know what the definitions are of the terms in the problem. This seems obvious, but I only mention it because a shockingly high percentage of students that come to office hours haven't done this; how do you expect to solve a problem about well ordered sets when you don't know what a well ordered set is? You should also have made an attempt at the problem before coming to office hours. Coming to office hours to ask a clarifying question about a problem before starting it is fine; this counts as an attempt. You tried to solve the problem but didn't understand the question so you came to office hours to ask. But don't be the student that comes to office hours for a problem they haven't even looked at yet - yes, this happens.

We can't verify your solutions in office hours. Many students come to office hours asking whether their solutions are correct; you can ask whether a certain approach is sound, but we can't pre-grade your work. You can ask us to take a look, and we can point out glaring errors, but that's as far as it goes. We also can't solve the problems for you. To do so would be a disservice to you. All ~12 homework assignments are collectively only 15% of your grade -- they're more of a teaching tool than an assessment tool. Having the solutions explained to you only robs you of true understanding, which happens when you actually do the problem. IAs have to go through training, and I forgot almost all of it, but one concept stuck with me: knowledge isn't given to the student by the teacher, it's created by the student. The teacher's role is that of a facilitator. You may have heard that the "right" IAs will just give you the solutions in office hours; this is (unfortunately) probably true. It's the easy and lazy thing to do - it takes zero effort from us, and you go away happy and liking us. Avoid this (and all other sources for solutions) like the plague. Students that get homework solutions from others are living on borrowed knowledge that they'll have to pay back on the exam, plus interest.

Tell me about discussion sections. Should I go?

Most IAs and GSIs hold a weekly 50 minute discussion section. "Discussion" is just Michigan nomenclature for IA/GSI led review sessions. Attendance is optional and no new material is covered, it's a condensed review of that week's lecture material. The student instructor typically goes over some example problems. I try to give my students the chance to solve the problems on their own first, but time is limited so most students only get a start before I take it up.(which is still beneficial). Attending a discussion is useful for hearing course concepts explained differently than your lecture professor, especially if you had a particularly difficult time understanding that week's lecture material. It's also a good place to get some hands on practice under the supervision of an IA. Note that IAs have total freedom in how they run their discussion sections, so feel free to shop around to see what style fits you best. Some are recorded too. I've heard of students attending discussion sections in lieu of lecture. That's probably not a good idea. There are ~160 minutes of lecture a week and only 50 minutes of discussion, so you're going to be missing content this way.

Are there tutors? Where can I hire them? Do I need them?

There are tutors you can pay, the relevant info is usually posted on the class Piazza somewhere. You don't need them. There are typically 30+ staff in 203 (IAs, GSIs, professors), each with at least 2 hours worth of office hours a week. Use them; you're already paying for them with your tuition. Office hours the day the homework is due and the day before it are going to be packed, and the day after is usually empty. Find a low-traffic slot with an IA/GSI/Prof you like and attend it regularly. It is not the same as "tutoring" in that we give you more responsibility for your own learning. But this is a good thing; one of the most important things you'll learn in college is how to learn. 203 is a course all about upgrading the way you think, so this is a better course than any to learn this. A tutor that does what you can't get at office hours, that tries to do the learning for you, is going to be a crutch preventing you from picking up this invaluable skill.

How do I become an IA for EECS 203?

Close to the end of the semester, the course staff will usually post a link where you can apply. The main component of your application is your video. You're to submit a 5 minute video of you doing instruction of some kind ( giving a brief lecture, simulating office hours, etc.). From what I saw, your grades don't matter a whole lot; your video is the most important thing to get right to maximize your chances of getting an interview. Passion, good presentation, and avoiding pitfalls (like making math mistakes or calling something "obvious" or "easy") will go a long way.