MS in Computer Science - Software Engineering Courses
Students pursuing the Software Engineering concentration in the MSCS program will take 4 courses (12 credit hours) from the list below plus 1 elective course (3 credit hours) for a total of 15 credit hours.*
CPSC-51700 Pervasive Application Development (3)
Development of web- and mobile-based front ends for large-scale data systems, with a focus of portability, accessibility, and intuitiveness.
CPSC-53000 Data Visualization (3)
The theory and practice of visualizing large, complicated data sets to clarify areas of emphasis. Human factors best practices will be presented. Programming with advanced visualization frameworks and practices will be demonstrated and used in group programming projects.
CPSC-54000 Large-Scale Data Storage Systems (3)
The design and operation of large-scale, cloud-based systems for storing data. Topics include operating system virtualization, distributed network storage, distributed computing, cloud models (IAAS, PAAS and SAAS), and techniques for securing cloud and virtual systems.
CPSC-55500 Distributed Computing Systems (3)
Architecture and programming of parallel processing systems; distributed data storage techniques; multithreading and multitasking; redundancy; load balancing and management; distributed system event logging; programming techniques for maximizing the importance of distributed systems.
CPSC-57100 Artificial Intelligence 1 (3)
Introduction to the field of artificial intelligence. This course covers the study of intelligent agent design and rational decision making. Topics include: goal-driven agents, search techniques, optimization, constraint satisfaction problems, logic, knowledge-based agents, probability and utility theory, Bayesian networks, and the basics of machine learning.
CPSC-57200 Artificial Intelligence 2 (3)
Techniques for planning, learning, and decision making under uncertainty and in multi-agent environments. Topics include Markov Decision Processes (MDPs), partially observable MDPs, reinforcement learning, game theory, Bayesian networks, and special topics.
CPSC-60000 Object-Oriented Design (3)
Tools, patterns, and principles of object-oriented software development that lead to high-quality, team-produced, extensible code for the enterprise; object-oriented testing strategies; UML modelling of software systems; source-code control; comparative approaches to software development; enterprise software architecture.
CPSC-61000 Theory of Computation (3)
This course examines undecidability, computational complexity, and models of computations. Topics include languages and automata, Turing machines, reductions, time and space complexity classes, and completeness.
CPSC-61500 Computer Graphics (3)
This course provides an overview of display devices and applications, point-plotting techniques, two-dimensional transformations, clipping and windowing, lighting, and three-dimensional techniques. Students are also introduced to interactive computer graphics, animation and graphics applications. Students explore these concepts using C++ and the OpenGL programming interface.
CPSC-62700 Programming for Penetration Testing (3)
The best way to defeat a hacker is to code like one. That means being able to build, extend, and manipulate scripts and applications that compromise systems. This course presents a number of techniques for exploiting vulnerabilities in a variety of computer systems. Students will build port scanners, construct botnets, write exploits, create their own forensic analysis and network traffic analysis tools, develop web reconnaissance applications, implement scripts for examining and exploiting a wireless network, and craft malware that evade antivirus tools.
CPSC-62800 Programming for Digital Forensics (3)
While many tools exist for examining digital systems, the frenetic pace at which the cyber threat evolves means that hackers are constantly discovering new ways to hide their tracks. Digital forensics specialists who lack a programmer's understanding of how data are stored and hidden and how tools are written to examine these systems will forever be limited to using the tools others create. This course prepares digital forensics experts who can write their own digital forensics tools.
CPSC-63000 Database Systems (3)
File storage structures, relational database management systems, entity relationship diagrams, relational algebra, relational calculus, SQL, database security, concurrency control, distributed and cloud storage solutions, coding database-supported web sites using PHP and XML.
CPSC-65500 Cloud Computing and Virtualization (3)
An introduction to the concepts and techniques of implementing cloud computing through the use of virtualization and distributed data processing and storage. Topics include operating system virtualization, distributed network storage, distributed computing, cloud models (IAAS, PAAS, and SAAS), and cloud security.
CPSC-66000 Programming Languages (3)
This course provides a study of the structures of selected programming languages related to ALGOL 60 and LISP. Emphasis is placed on semantics rather than syntax of the programming languages. Backus-Naur Form, recursion, parameter transmitting techniques, and an introduction to formal language theory is covered. Functional programming is also discussed. A term project is required.
CPSC-66500 Software Vulnerabilities and Defenses (3)
The discovery, exploitation and prevention of security flaws in web and mobile applications. This course examines vulnerabilities seen a wide variety of software technologies, including databases, file systems and web services.