Software Development, Design, and Components Overview

Software Engineering Concepts

  • Focuses on sound software engineering principles for component-based, object-oriented software design in CSE 2221 (Software 1: Software Components) and CSE 2231 (Software 2: Software Development and Design).

  • Component-Based Engineering: Emphasizes system thinking, mathematical modeling, design-by-contract, and client vs. implementer views.

  • Object-Oriented Building Blocks: Centered on components and their relationships.

  • Discipline: Requires single-point control over change and adherence to conventions.

Java Programming Language

  • Core Syntax & Features:

    • Variables, types, values, operators, expressions, and control flow (selection, iteration).

    • Reference vs. value types.

    • Interfaces, classes, methods, and objects.

    • Inheritance, polymorphism, generics, and exceptions.

  • Libraries:

    • Input/output and Java's Swing for GUIs.

    • Collections including List, Map, Queue, and Set.

Development Tools & Professional Best Practices

  • Industry-Standard Tools:

    • Eclipse: Open-source IDE with extensions such as Checkstyle and SpotBugs.

    • JUnit: Library for unit-testing software components.

    • Javadoc: Documentation utility for Java programs.

  • Professional Best Practices:

    • Mitigates complex language mechanisms to prevent brittle, hard-to-maintain code.

    • Applies naming conventions, coding conventions, design-by-contract, and programming-to-the-interface.

Prerequisites & Learning Resources

  • Prerequisites:

    • Prior programming experience (syntax, compilation, execution, variables, control flow, and procedures/functions/methods).

    • Math maturity (introductory calculus).

    • Willingness and ability to learn independently for life-long learning.

  • Key Platforms:

    • Course web site: https://cse22x1.engineering.osu.edu/software/

    • Carmen: https://carmen.osu.edu/

    • MS Teams: CSE 2221 team channels for course discussions.

  • API Documentation & Tutorials:

    • Online Java tutorials: https://docs.oracle.com/javase/tutorial/

    • Online OSU CSE components API: https://cse22x1.engineering.osu.edu/common/doc/

    • Online Java libraries API: https://docs.oracle.com/en/java/javase/21/docs/api/java.base/module-summary.html

  • Recommended Literature (via O'Reilly at https://guides.osu.edu/cse):

    • C.S. Horstmann, Java for Everyone, John Wiley and Sons, 2013.

    • J. Bloch, Effective Java, 3nd ed., Prentice Hall, 2018.