CS 619: Introduction to Software Design and Development

(Coordinator: Karen Jin)

Catalog description

Principles of problem analysis and software design applied to the development cycle of a software system (i.e. from system requirements specification to design, implementation, and system test). Design and implementation using object-oriented principles, patterns, and tools. Experience in understanding and debugging software systems. Experience in working in groups.

Attributes

  • This course is one of the required courses for CS majors.

Outcomes

  • methodologies of software development: understand and participate in major software development stages: requirements elicitation, modeling, software design, implementation and testing. Understand iterative software development process and Agile methodology
  • concepts of programming languages: design and implement a non-trivial app for Android handheld Mobile devices
  • principles and techniques of a range of advanced topics in computer science: Create a design for a complex software systems using principles of object-oriented design as well as utilize proper design patterns, use Unified Modeling Language (UML) to document the design.
  • able to work within a team participate in more complex team project, improve teamwork skills

Evaluation

Quizzes (20%), two projects (60%) and one exam (20%).

Topics

  • Object-oriented Analysis and Design:
    • software engineering principles
    • object-oriented analysis and design principles
  • Software Development Process:
    • Agile methods
    • UP process and SCRUM process
  • User Requirements:
    • user requirement elicitation
    • use case and user stories
  • Domain Model, Class and Object Design:
    • Unified Modeling Language (UML)
    • object-oriented design patterns (GoF and POSA)
  • Implementation and Testing:
    • software implementation and refactoring
    • white-box and black-box testing
    • test-driven development
  • Software Development Tools and Frameworks:
    • IDE, e.g. Android Studio
    • version control, e.g. SVN
    • testing, e.g. JUnit
    • open source framework: e.g. AndroidAnnotations
  • Android Mobile App Development:
    • Android fundamentals
    • App components
    • User Interface
    • Process and use of threads
    • Selected Topics: e.g. SQLite database, motion sensors

Textbooks

Required:

  • Erich Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software

Recommeded:

  • Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development 3rd Edition

  • Freeman & Freeman. Head First Design Patterns

Reference:

  • Android online documentation