The faculty of the Department of Computer Science teach the broad spectrum of computing and information technology courses and offer a track of specialization at the BS and MS levels in computer security. At the BS level, a "Cybersecurity option" is available in addition to specialization.
Topics that focus on secure software and systems development and evaluation are embedded in both graduate and undergraduate courses in secure programming methods, algorithms and data structures, database management systems, software engineering, programming languages, operating systems, networks, concurrent software, real-time systems, and ethics in computing. Dedicated security courses include introductory and advanced information security, applied cryptography, systems security, reliability, and assurance.
Students learn to use safe languages and defensive coding from the very start of the program, and sound software engineering methodology is included in development and programming courses. ("Safe languages" include features such as strong typing, storage security, memory safety, and even formal verification. "Sound methodology" means input checking and sanitization techniques, control, data-structures, and design patterns for correct programming.) Students also learn methodology, tools, and design patterns to compensate for lack of language security support when working with unsafe or potentially unsafe languages (e.g., C/C++, C, Python, PHP, etc.). This includes manual insertion of pointer, type, and storage checks, rigorous code testing and testing-oriented development, static and dynamic analysis, and verification via formal model-checking.
Finally, we offer specialized area-specific courses including networking/web programming, embedded and/or cyber-physical systems, and databases.