Systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modeling, object-oriented programming and design, generic programming, testing and debugging. [Note: Lab is not scheduled and students are expected to find time in open hours to complete their work. Offered: S] Prereq: CS 241; Software Engineering students only. Antireq: CS 246, SYDE 322