Software II, Software Development and Design, CSE 2231
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.
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;
- 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.
Grade 2231 CSE
- Participation in class and homework: 8%
- Closed Labs: 12%
- Lab assignments for programming - 30%
- Examined midterm: 20%
- Final Exam: 30%