UT Austin CS 313E: Elements of Software Design
CS 313E is the second course in UT's Elements of Computing sequence, covering object-oriented design in Python — classes, abstract data types, fundamental data structures and algorithms, and basic complexity analysis. It assumes programming at the CS 303E level.
Fennie is independent and not affiliated with The University of Texas at Austin. This is an unofficial study guide.
Build my CS 313E study planWhat makes it hard
The step up from 303E is real: writing a working loop is no longer the goal — designing classes, choosing data structures, and reasoning about efficiency is, and the assignments grow accordingly. Students arriving with shaky 303E fluency compound the gap, because the course assumes the syntax layer is finished business.
What you'll cover
- • Object-oriented programming and classes
- • Abstract data types
- • Stacks, queues, and linked lists
- • Trees and recursion
- • Searching and sorting algorithms
- • Big-O and basic complexity analysis
The CS 313E study guide
How to study for UT Austin CS 313E, step by step.
- 1
Audit your Python fluency honestly in week one
CS 313E assumes the syntax layer is finished business. If 303E material is shaky, patch it immediately — the gap compounds under the new design workload.
- 2
Implement every structure yourself
Build the stack, the linked list, the tree — then rebuild without looking. The assignments demand working implementations and the exams demand the reasoning behind them.
- 3
Practice recursion until it stops feeling like a trick
Tree problems and recursive algorithms are where 313E exams separate students. Trace recursive calls by hand until the pattern is mechanical.
- 4
Reason about efficiency out loud
Why is this O(n log n)? Explaining complexity verbally exposes the gaps silent review hides, and exam questions test the reasoning, not just the label.
- 5
Stage the climb with Fennie
Upload your CS 313E materials and Fennie's Daily Plan schedules assignment milestones alongside spaced concept review, generating recursion-tracing and complexity quizzes from your actual coursework. Free to start.
Start my CS 313E plan free
How Fennie helps with CS 313E
Fennie's Daily Plans schedule CS 313E's heavier assignments alongside spaced review of structures and complexity, so neither swallows the other. Chat through recursion traces and big-O reasoning until you can explain them cold, and drill generated questions on choosing the right structure for a scenario.
FAQ
Is CS 313E harder than CS 303E?
Yes, by design — it moves from writing code that works to designing classes, choosing structures, and reasoning about efficiency. Students with solid 303E fluency who start assignments early find it very manageable.
What should I review before CS 313E?
Python functions, lists, dictionaries, and loops at full fluency, plus basic recursion if you've seen it. The course assumes you write 303E-level Python comfortably and builds the design layer on top.
Is CS 313E good preparation for technical work?
It covers the data structures and algorithm basics that technical interviews and data-adjacent roles draw on — a substantial part of why the Elements of Computing certificate carries weight with employers hiring non-CS majors.
Pass CS 313E with a plan, not a cram
Upload your CS 313E 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 UT Austin courses
CS 312 — Introduction to Programming
CS 312 is UT Austin's introductory programming course in Java, designed for students with little or no prior coding experience — variables, control flow, methods, arrays, and object basics. It's the entry point to the CS major's programming sequence ahead of CS 314.
CS 314 — Data Structures
CS 314 is UT's data structures course in Java — lists, stacks, queues, trees, hashing, graphs, and algorithm analysis — and the load-bearing course of the CS major. Everything upper-division assumes it, and its material is the substance of internship interview questions.
CS 311 — Discrete Math for Computer Science
CS 311 is UT's discrete mathematics course for CS majors — logic, proof techniques, induction, sets, functions, combinatorics, and graph theory foundations. It builds the mathematical reasoning that the theory-side courses (algorithms, computability) stand on.
CS 303E — Elements of Computers and Programming
CS 303E is UT's introductory Python programming course for non-CS majors — the first course in the Elements of Computing program and one of the most popular programming credits on campus. It covers Python fundamentals, control flow, functions, and basic data structures, assuming no prior experience.