600

CPSC-60000 Object Oriented Development

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.
3

Prerequisites

CPSC 50300

CPSC-60500 Software Engineering

This course starts by introducing students to basic software engineering concepts. Activities performed at each stage of the software development life cycle are introduced and discussed. Students will be introduced to the tasks and models a development team needs to successfully complete a software project. Topics will include software development processes, software requirements and specification, system design and analysis, configuration management, quality assurance activities, software project management, project release planning, and software engineering ethics.
3

Prerequisites

CPSC 50300

CPSC-61000 Theory of Computation

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.
3

Prerequisites

CPSC 50200 and CPSC 50300

CPSC-61200 Software Architecture and Design

This course offers a thorough investigation of principles, techniques, and tools used in designing and structuring complex software systems. Several architectural styles will be investigated including Service Oriented Architectures, microservices, pipes and filters, Model-View-Controller, and more. Course will shed light on different ways software architecture impacts and is impacted by technology stack, software process, evolving business needs, business model, etc. Other topics such as architecture modeling, documentation and architectural quality measures will be introduced.
3

Prerequisites

CPSC 60000

CPSC-61300 Software Testing and Quality Assurance

This course covers software testing principles, techniques and best practices used in the development of high-quality software systems. Course will follow a hands-on approach to various types of functional testing including unit, integration and user acceptance testing as well as non-functional testing including load, performance and security testing. Code reviews, requirements walk-throughs, code quality metrics and other process related quality assurance concepts will be investigated.
3

Prerequisites

CPSC 60000

CPSC-61400 Software Production Process

This course teaches concepts, processes and techniques of Agile Software Development. Topics include managing small scrum teams, running effective stand ups and post-mortems meetings, measuring team velocity, and several others. Course touches briefly on traditional project methodology, leadership skills, conflict management, software maturity framework, legal and ethical codes, etc.
3

Prerequisites

CPSC 60000

CPSC-61500 Computer Graphics

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.
3

Prerequisites

CPSC 50100

CPSC-62000 Video Game Programming

This course covers the concepts and tools required to write a 2D video game. Topics include the main game loops, coordinate systems, game design, user input, bitmaps, sprites, particle systems, sound effects, music and AI. Algorithms and data structures for video games are discussed in depth, including state machines, collision detection, and sorting. The C++ language, modern tools and libraries are used to create an arcade game.
3

Prerequisites

CPSC 61200

CPSC-62100 Advanced Video Game Programming

In this course, concepts learned in CPSC 57600 are expanded with the creation of a larger project. Students create a video game in a group setting using an IDE, SDK and platform of their choice. Advanced topics such as modern tools, 3D engines and physics are discussed. A survey a relevant collaboration tools is explored, as well as advanced debugging and regression techniques.
3

Prerequisites

CPSC 62000

CPSC-62600 Blockchain and Cryptocurrency

This course provides an overview of current cryptocurrency systems, including Bitcoin and Ethereum, and presents the algorithms that make them possible. Students will learn how a blockchain is constructed to produce a secure distributed ledger, and how wallets and mining work. Ethical and legal issues related to cryptocurrencies will be discussed. The course contains a project in which students will write code to implement their own cryptocurrency.
3

Prerequisites

CPSC 50100

CPSC-62800 Programming for Digital Forensics

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.
3

Prerequisites

CPSC 50100 and CPSC 50600, or an undergraduate degree in Computer Science

CPSC-65000 Robotics

This course introduces the student to the modeling, identification, and control of robotic systems. The course focuses on the implementation of identification and control algorithms on a two-link robot. Topics include the mathematical modeling of robotic systems and the analysis, simulation, and implementation of both linear and nonlinear representations of such systems. The design and integration of sensors and actuators and algorithms for responding and controlling these devices will be pursued.
3

Prerequisites

CPSC 57100

CPSC-65500 Cloud Computing and Virtualization

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.
3

Prerequisites

CPSC 51500 or an undergraduate degree in Computer Science

CPSC-66000 Programming Languages

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.
3

Prerequisites

CPSC 50300

CPSC-66400 Wireless Security

This course explores the security of wireless data networks. It describes the standards that govern wireless communications and security, the physics of the various approaches to wireless data security, the attacks against wireless systems, and techniques for thwarting such attacks. The course discusses the various 80.11 technologies as well as cell phone, satellite, and Bluetooth approach.

3

Prerequisites

CPSC 50600, or an undergraduate degree in Computer Science

CPSC-66500 Application Security

This course examines vulnerabilities seen in a wide variety of software technologies, including databases, file systems, and web services. Examples on the discovery, exploitation, and prevention of security flaws in web and mobile applications will be provided. Students will learn how to build, extend and manipulate scripts and applications that compromise systems. They will use 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.

3

Prerequisites

CPSC 50600 and CPSC 52500

CPSC-67000 Cloud and Virtualization Security

An introduction to the concepts and techniques of implementing and securing  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 techniques for securing cloud and virtual systems.

3

Prerequisites

CPSC 51500 or an undergraduate degree in Computer Science

CPSC-67300 Digital Forensics

This course focuses on the practice of digital forensics across multiple platforms and technologies. It emphasizes the role of forensics in countering advanced persistent threats (APTs), which are sophisticated, coordinated attacks that employ a variety of techniques to attempt to compromise a system. Students investigate case studies describing various kinds of attacks against an organization. In working through these case studies, students learn how to perform forensic analyses of network traffic, mobile device file systems, memory, and malware. Students learn how the engines of forensics tools work so that they can perform their analyses even as the use of anti-forensics techniques continues to grow.

3

Prerequisites

CPSC 52500 or an undergraduate degree in Computer Science

CPSC-67500 Network Forensics

This course presents essential concepts and hands-on techniques for conducting analysis of Network Intrusions and Cybercrime in an organization. This course discusses log file analysis, gathering evidence from all networked devices, and router forensics. It also covers principles and practice related to examination of internal and external cyber-attacks, cybercrimes, e-mail crimes and violations, corporate espionage, copyright and trademark violations.
3

Prerequisites

CPSC 67300

CPSC-67600 Mobile Device Forensics

This course presents the essential concepts and hands-on techniques for recovering evidence, data and corporate assets from mobile devices such as iPhones, windows mobile phones, Android phones, iPads, Tablet PCs, and iPods. The course discusses forensics acquisition, analysis and reporting of evidence retrieved from mobile devices. Students will learn how to recover passwords, deleted voicemails, photos and text messages, geotagged metadata from camera phones, and data from various apps that run on mobile devices.
3

Prerequisites

CPSC 67300

CPSC-68000 Advanced Network Security

The critical infrastructures of a nation include utility systems like power, water, and natural gas delivery systems, as well as transportation networks, banking and finance, and emergency services.To operate more efficiently, the computer systems supporting these infrastructures are converging, and this has introduced new vulnerabilities to industrial and critical infrastructure systems. This course describes critical infrastructures and industrial control systems are supported by computer technology, identifies and explains in technical detail the vulnerabilities that affect this technology, and explain how to design solutions to counteract these vulnerabilities.

3

Prerequisites

CPSC 50600, and either CPSC 50500 or an undergraduate degree in Computer Science

CPSC-68500 Enterprise Network Security

This course will focus on how to configure and operate numerous networking devices such as a switches, routers, and firewalls. Students will create their own functioning network and be able to apply features such as port blocking, AAA security, ACLs and NAT, PKI/cryptography, and threat mitigation/containment. Students will be introduced to different types of routing such as static, RIP, and BGP. In addition, there will be a heavy emphasis on IPv4 and IPv6 subnetting.
3

Prerequisites

CPSC 50600, and either CPSC 50500 or an undergraduate degree in Computer Science

CPSC-69100 Computer Science Master's Project

This course provides graduate students with an opportunity to put into practice the theoretical knowledge they learned and the skills they have earned during their program of study in the area of computer science. Students work in teams to define a problem or select a problem introduced by their faculty advisor to design, develop, and provide a substantial solution, then deploy a real-world system, demonstrate the system, and present their methodology and final product to faculty and peers.
3

Prerequisites

CPSC 59700

CPSC-69700 Master’s Thesis

Students design and conduct research in an area of Computer Science.  Students will work closely with a faculty advisor according to the traditional mentor-student graduate model to produce a publication-worthy document and present it to their faculty and peers.
3

Prerequisites

CPSC 59700