UVA CS 2120: Discrete Mathematics and Theory 1
CS 2120 is the discrete math course of UVA's CS core — logic, proofs, sets, functions, induction, and basic graph and number theory — the mathematical foundation for algorithms and theory courses later in the major. It's most students' first proof-based course.
Fennie is independent and not affiliated with University of Virginia. This is an unofficial study guide.
Build my CS 2120 study planWhat makes it hard
Writing proofs is a different activity from computing answers, and the adjustment is the whole course: students who've succeeded on procedure-following suddenly face problems with no procedure. Induction is the famous wall — the template is easy to memorize and hard to genuinely wield — and grading rewards precise logical writing, which feels brutal until the standard clicks.
What you'll cover
- • Propositional and predicate logic
- • Proof techniques (direct, contrapositive, contradiction)
- • Mathematical induction
- • Sets, relations, and functions
- • Basic number theory
- • Intro graph theory
The CS 2120 study guide
How to study for UVA CS 2120, step by step.
- 1
Accept that this is a writing course
CS 2120 grades the precision of your logical writing, not just the idea. Study finished proofs as writing samples — what gets stated, what gets justified, what order — before producing your own.
- 2
Do proofs from scratch, not from solutions
Reading proofs feels like learning and transfers almost nothing. Attempt every practice problem cold, struggle properly, and only then compare against the solution to find the move you missed.
- 3
Drill induction past the template
Memorizing base-case-and-inductive-step is easy; knowing what to do inside the inductive step is the skill. Work many inductions on different structures until choosing what to manipulate feels natural.
- 4
Translate between English and logic daily
Quantifiers and implications are where exam points quietly die. Practice converting statements both directions — especially negating quantified statements — until it's mechanical.
- 5
Rework every lost point from problem sets
The graders are showing you the precision standard. Rewrite each docked proof until it would earn full credit; that calibration is the most exam-relevant studying available.
- 6
Keep the practice spaced with Fennie
Upload your CS 2120 syllabus and Fennie's Daily Plan schedules proof practice in steady daily doses paced to problem sets and exams — the only way proof skill actually accumulates — with quizzes built from your actual course material. Free to start.
Start my CS 2120 plan free
How Fennie helps with CS 2120
Fennie's Daily Plans turn CS 2120's proof skill into a daily accumulation problem instead of a pre-exam panic, paced to problem-set and exam dates. Chat works through proofs step by step — why this technique, why that justification — so you build the reasoning rather than memorizing templates, and practice questions from your actual materials rehearse the precision the graders demand.
FAQ
Is CS 2120 at UVA hard?
It's the course where procedure-followers hit problems with no procedure. The math is light; the difficulty is learning to construct and write proofs precisely, which most students have never done. Steady practice from week one handles it — cramming proof skill does not work.
Why do I need discrete math for computer science?
It's the foundation under the rest of the major: algorithm correctness and runtime arguments are induction, logic underpins everything from circuits to verification, and graph theory shows up across CS 3100 and beyond. Weak 2120 fundamentals surface again in every theory-adjacent course.
How do I get better at proofs in CS 2120?
Volume, done honestly: attempt problems cold before looking at solutions, rework every docked point from problem sets until it would earn full credit, and drill induction on varied structures past the memorized template. Proof skill is trained, not absorbed.
Pass CS 2120 with a plan, not a cram
Upload your CS 2120 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.
Get started freeMore UVA courses
CS 1110 — Introduction to Programming
CS 1110 is UVA's Python-based introduction to programming, assuming no prior experience — the entry point for prospective CS majors, minors, and a wide range of other students. It covers variables, control flow, functions, lists and dictionaries, file handling, and basic objects, with weekly labs and programming assignments.
CS 2100 — Data Structures and Algorithms 1
CS 2100 is the first course of UVA's renumbered CS core — data structures and algorithms in Java, covering lists, stacks, queues, trees, hash tables, and runtime analysis, with required labs alongside lecture. It replaced the old CS 2110/2150 path and is the gateway the rest of the major builds on.
CS 2130 — Computer Systems and Organization 1
CS 2130 takes UVA CS students below the languages they know — binary representation, gates and circuits, assembly, and C programming with pointers and memory — building a working model of how computers actually execute code. Labs run alongside lecture, and it leads into CSO2.
CS 3100 — Data Structures and Algorithms 2
CS 3100 is the algorithms half of UVA's DSA pair — graph algorithms, greedy methods, divide and conquer, and dynamic programming, with runtime analysis and correctness reasoning throughout. It draws directly on both CS 2100's structures and CS 2120's proof techniques.