Breaking News

Software II, Software Development and Design, CSE 2231

Software II, Software Development and Design, CSE 2231


Data representation using hashing, search trees, and linked data structures, sorting algorithms, using trees for language processing, component interface design, and Java best practices are all covered in the computer science course CSE 2231 at Ohio State University.

Prerequisites for CSE 2231

You must finish CSE 2221 (Software I: Software Components) before continuing with CSE 2231.


Foundations I, CSE 2321 (Discrete Structures). It makes use of propositional and first-order logic, fundamental proving methods, graphs, trees, algorithm analysis, asymptotic analysis, and recurrence relationships.

CSE 2231 course objectives

After completing this course, you’ll;

  1. Be competent with using design-by-contract principles and related best practices, including separation of abstract state from concrete representation.
  2. Be competent with using interface contracts, representation invariants, and abstraction functions that are described using simple predicate calculus assertions with mathematical integer, string, finite set, and tuple models.
  3. Be competent with extending existing software components by layering new operations on top of existing operations.
  4. Be competent with layering new software components’ data representations on top of existing software components.
  5. Be familiar with simple linked data representations, including why and when it is (and is not) appropriate to use them rather than
  6. layered data representations.
  7. Be competent with using simple recursion.Be competent with using simple techniques to test application software, layered implementations of extensions, and layered or
  8. linked data representations, including developing and carrying out simple specification-based test plans.
  9. Be competent with using simple techniques to debug application software, layered implementations of extensions, and typical data
  10. representations.
  11. Be familiar with using basic algorithm analysis techniques and notations to analyze and express execution times of operations
  12. whose implementations involve straight-line code, simple loops, and simple recursion (e.g., in manipulating binary trees)
  13. Be competent with writing Java programs using core language features including interfaces, classes, inheritance, and assertions
  14. Be competent with writing Java programs that use software components similar to (but simplified from) those in the Java
  15. collections framework.
  16. Be familiar with using many industry-standard “best practices” for Java design and development.
  17. Be familiar with working as part of a team on a software project with multiple milestones.
  18. Be exposed to using a version control system, e.g., CVS or SVN.

Grade 2231 CSE

  1. Participation in class and homework: 8%
  2. Closed Labs: 12%
  3. Lab assignments for programming - 30%
  4. Examined midterm: 20%
  5. Final Exam: 30%

Help for CSE 2231

You can find help with this course on OSU Reddit communities, various GitHub pages, etc. There are numerous recourses, homework, and exam guides on Github.