Introduction to systematic design, development and testing of software systems, including event-driven and Web programming, information management, software design and development fundamentals, and the application of these skills to the construction of large robust programs. Includes assignments given at 2-3 week intervals and a large project executed by teams of 2 students. These provide the students with experience in the practice of design and programming.
Prerequisite
C or higher in CSE 214 or CSE 260; CSE 216 or CSE 307; CSE major
Partially fulfills: ESI, EXP+, SBS+, STEM+
Course Outcomes
An ability to use event-driven programming in the construction of Web software.
An ability to create a logical database design and implement it as a physical schema for a software application.
An ability to apply algorithmic and software design/development principles to build large programs.
An ability to design and implement a software testing plan.
An ability to apply security principles to develop robust programs.
Textbook
There is no 'required textbook'; however, the following texts are recommended as reference materials.
Freeman, Eric, Robson, Elisabeth, Bates, Bert, and Sierra, Kathy, "Head First Design Patterns", O'Reilly Media Inc, 2014. ISBN: 978-0-596-00712-6.
Accomazzo, Anthony, Lerner, Ari, Murray, Nate, Allsopp, Clay, Guttman, David, McGuinnis, Tyler, "Fullstack React: The Complete Guide to ReactJS and Friends", Fullstack.io, 2020, ISBN: 978-0991344628
Hallie, Lydia, Osmani, Addy, "Learning Patterns: Patterns for building powerful web apps with Vanilla Javascript and React", patterns.dev, 2022.
Major Topics Covered in Course
Event-driven programming, including the use of front-end Web frameworks
Information management, including database CRUD operations and transactions
Software design principles, techniques and patterns