Skip to main content
UMD
Computer Science
3 credits

UMD CMSC 351: Algorithms

CMSC 351 is UMD's algorithms course: asymptotic analysis, recurrences, sorting, graph algorithms, and dynamic programming, with correctness and runtime arguments throughout. It has arguably the most fearsome reputation of any course in the major.

Fennie is independent and not affiliated with University of Maryland. This is an unofficial study guide.

What makes it hard

The exams demand reasoning, not recall: analyze an algorithm you haven't seen, justify a bound, argue correctness, all under time. The folklore difficulty is real but specific: students who memorize algorithms without owning the analysis techniques have nothing to apply when the problem is novel, and CMSC 250's induction and counting are assumed cold.

What you'll cover

  • Asymptotic analysis and recurrences
  • Sorting algorithms and lower bounds
  • Divide and conquer
  • Graph algorithms
  • Dynamic programming
  • Correctness arguments

The CMSC 351 study guide

How to study for UMD CMSC 351, step by step.

  1. 1

    Rehab CMSC 250 before the semester starts

    Induction, counting, and logarithm fluency are assumed without review, and they're load-bearing in every analysis. A week of 250 review before 351 begins is the cheapest grade insurance available.

  2. 2

    Analyze algorithms you've never seen

    Exam questions present novel algorithms and ask for bounds and behavior. Practice on unfamiliar pseudocode regularly; analyzing the famous algorithms from lecture only trains recognition.

  3. 3

    Master recurrences as a mechanical skill

    Setting up and solving recurrences appears everywhere from divide-and-conquer onward. Drill the standard patterns until solving them costs no working memory during exams.

  4. 4

    Treat dynamic programming as its own course

    DP is the unit that breaks people: finding subproblems is a skill built only by solving many problems yourself. Start practicing before the unit opens and accept slow progress as normal.

Today

Today's CMSC 351 plan

Preview
65 min

What a Fennie Daily Plan looks like for CMSC 351. Yours is built from your own syllabus and adapts every day to your deadlines and progress.

0 / 4 done~65m remaining
Keep this plan free

First plan free, no card required. Fennie is independent and unaffiliated with your school.

FAQ

Is CMSC 351 really that hard?

Its reputation as the major's hardest course is earned but specific: exams demand analyzing novel algorithms under time, which memorizing lecture algorithms cannot prepare you for. Students who practice analysis as a skill find it hard but fair.

How do I prepare for CMSC 351?

Arrive with CMSC 250 fluent, induction and counting above all, and practice analyzing unfamiliar pseudocode from the first week. Give dynamic programming extra weeks of problem practice; it's the unit that decides the most grades.

Why do so many students struggle in CMSC 351?

Because the exams test reasoning on novel problems and most studying trains recognition of familiar ones. The fix is unglamorous: regular practice producing analyses and proofs yourself, spaced across the semester rather than crammed.

More UMD courses