General principles in modern software engineering. Both theoretical and practical topics are covered. Theoretical topics include proofs of correctness, programming language semantics, and theory of testing. Practical topics include structured programming, modularization techniques, design of languages for reliable programming, and software tools.
CSE 100, CSE 131A, CSE 120, or consent of instructor
Formerly CSE 264A