Foundations of Computer Science. CS 303 or Math. 312 or permission of instructor. CS 380 or 480, and senior standing. Pragmatic aspects of the production of software systems, dealing with structuring principles, design methodologies and informal analysis.
Emphasis is given to development of large, complex software systems.
A term project in usually required. CS 380 and 381, or equivalent. Students write several substantial programs dealing with concurrency and synchronization in a multitask environment. Introduction to compiling techniques including parsing algorithms, semantic processing, and optimization. Students implement a compiler for a substantial programming language using a compiler generating system.