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.

Build my CMSC 351 study plan

What makes it hard

The exams demand reasoning, not recall: analyze an algorithm you haven't seen, justify a bound, argue correctness — 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.

  5. 5

    Give it spaced reps with Fennie

    Upload the CMSC 351 syllabus and Fennie's Daily Plan spaces analysis practice daily, schedules the 250-review and DP runway early, and generates practice problems and quizzes from your actual course materials. Free to start.

    Start my CMSC 351 plan free

How Fennie helps with CMSC 351

Fennie's Daily Plans give CMSC 351 what its reputation actually demands: daily analysis practice, prerequisite review scheduled before the course assumes it, and extra runway for dynamic programming. Chat works novel-algorithm analysis step by step — bound, justification, correctness — which is the exam format, not the lecture format.

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.

Pass CMSC 351 with a plan, not a cram

Upload your CMSC 351 materials and Fennie generates a Daily Plan paced to your deadline — plus chat, flashcards, and quizzes built from the actual course content.

Get started free

More UMD courses