This class is required for CS majors, so the question isn't really whether to take it, but what to expect.
The course is taught off slide decks, and that's the root of most of the problems. The instructor walks through proofs that are already fully written on the slide instead of doing them live on a board, which means you see what a finished proof looks like but not how to build one... which is what you actually get tested on. The slide-deck format also makes pacing weird: it's easy to click through slides far too quickly for anyone to keep up with.
Pacing was way too slow in the first half of the semester (hours on stuff like modulo and logarithms that everyone already knew) and then way too fast in the second half (20+ step proofs that were walls of text were gone over in only a few minutes each).
Problem sets are decent practice, but the grading is very subjective. Losing 50% credit on a non-proof question because your reasoning wasn't "good enough" is rough when every problem set is worth ~3.5% of your final grade. Add to that grading turnaround that took 3+ weeks for problem sets and tests, and you end up making the same mistake on two or three more assignments before you ever find out it was wrong.
Here's the thing though: the tests are easy. Medians on Tests 1 & 2 were 90+%. The median on Test 3 dropped to ~80% and the response was to make the final extremely easy. And, on each test, they give you a giant formula sheet with everything you could possibly need, even stuff you should DEFINITELY know without needing one. So, the course covers for barely teaching people the material by making the assessments so easy that everyone does well anyway.
The instructor himself is engaging and clearly knows the material. The issues are about format and structure, not him personally. But the overall experience is that the class is going to give you an A whether or not you actually learn the material, and the format makes actually learning the material harder than it should be.
Take it (you have to), expect a fairly easy A/A-, but don't expect to walk away feeling like you understand discrete math.
Grade Distribution
No grade data available
8 Reviews
This class wasn't hard but I did not like the professor. He isn't teaching at UVA next semester so I suppose it doesn't matter too much, but he would often confuse himself or get very carried away with one problem during lecture. There were three midterms and they were not that hard, but the last midterm had a ridiculous amount of content for the 50 minute testing period. If you have to take this class you do not have to attend lecture to learn the content. It was much faster and easier to teach myself using the provided lecture powerpoints.
Content is very easy. Time I spent on this class is like 1/4 of the time I spent on DSA 1. The course is paced very slowly. I feel like the management of this class can still be massively improved. The final review sheet have like three mistakes on the first two pages. For me the experience is not very enjoyable.
I agree with all of the other reviews already written here; I had heard reviews from other CS majors that discrete math was one of the easiest core courses in the curriculum, and it felt like the biggest lie as we progressed through this class.
I believe this was due to those semesters having different instructors, because the instructors made this content sound more confusing than any other class I've taken at UVA. The primary communication happening through Discord was also odd, and I couldn't trust their provided proof solutions since they would inevitably find errors in it after a couple days of sharing it with students. I've somehow found CSO to be a more enjoyable class than this one was.
I'll say David Evans and Aidan San were kind and well meaning individuals, but do avoid taking the class with these instructors if you can.
I went into this class thinking not necessarily that it would be easy, but that it wouldn't be incredibly difficult as one of the first courses required for the CS degree. I was very wrong.
It wasn't really the course material that was tough, rather it was the tests and homework. TAs could be pretty pedantic about notation and would dock 5 points out of your 20 point HWs pretty regularly. Camping office hours and looking for a specific TA was also pretty necessary to do well on the HWs, unless you were just already really good at the material. Tests would get increasingly hard but the test prep study sheet wouldn't help very much.
Also, apparently, the Spring 2025 semester of this course was also very different from previous semesters, as previous semesters of this course had a mandatory written final, while this semester had an oral final. As someone who took the oral final, whether or not it bumped your grade was very dependent on which teacher tested you: David Evans or Aidan San. It was random which professor you got, and Aidan was much kinder and lenient compared to David.
Teaching wise, Aidan really did his best to teach something that kind of seemed intuitive to him. His office hours don't really help much though, as they were mostly him asking you questions back.
For me, this was definitely a challenging class. Even having had some experience with discrete math in high school, there was a lot of new content that we covered that could feel overwhelming at times. Not impossible though! I would recommend making good use of TA office hours, as usually they're really chill and super helpful with the weekly problem sets. Even if you know what you're doing, you should still go to OH to get work checked, as sometimes it felt like the graders took off points for no reason.
Professor Aidan San was really friendly and helpful during his office hours. Lectures sometimes felt a little fast, but overall I can't complain.
As for the tests, Test 1 was easy, and then the tests got progressively harder. For my class the final was an oral exam where you explain a proof in your own words. It was optional, so I don't know much more than that.
#tCFS25
If you can, avoid taking this class with Aidan and David Evans. The class was generally confusing in terms of material, concepts, and expectations. From what I heard with other DMT classes, there was different content taught with other professors and it wasn't as hard.
There was a lack of communication, especially regarding the final exam which they barely provided information for until the last minute. Problems sets became increasingly hard, which is understandable since we explored more concepts, but the TAs and even the professors lacked actual guidance when asking questions related to the homework.
The amount of time it took to grade homework, tests, and even receive responses was terrible. The main form of communication was discord, but even then, asking a question lacked a proper answer as you'd either receive some complicated concept or sarcastic response.
This class felt weirdly experimental the entire time. From only communicating on Discord (??) to making the final an oral exam (albeit technically optional), the professors' choices sometimes felt like a prank. The problem sets also got increasingly more annoying as the semester progressed -- by the end of the semester, we were expected to complete several very dense proofs that TAs couldn't really help with. It seemed like they weren't really allowed to check your work, so they could only offer vague conceptual advice on how to improve. On top of that, answer keys (published after the due date as study resources) were often riddled with errors or grammatical mistakes that sometimes made using them as study resources misleading.
The lectures were also fairly confusing -- the professor's scratch work would be impossible to follow, and he would also make frequent mistakes that he'd have to rewind several steps to correct. In addition, the professor would also spend large amounts of time in some lectures explaining weird experimental course choices -- for example, explaining the final (optional in some cases) being an oral exam took twenty straight minutes. He also took time at the beginning of the semester to explain why the course discouraged "studenting."
The class is very deceptively easy; the concepts are easy to understand, but they weren't taught clearly and proofs were graded quite harshly. The first two tests weren't very hard, but the last two really stretched the limits of writing proofs in a 50 minute time constraint. There was one assignment offered for extra credit, which was just writing some Python code, which is also the only time you actually code in this class.
TLDR: Hopefully the professors can make this better in future iterations of the course, but this semester was convoluted and experimental