CPSC - Computer Science

CPSC-50000 Computer Organization

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.

3

CPSC-50100 Programming Fundamentals

A study of computer organization, data types, expressions, logical structures, subprograms (subroutines and functions), recursion, structured data types (arrays and records), dynamically allocated data, array-based lists, linked lists, stacks, queues, graphs, trees, sorting, and searching.
3

CPSC-50200 Discrete Structures

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

CPSC-50300 Algorithms and Data Structures

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

Prerequisites

CPSC 50100

CPSC-50400 Computer Architecture

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.

3

Prerequisites

CPSC 50000

CPSC-50600 Cyber Security Essentials

Fundamentals of information, computer and network security are introduced. Topics include access control, authentication, trusted computing, software and hardware security and vulnerabilities, operating system security models, how various kinds of malware function, network security devices and architecture, database vulnerability and security, computer hacking techniques and countermeasures, intrusion detection, cryptography, wireless security, and network security protocols. 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.
3

Prerequisites

CPSC 50000

CPSC-50700 Advanced Cyber Security

This second course in cyber security explores advanced technological techniques and tools in cyber security. 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.
3

Prerequisites

CPSC 50600

CPSC-51000 Introduction to Data Mining and Analytics

Overview of the field of data mining and analytics; includes large-scale file systems and Map-Reduce, measures of similarity, link analysis, frequent item sets, clustering, e-advertising as an application, recommendation systems.

3

Prerequisites

CPSC 50200 or MATH 51000, and CPSC 50100, CPSC 51100, or prior programming experience, or an undergraduate degree in Computer Science

CPSC-51100 Statistical Programming

Programming structures and algorithms for large-scale statistical data processing and visualization. Students will use commonly available data analysis software packages to apply concepts and skills to large data sets and will also develop their own code using an object­oriented programming language.

3

Prerequisites

CPSC 50100 or prior programming experience

CPSC-51500 Operating Systems and Distributed Systems

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; models of distributed systems, interprocess communications, distributed objects and remote invocation, coordination and agreement, distributed transactions, interoperability, and replication; component frameworks and middleware such as CORBA and DCE. Security problems in distributed application environments will be analyzed and solutions will be discussed.

3

CPSC-51700 Pervasive Application Development

Development of web- and mobile-based front ends for large-scale data systems; with a focus of portability, accessibility, and intuitiveness.

3

Prerequisites

CPSC 50100, CPSC 51100, or prior programming experience

CPSC-52000 Intrusion Detection, Response and Recovery

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.

3

Prerequisites

CPSC 50600 or INSY 50500, or an undergraduate degree in Computer Science

CPSC-52500 Encryption and Authentication

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.

3

Prerequisites

INSY 50500, CPSC 50100, CPSC 51100, or prior programming experience.

CPSC-53000 Data Visualization

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.

3

Prerequisites

CPSC 50100, CPSC 51100, or prior programming experience

CPSC-54000 Large-Scale Data Storage Systems

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.

3

Prerequisites

CPSC 50100, CPSC 51100, or prior programming experience

CPSC-55000 Machine Learning

Algorithms for enabling artificial systems to learn from experience; supervised and unsupervised learning; clustering, reinforcement learning; control. Students will write programs that demonstrate machine learning techniques.

3

Prerequisites

CPSC 50200 or MATH 51000, and CPSC 50100, CPSC 51100, or prior programming experience

CPSC-55200 Semantic Web

Expressing relationships among items in a way that enables automated, distributed analysis in an application-independent way; text mining to derive meaning from semantic networks; algorithms for processing semantic networks; developing a web of things.

3

Prerequisites

CPSC 50100, CPSC 51100, or prior programming experience

CPSC-55500 Distributed Computing Systems

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.

3

Prerequisites

CPSC 51100 or CPSC 51500, or an undergraduate degree in Computer Science

CPSC-56000 Securing Windows

This is a hands-on course that focuses on current strategies crackers use to attack Windows systems and how system administrators may counteract such attacks.

3

Prerequisites

CPSC 51500 or an undergraduate degree in Computer Science

CPSC-56100 Securing Linux

This is a hands-on course that focuses on current strategies crackers use to attack Linux systems and how system administrators may counteract such attacks.

3

Prerequisites

CPSC 51500 or an undergraduate degree in Computer Science

CPSC-57100 Artificial Intelligence 1

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.

3

Prerequisites

CPSC 50200 or MATH 51000, and CPSC 50100, CPSC 51100, or prior programming experience

CPSC-57200 Artificial Intelligence 2

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

Prerequisites

CPSC 57100

CPSC-57400 Natural Language Processing

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

Prerequisites

CPSC 57100

CPSC-58000 Communications and Networking

This course covers various topics, with areas of concentration on communications devices, protocols, standards, networking topologies, hardware, software, design, installation and setup, maintenance and security. The advantages, disadvantages and implementation issues of Microsoft Windows and Unix are explored.
3

CPSC-59000 Data Science Project for Computer Scientists

The capstone experience for students pursuing the Computer Science concentration in Data Science. Students will develop a solution for a real-world problem in data mining and analytics, document their work in a scholarly report, and present their methodology and results to faculty and peers.

3

Prerequisites

A minimum of 24 hours earned in the MS Data Science program.

CPSC-59100 Information Security Capstone: Technical Concentration

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.

3

Prerequisites

A student must have earned at least 21 credit hours in the MSIS program to take this course.

CPSC-59600 Special Topics in Computer Science

This course exposes students to cutting-edge topics in Computer Science that have not yet been become permanent parts of the curriculum. These may include exposing students to new tools for conducting work within certain application areas of computer science. Or, certain offerings of this course could explore new theories of computer science that are currently sparking interest and being developed.
1-3

CPSC-59700 Research in Computer Science

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

Prerequisites

CPSC 50100 or prior programming experience

CPSC-59900 Independent Study

This is an advanced course that enables students to carry out independent study under the supervision of a faculty member.

1-3

CPSC-60000 Object-Oriented Design

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-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-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-62700 Programming for Penetration Testing

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

Prerequisites

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

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 INSY 50500, or an undergraduate degree in Computer Science

CPSC-63000 Database Systems

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

Prerequisites

CPSC 50100

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 INSY 50500, or an undergraduate degree in Computer Science

CPSC-66500 Software Vulnerabilities and Defenses

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.

3

Prerequisites

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

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-68000 Industrial and Critical Infrastructure Network Security

The critical infrastructures of a nation are those systems that provide the goods, resources, and services essential to modern life. These include utility systems like power, water, and natural gas delivery systems, as well as transportation networks, banking and finance, and emergency services. Historically, these infrastructures have been kept physically and logically separated from other networks and systems. They also have tended to use the same networking protocols as industrial and manufacturing control systems. However, the trend toward convergence and its promised efficiencies have introduced new vulnerabilities to both 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 or INSY 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 58000, and CPSC 50600 or INSY 50500, or an undergraduate degree in Computer Science

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