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.