CSE 2231: Software II, Software Development and Design 2024

In the course CSE 2231: Software II, Software Development and Design 2024, students will delve into advanced software development and design principles. This course is designed to build upon the foundational knowledge gained in previous software development courses and provide students with a deeper understanding of software engineering concepts and practices. Throughout the course, students will explore topics such as object-oriented design, design patterns, software architecture, and the application of these concepts in real-world scenarios.

CSE 2231 prerequisites

Before moving on to CSE 2231, you’re required to complete CSE 2221 (Software I: Software Components) and

CSE 2321: Foundations I (Discrete Structures). It involves propositional and first-order logic; basic proof techniques; graphs, trees; analysis of algorithms; asymptotic analysis; recurrence relations.

CSE 2231 course goals

After completing this course, you’ll;

  • Be competent with using design-by-contract principles and related best practices, including separation of abstract state from concrete representation.
  • 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.
  • Be competent with extending existing software components by layering new operations on top of existing operations.
  • Be competent with layering new software components’ data representations on top of existing software components.
  • Be familiar with simple linked data representations, including why and when it is (and is not) appropriate to use them rather than
  • layered data representations.
  • Be competent with using simple recursion.
  • Be competent with using simple techniques to test application software, layered implementations of extensions, and layered or
  • linked data representations, including developing and carrying out simple specification-based test plans.
  • Be competent with using simple techniques to debug application software, layered implementations of extensions, and typical data
  • representations.
  • Be familiar with using basic algorithm analysis techniques and notations to analyze and express execution times of operations
  • whose implementations involve straight-line code, simple loops, and simple recursion (e.g., in manipulating binary trees)
  • Be competent with writing Java programs using core language features including interfaces, classes, inheritance, and assertions
  • Be competent with writing Java programs that use software components similar to (but simplified from) those in the Java
  • collections framework.
  • Be familiar with using many industry-standard “best practices” for Java design and development.
  • Be familiar with working as part of a team on a software project with multiple milestones.
  • Be exposed to using a version control system, e.g., CVS or SVN.

CSE 2231 grade

  • Homework and Class Participation – 8%
  • Closed Labs – 12%
  • Programming Lab Assignments – 30%
  • Midterm Exam – 20%
  • Final Exam – 30%

CSE 2231 help

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.

Software II, Software Development and Design Bugsworld Guide.