Academic Catalog

Computer Science (CPSC)

CPSC 50000   - Computer Organization  (3)  
This course provides a thorough study of the principles of operation for a computer system. It covers the principal subsystems of a computer, including the central processing unit (CPU), memory, input/output, and the communications bus. Number systems and various schemes for the digital representation of numbers are also discussed. Additional critical subjects covered include the principles of hierarchical computer organization, machine instruction sets, addressing modes, CISC vs RISC, input/output processing, and interrupt handling, as well as the application of many of these concepts to modern personal computers. The student will also gain insight into the boot process by installing multiple operating systems on a single PC.
CPSC 50100   - Programming Fundamentals  (3)  
This course introduces the fundamental concepts and approaches for problem solving and analysis using a standard, object-oriented programming language. Students will learn the skills of algorithm development, efficiency analysis, program implementation, testing, and debugging. Topics include data types, conditional statements, logical structures, loops, functional decomposition, recursion, methods, classes, arrays, files, exceptions, basic algorithms for searching and sorting, linked lists, and stacks.
CPSC 50200   - Discrete Structures  (3)  
An introduction to discrete structures, this course covers such topics as sets, functions, relations, basic logic, proof techniques, the basics of counting and probability, algorithms, graphs and trees.
CPSC 50300   - Algorithms and Data Structures  (3)  
This course is the study of the design and analysis of computer algorithms including the data structures used in these algorithms. Topics include design techniques, such as divide-and-conquer, dynamic programming, the greedy method and backtracking, sorting, searching, graph computations, pattern matching and NP-complete problems.
Prerequisite: (CPSC 50100 (may be taken concurrently))  
CPSC 50400   - Computer Architecture  (3)  
This study of computer architecture covers the central processor unit, memory unit and I/0 unit, number systems, character codes and I/O programming. Programming assignments provide practice working with assembly language techniques, including looping, addressing modes, arrays, subroutines, and macros. Microsoft assembler is discussed and used for programming throughout the course.
Prerequisite: (CPSC 50000 (may be taken concurrently))  
CPSC 50500   - Communications and Networking  (3)  
This course covers essential concepts of communications and networking using TCP/IP, and OSI reference models. Each layer of these models, and associated protocols, will be discussed in details. Special emphasis will be placed on Ethernet technology of the data link layer, IPv4 and IPv6 protocols of the network layer, TCP and UDP protocols of the transport layer, in additional to many protocols for the application layer including but not limited to HTTP, DNS, POP, and IMAP. Data transmission medium, signals types, and interfaces technologies will be discussed as essential components of the physical layer.
CPSC 50600   - Cyber Security Essentials  (3)  
The course introduces and discusses elements of information, computer and network security, and its security operations. Topics include information assurance, symmetric/asymmetric encryption, security software (vulnerability) assessment, modern operating system security, access control, and authentication. Furthermore, the course introduces various malware behaviors, intrusion detection/prevention, security intelligence, and network security protocols. Students will use and develop software, virtual systems, programming, and tools to complete a graduate-level project or work on a research paper that reflects the skills they learned in the course.
CPSC 50700   - Advanced Cyber Security  (3)  
This second course in cyber security explores advanced technological techniques and tools in cybersecurity. Students will use these technologies and skills to identify different categories of threats, and implement corresponding countermeasures. Student will build knowledge of the tools and protocols needed to perform, encryption and authentication of data, operating system and application security, malware operation and analysis, code-level exploits, reverse engineering, security design principles, techniques for reducing complexity, and formal security models. In addition students will gain insight into the legal, social, and political dynamics of the cyber universe. Students will use software and tools they learn in this course to complete a graduate level final project/paper that reflects the skills and tools they learned in the course.
Prerequisite: CPSC 50600 (may be taken concurrently)  
CPSC 50900   - Database Systems  (3)  
This course offers a thorough investigation of relational databases and DBMS, and provides a three-fold coverage of the topic: database design, programming and administration. Students will learn how to use Entity Relationship Diagrams (ERDs) to model a problem, and implement normalization in the process of database design. Structured Query Language (SQL) and database programming will be presented, students will work on lab activities involving writing SQL queries, and using high-level programming languages for accessing and manipulating databases. Students will learn about various database administration tasks including performance monitoring, user account management, query optimization, deadlock detection and resolution, and more.
Prerequisite: CPSC 50100 (may be taken concurrently)  
CPSC 51500   - Operating Systems  (3)  
This course will present the concepts and principles of multiple user operating systems: memory, CPU, I/O device allocation, scheduling and security, memory hierarchies, performance evaluation, analytic models, simulation, concurrent programming and parallel processors. It will also discuss distributed computing principles, theory, implementations, and security. Security problems in distributed application environments will be analyzed and solutions will be discussed.
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.
Prerequisite: CPSC 50100 (may be taken concurrently) or CPSC 51100 (may be taken concurrently) or DATA 51100 (may be taken concurrently)  
CPSC 52000   - Network Security Essentials  (3)  
Information security ultimately depends on identifying and applying available security features appropriately. This course discusses the development of a secure information infrastructure consisting of servers, networks, firewalls, workstations, and intrusion detection systems. It also covers principles and practice related to secure operation of existing distributed systems. Principles of penetration testing for assessment of system security are also addressed. This course will also cover network security management systems that gather and analyze information to identify possible security breaches. It includes intrusions (attacks from outside the organization) and misuse (attacks from within the organization). Students learn the use of vulnerability assessment and scanning technologies to determine the security of a network.
Prerequisite: (CPSC 50600 (may be taken concurrently) or INSY 50500 (may be taken concurrently))  
CPSC 52500   - Encryption and Authentication  (3)  
This course will present key cryptologic terms, concepts, and principles. Traditional cryptographic and cryptanalytic techniques are covered plus perspective on successes and failures in cryptologic history, including both single-key algorithms and double-key algorithms. Issues in network communications, network security, and security throughout the different layers of the OSI model for data communications will also be discussed in depth, as well as the use of cryptologic protocols to provide a variety of security services in a networked environment. Authentication, access control, non­ repudiation, data integrity, and confidentiality issues will also be covered, plus key generation, control, distribution, and certification issues.
Prerequisite: INSY 50500 (may be taken concurrently) or CPSC 50100 (may be taken concurrently) or CPSC 51100 (may be taken concurrently) or DATA 51100 (may be taken concurrently)  
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.
Prerequisite: (CPSC 51100 (may be taken concurrently) or DATA 51100 (may be taken concurrently) or CPSC 51500 (may be taken concurrently))  
CPSC 56000   - Securing Operating Systems  (3)  
This is a hands-on course that focuses on current strategies crackers use to attack Linux and Windows operating systems and how system administrators may counteract such attacks. Students will test their security strategies using scripts they create.
Prerequisite: CPSC 51500 (may be taken concurrently)  
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.
Prerequisite: (CPSC 50200 (may be taken concurrently) or DATA 50000 (may be taken concurrently) or MATH 51000 (may be taken concurrently) ) and (CPSC 50100 (may be taken concurrently) or CPSC 51100 (may be taken concurrently) or DATA 51100 (may be taken concurrently))  
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.
Prerequisite: CPSC 57100 (may be taken concurrently)  
CPSC 57400   - Natural Language Processing  (3)  
Methods and algorithms for natural language processing (NLP). This course will present the linguistic, probabilistic and statistical foundation that underlies NLP and introduce algorithms used in NLP with an emphasis on applying these algorithms in developing computer applications.
Prerequisite: CPSC 57100 (may be taken concurrently)  
CPSC 57500   - Ethics in Artificial Intelligence  (1)  
This one-credit seminar explores the ethical dimensions of Artificial Intelligence (AI) and its growing influence on society. The course begins with a brief overview of the history of ethics in AI, highlighting seminal thinkers and key papers that have shaped the field. Students will then engage with core ethical concepts—such as fairness, transparency, and justice—and apply them to real-world scenarios involving AI technologies.
CPSC 57600   - Applied AI for Business Apps  (3)  
This course offers a comprehensive overview of the strategic applications of Artificial Intelligence (AI), emphasizing generative AI’s transformative impact across industries. It educates business leaders and technologists on how to leverage AI to enhance business outcomes, drive innovation, and secure competitive advantages. The curriculum covers the evolution of AI, its operational integration, and strategic implementation in various business contexts. Participants will explore practical tools, frameworks, and real-world case studies to develop a robust understanding of AI’s.
CPSC 57700   - Machine Learning Operations  (3)  
This course provides a comprehensive overview of Machine Learning Operations (MLOps) and its lifecycle phases, including alignment to business objectives, development, testing, deployment, monitoring, continuous training, and governance.
CPSC 57900   - Generative Artificial Intelligence  (3)  
This course delves into the internals of foundation models with a particular focus on large language models (LLMs). Students will learn the fundamental techniques behind building foundation models, including pre-training and fine-tuning for downstream tasks. The course will guide students through developing a basic LLM from scratch to gain hands-on understanding of these models' architecture and functionality. The course will then focus on using LLMs as building blocks in real-world applications. Students will explore how to augment LLMs with proprietary knowledge bases, extend their functionality using agents and external tools, and integrate them within larger systems such as chainapps, and RAG applications. Prior completion of DATA 56000 is recommended but not required.
CPSC 59100   - Cybersecurity Project  (3)  
This is the culminating experience for students in the Technical Track of the MSIS major, and it is designed to give students an opportunity to integrate all that they have learned from prior coursework in the program. Students will select and explore a topic of current research interest in the information security field, or they will implement a project germane to information security. In either case, the student will document their findings and accomplishments in a well-researched scholarly paper and present it to their faculty and peers. Students will work closely with a faculty advisor according to the traditional mentor-student graduate model to produce a publication-worthy document that can serve as a reference for future MSIS students and faculty.
CPSC 59609   - ST: Quantum Computing  (3)  
This course will provide students with lecture and/or lab experiences presenting topics of current interest in Computer Science. The course may be repeated for credit. Topics will vary. Topics are selected to enhance student learning and complement, not duplicate, material used in Readings, Seminar, and Thesis. 1-3 credit(s)
CPSC 59610   - ST: Machine Learning with Graphs  (1)  
This course will provide students with lecture and/or lab experiences presenting topics of current interest in Computer Science. The course may be repeated for credit. Topics will vary. Topics are selected to enhance student learning and complement, not duplicate, material used in Readings, Seminar, and Thesis. 1-3 credit(s)
CPSC 59700   - Research in Computer Science  (3)  
Introduction to research in Computer Science. Topics include literature review, common mathematical proof techniques and basic algorithm analysis. Additionally, the research process will be presented, including design, methodology and ethics.
Prerequisite: (CPSC 50000 (may be taken concurrently) and CPSC 50100 (may be taken concurrently) and CPSC 50200 (may be taken concurrently) and CPSC 50300 (may be taken concurrently))  
CPSC 59900   - Independent Study  (1-3)  
This is an advanced course that enables students to carry out independent study under the supervision of a faculty member.
CPSC 60000   - Object Oriented Development  (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.
Prerequisite: CPSC 50300 (may be taken concurrently)  
CPSC 60500   - Software Engineering  (3)  
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.
Prerequisite: CPSC 50300 (may be taken concurrently)  
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.
Prerequisite: (CPSC 50200 (may be taken concurrently)) and (CPSC 50300 (may be taken concurrently))  
CPSC 61200   - Software Architecture and Design  (3)  
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.
Prerequisite: CPSC 60000 (may be taken concurrently)  
CPSC 61300   - Software Testing and Quality Assurance  (3)  
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.
Prerequisite: CPSC 60000 (may be taken concurrently)  
CPSC 61400   - Software Production Process  (3)  
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.
Prerequisite: CPSC 60000 (may be taken concurrently)  
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.
Prerequisite: CPSC 50100 (may be taken concurrently)  
CPSC 62000   - Video Game Programming  (3)  
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.
Prerequisite: CPSC 61200 (may be taken concurrently)  
CPSC 62100   - Advanced Video Game Programming  (3)  
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.
Prerequisite: CPSC 62000 (may be taken concurrently)  
CPSC 62600   - Blockchain and Cryptocurrency  (3)  
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.
Prerequisite: CPSC 50100 (may be taken concurrently)  
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.
Prerequisite: (CPSC 50100 (may be taken concurrently)) and (CPSC 50600 (may be taken concurrently) or INSY 50500 (may be taken concurrently))  
CPSC 65000   - Robotics  (3)  
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.
Prerequisite: CPSC 57100 (may be taken concurrently)  
CPSC 65100   - Reinforcement Learning  (3)  
This course covers the implementation of intelligent agents that learn over time through interaction, while optimizing decision-making. Students in this course will study the framework for reinforcement learning and algorithms used to implement agents for solving real-world problems. Many of these algorithms and frameworks are inspired by nature, and the sources of these inspiration will also be discussed. This includes research from neuroscience, psychology, and other relevant fields. The course involves application of the reinforcement learning algorithms to current problems in fields such as robotics, gaming, autonomous driving, and the development of large language models.
Prerequisite: CPSC 57100  
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.
Prerequisite: CPSC 51500 (may be taken concurrently)  
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.
Prerequisite: CPSC 50300 (may be taken concurrently)  
CPSC 66400   - Wireless Security  (3)  
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.
Prerequisite: CPSC 50600 (may be taken concurrently) or INSY 50500 (may be taken concurrently)  
CPSC 66500   - Application Security  (3)  
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.
Prerequisite: CPSC 52500 (may be taken concurrently) and CPSC 50600 (may be taken concurrently)  
CPSC 67000   - Cloud and Virtualization Security  (3)  
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.
Prerequisite: CPSC 51500 (may be taken concurrently)  
CPSC 67300   - Digital Forensics  (3)  
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.
Prerequisite: CPSC 52500 (may be taken concurrently)  
CPSC 67500   - Network Forensics  (3)  
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.
Prerequisite: CPSC 67300 (may be taken concurrently)  
CPSC 67600   - Mobile Device Forensics  (3)  
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.
Prerequisite: CPSC 67300 (may be taken concurrently)  
CPSC 68000   - Advanced Network Security  (3)  
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.
Prerequisite: CPSC 50600 (may be taken concurrently) and (CPSC 50500 (may be taken concurrently) )  
CPSC 68500   - Enterprise Network Security  (3)  
This course focuses on security functions and requirements for enterprise networks, and how to manage and operate advanced network security infrastructures. The course offers a hands-on approach by demonstrating how to configure and operate numerous network devices and security controls such as switches, routers, firewalls, IDS/IPS, and SIEM. Students will create their own functioning network, assess its security, and apply numerous security features such as port blocking, AAA security, ACLs and NAT, Cryptography, Intrusion detection/prevention, and security data analytics.
Prerequisite: CPSC 50600 (may be taken concurrently) and (CPSC 50500 (may be taken concurrently) )  
CPSC 69100   - Computer Science Master's Project  (3)  
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.
Prerequisite: CPSC 59700 (may be taken concurrently)  
CPSC 69300   - Artificial Intelligence Master’s Project  (3)  
This is the capstone experience for students in the M.S. Artificial Intelligence, and it is designed to give students an opportunity to integrate all that they have learned from prior coursework in the program. Students will select and explore a topic of current research interest in the area of artificial intelligence, or they will design and implement a project that incorporates artificial intelligence in the solution. Students will document their work in a scholarly report and present their methodology and results to faculty and peers.
CPSC 69700   - Master's Thesis  (3)  
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.
Prerequisite: CPSC 59700 (may be taken concurrently)