Ohio State CSE 2231: Software II: Software Development and Design
CSE 2231 continues directly from Software I, moving into data structures and component implementation: you stop just using OSU's components and start building them. It covers trees, hashing, sorting machines, and a culminating compiler project, and it's the prerequisite wall in front of the rest of the CSE major.
Fennie is independent and not affiliated with The Ohio State University. This is an unofficial study guide.
What makes it hard
Loop invariants and correctness reasoning get serious here: exam questions ask you to prove, not just code. The kernel implementation projects are unforgiving because you're implementing the data structure underneath the interface, so a subtle representation bug breaks everything and the debugger only helps if you understand the representation invariant.
What you'll cover
- • Implementing kernel components
- • Binary trees and binary search trees
- • Hashing and Map implementations
- • Sorting machines and heaps
- • Loop invariants and correctness proofs
- • Tokenizing, parsing, and the BL compiler project
The CSE 2231 study guide
How to study for Ohio State CSE 2231, step by step.
- 1
Make Software I discipline second nature first
CSE 2231 assumes contracts and component thinking are reflexes. If 2221 concepts feel shaky, review them in week one, because everything here stacks on them.
- 2
Draw the representation before you code
For every kernel project, sketch the representation and write its invariant before touching the keyboard. Most 'impossible' bugs are invariant violations you couldn't see.
- 3
Practice invariant questions like exam questions
State the loop invariant and argue why it holds, on paper, weekly. The midterms grade proof-shaped reasoning, and watching it in lecture is not the same as producing it.
- 4
Start the compiler project absurdly early
The BL compiler project is multi-week for a reason. Front-load it so the debugging tail doesn't collide with exam prep.
Today
Today's CSE 2231 plan
What a Fennie Daily Plan looks like for CSE 2231. Yours is built from your own syllabus and adapts every day to your deadlines and progress.
First plan free, no card required. Fennie is independent and unaffiliated with your school.
FAQ
Is CSE 2231 harder than CSE 2221?
Most students say yes. Software II assumes the Software I discipline is second nature and adds data structure implementation, loop invariants, and a multi-week compiler project. The conceptual jump from using components to building them is the hard part.
What is the hardest part of CSE 2231?
Usually the kernel projects and invariant-based exam questions. Implementing a component's kernel means maintaining a representation invariant you can't see from outside, and exams test whether you can state and use those invariants precisely.
How much time does CSE 2231 take per week?
Plan on 10-15 hours weekly between lectures, closed labs, and projects, and more during the compiler project. Students who budget time daily handle it; students who start projects two days out tend to live in office hours.
More Ohio State courses
CSE 1223: Introduction to Computer Programming in Java
CSE 1223 is Ohio State's introductory programming course in Java, aimed at students with little or no prior coding experience. It covers programming fundamentals (variables, control flow, methods, arrays, and basic file I/O) and is a common entry point before the CSE major sequence or for non-majors who need programming credit.
CSE 2221: Software I: Software Components
CSE 2221 is the first course in Ohio State's famous Software I/II sequence and the real gateway into the CS major. It teaches Java through OSU's own component-based software libraries, emphasizing design-by-contract, interfaces, and reasoning about code correctness rather than just making programs run.
CSE 2321: Foundations I: Discrete Structures
CSE 2321 is the discrete math course of the CSE core, covering logic, proof techniques, graphs, trees, asymptotic analysis, and recurrence relations. It's taken alongside or after the Software sequence and is the prerequisite for Foundations II, where formal algorithm analysis gets serious.
CSE 2421: Systems I: Introduction to Low-Level Programming and Computer Organization
CSE 2421 drops CSE majors below the abstractions: C programming with pointers, x86-64 assembly, memory layout, and how programs actually execute on hardware. It follows the Software sequence and pairs with Foundations to form the sophomore core.