- This course provides an overview of the principles of software engineering and an opportunity to investigate critical activities necessary for success.
- This Senior Experience course is primarily concerned with work on software engineering projects and modeling real-world software development experiences.
- This course traces the evolution of programming languages, identifies contributions made by significant languages, and examines issues in programming language implementation. Four modern programming language paradigms (procedural, functional, object-oriented, and logical) are considered.
- This course is a continuation of the Computer Science core sequence, emphasizing the concepts of object-oriented software development, data representation and algorithmics.
- This course explores language theory and computability. Topics in language theory include: regular expressions, regular languages, and finite automata (deterministic and non-deterministic); context-free languages and pushdown automata; and language grammars. Topics in computability include: Turing machines and their computing power; unsolvable problems; and intractable problems (NP-Completeness).
- This is a course in relational database theory. Topics covered include entity-relationship schema, relational algebra, SQL queries, normalization, decompositions of a relational schema that are dependency-preserving and/or lossless.
- The emphasis of this course is on the design, analysis, and evaluation of efficient algorithms for a wide variety of computing problems.
- This course provides participants with exposure to a broad set of principles and practices affecting the success and failure of software development efforts and productivity of teams involved in such efforts. The role and tasks of the software development manager are explored in detail.

