Skip to main content
Ohio State
Computer Science and Engineering
4 credits

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. 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. 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. 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. 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

Preview
65 min

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.

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 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