Introduction to systematic design, development and testing of software systems, including event-driven programming, information management, databases, principles and practices for secure computing, and version control. Students apply these skills in the construction of large, robust programs.
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