Please visit the catalog archive for details about 2022-23 degrees and programs.

 
Page PDF

Course Descriptions

 

View real-time listing of classes and sections offered.

NOTE: Individual course fees are subject to change. See your account summary in myUVU for accurate charges.

CS-Computer Science
CS 1030
Foundations of Computer Science
3 Credit Hours

Introduces the basics of computing, including computer hardware, and programming concepts and language. Explores how computers work and how a computer may be programmed. Includes a brief history of computer, programming languages, and computer numbering systems. Presents basic programming constructs; students produce a variety of introductory level programs. Surveys various computing professions. May be delivered hybrid and/or online. Lab access fee of $45 computers applies.

CS 1400
Fundamentals of Programming
3 Credit Hours
Prerequisite(s): MAT 1010 or MAT 1015 with a B or better, or MAT above 1015 or ACT score 23 or higher or ALEKS score 38 or higher. CS 1030 recommended

Introduces techniques and tools to formulate and solve problems where computer algorithms and programs are a core part of an effective, repeatable solution. Demonstrates algorithmic thinking using procedural programs composed of sequences of commands, functions, loops, conditionals, and basic data structures. May be delivered online. Lab access fee of $45 for computers applies.

CS 1410
Object Oriented Programming
3 Credit Hours
Prerequisite(s): CS 1400 and (MATH 1050 or MATH 1055 with a C+ or better, or MATH above 1050)

Teaches proper program structure using the core concepts of object-oriented programming: classes, objects, encapsulation, inheritance and polymorphism. Presents problems of increasing size and complexity requiring OOP techniques, standard libraries and other appropriate language constructs. Presents methods to identify, define and implement solutions to naturally recursive problems. May be delivered online. Lab access fee of $45 for computers applies.

CS 2250
Java Programming
3 Credit Hours
Prerequisite(s): CS 1400

Covers practical Java programming in-depth, including abstract classes and interfaces, proper use of the packages Java.lang, Java.io, and Java.util, GUI design and implementation, and programming. Lab access fee of $45 for computers applies.

CS 2300
Discrete Mathematical Structures I
3 Credit Hours
Prerequisite(s): (CS 1410 or INFO 2200) and MATH 1050 or higher

Covers algebraic structures applied to computer programming. Includes logic, sets, elementary number theory, mathematical induction, recursion, algorithm complexity, combinatorics, relations, graphs, and trees. Lab access fee of $45 for computers applies.

CS 2370
C Plus Plus Programming WE
3 Credit Hours
Prerequisite(s): CS 1410

Introduces C++ programming for students with prior programming experience. Covers language fundamentals, core standard library components, error handling, value semantics, pointers and memory management, object-oriented programming, and templates. Lab access fee of $45 for computers applies.

CS 2420
Introduction to Algorithms and Data Structures
3 Credit Hours
Prerequisite(s): CS 1410

Uses data abstraction to design and implement modular programs of medium size and complexity. Structures solutions to problems using common data structures and algorithms such as advanced arrays, lists, stacks, records, dynamic data structures, searching and sorting, vectors, trees, linked lists, and graphs. Evaluates alternative solutions to problems. Analyzes algorithmic complexity metrics in Big-O notation. Lab access fee of $45 for computers applies.

CS 2450
Software Engineering
3 Credit Hours
Prerequisite(s): CS 2300, CS 2420

Presents concepts, methodology and best-practices necessary to develop large scale software projects. Includes step-wise software requirements analysis, design, implementation, testing and release. Discusses software generation, reuse, scheduling, verification, and maintenance. Emphasizes current "real world" industry best-practices and tools. Lab access fee of $45 for computers applies.

CS 2550
Web Programming I
3 Credit Hours
Prerequisite(s): CS 1410 or DWDD 2720 or INFO 1200

Covers design and development of browser-based programs with an emphasis on single-page applications. Teaches generation and modification of HTML via JavaScript, debugging techniques, communicating with web servers, and use of XML and JSON. Lab access fee of $45 for computers applies.

CS 2600
Computer Networks I
3 Credit Hours
Prerequisite(s): CS 2810 or (INFO 1200 and IT 1600)

A rigorous introduction to computer networking theory and technologies for Computer Science and Information Technology majors. Includes theory of data communications protocols; theory and design of transmission systems; transmission media; and communication software. Emphasizes the lower layers of the Open Systems Interconnection model. Requires lab exercises to be completed outside of lecture. Lab access fee of $45 for computers applies.

CS 2690
Computer Networks II
3 Credit Hours
Prerequisite(s): CS 1410, CS 2300, CS 2600, CS 2370
Prerequisite(s) or Corequisite(s): MATH 1210

Continues CS 2600 Computer Networks I. Focuses on the upper layers of the OSI and Internet models. Covers Internet (TCP/IP) protocols, routing theory, transport protocols, network application interfaces, presentation formatting, information theory and compression, cryptography, and other emerging technologies as time permits. Requires lab exercises and programming assignments to be completed outside of lecture. Software fee of $15 applies. Lab access fee of $45 for computers applies.

CS 2700
Causal Inference
3 Credit Hours
Prerequisite(s): CS 1400

Explores a variety of data generating processes of importance for causal inference with computer simulations. Includes stratified sampling, inverse probability weighting, matching, blocking, propensity, sensitivity, causal graphs, d-separation, identifiability, the causal Markov condition, and the back-door criterion for selecting an admissible set of covariates. Examines causal mechanisms, the Rubin causal model, and both deterministic and stochastic counterfactuals. Develops ethical A/B testing procedures.

CS 2810
Computer Organization and Architecture
3 Credit Hours
Prerequisite(s): CS 1400

Uses assembly language to introduce basic concepts of computer organization. Includes number systems, CPU organization, instruction sets, programming in assembly, memory organization, debugging, program design, and documentation. Covers interrupts, vector tables, and disk I/O. Lab access fee of $45 for computers applies.

CS 281R
Internship
1 to 8 Credit Hours
Prerequisite(s): Department approval

Provides on-the-job work experience for CNS majors. Utilizes the skills and abilities in the fields of computer science, software engineering, networking, and/or computer engineering. May be repeated for a maximum of three credits toward graduation. May be graded credit/no credit.

CS 291R
Independent Study
1 to 6 Credit Hours

This course will allow the student to pursue an independent topic in computer science and study this topic in-depth in a flexible non-classroom environment. A maximum of three hours may be counted towards graduation without prior written CNS Department approval. The topic must be approved by the instructor and the CNS Department Chair. Lab access fee of $45 for computers applies.

CS 296R
CS Seminar
1 to 3 Credit Hours

Presents topics of current interest to computer science in a seminar environment. Includes invited lectures by experts in the field, or a review of a particular technology by a faculty member. A maximum of three hours may be counted towards graduation without prior written CS Department approval. Lab access fee of $45 for computers applies.

CS 305G
Global Social and Ethical Issues in Computing GI WE
3 Credit Hours
Prerequisite(s): ENGL 2010 and (CS 1030 or CS 1400 or INFO 1120 or DGM 1110) and University Advanced Standing

Examines how computers have affected global society and how they could further affect it in the future. Examines various ethical issues surrounding computer usage, particularly in differing societal contexts. Explores the responsibilities borne by software professionals, including how their actions can affect both society and individual people in their own and other cultural settings. Presents examples of the moral and professional issues that those who work with computers might expect to face. Lab access fee of $45 for computers applies.

CS 3060
Operating Systems Theory
3 Credit Hours
Prerequisite(s): CS 2370, CS 2420, and University Advanced Standing. If a computer science or software engineering major, also CS 2810 and matriculation to computer science or software engineering. If a computer engineering major, also ECE 2700 and ECE 3730

Introduces the Unix operating system. Presents the underlying theory and concepts of an operating system, and covers the following topics in depth: device management, processes, threads, synchronization, scheduling, deadlocks, memory management, virtual memory, and file systems. Provides practical experience in writing programs that use standard Unix system calls to interface directly with the operating system. Lab access fee of $45 for computers applies.

CS 3100
Data Privacy and Security
3 Credit Hours
Prerequisite(s): CS 2420 and University Advanced Standing

Covers the fundamental theory, concepts and practical applications of computer security. Includes networking fundamentals, cryptography, authentication and authorization, access control, malware, physical security, computing systems hardening, threat detection and response, secure code, and secure applications development. Emphasizes developing, deploying, and maintaining a secure computing infrastructure with a hands-on approach.

CS 3110
Applied Cryptography
3 Credit Hours
Prerequisite(s): CS 2300, CS 3100, and University Advanced Standing

Investigates advanced topics in cryptography. Provides an overview of the necessary background in algebra and number theory, private- and public-key cryptosystems, and basic signature schemes. Explores relevant number theory, basic Galois fields as applied to cryptography, the history of primality algorithms and the polynomial-time test of primality, discrete logarithm-based cryptosystems including those based on elliptic-curves and interactive protocols including the role of zero-knowledge proofs in the authentication.

CS 3120
Ethical Hacking Tools Dev
3 Credit Hours
Prerequisite(s): CS 3100 and University Advanced Standing

Develops the structured knowledge base needed to discover vulnerabilities and recommend solutions for tightening network security and protecting data from potential attackers. Emphasizes developing cutting-edge tools and techniques to hack vulnerable systems.

CS 3140
Network and Cloud Security
3 Credit Hours
Prerequisite(s): CS 2690, CS 3100, and University Advanced Standing

Explores standards, protocols, and implementation techniques for secure socket communication and network protocols used to develop back-end agents and services that communicate in a cloud-based environment. Includes designing and implementing secure versions of cloud-based agents and services in a potentially hostile environment. Emphasizes minimizing potential attack vectors beyond user authentication at the service level.

CS 3240
Discrete Mathematical Structures II
3 Credit Hours
Prerequisite(s): CS 2300, CS 2420, CS 2810, computer engineering major or (matriculation to computer science or software engineering), and University Advanced Standing

Presents concepts from discrete mathematics including formal languages, and automata, including Turing machines, regular expressions, grammars, and computability. Lab access fee of $45 for computers applies.

CS 3250
Java Software Development
3 Credit Hours
Prerequisite(s): CS 2420, matriculation to computer science or software engineering if computer science or software engineering major, and University Advanced Standing

Covers object-oriented, functional programming and event-driven features of the Java Programming Language using common libraries, idioms, and software design patterns and principles. Includes abstract classes, interfaces, inner classes, lambda expressions, collections, streams, modern GUIs, I/O, serialization, socket programming, concurrency and parallel multicore programming. Lab access fee of $45 for computers applies.

CS 3260
CsharpNET Software Development
3 Credit Hours
Prerequisite(s): Matriculation to computer science or software engineering and University Advanced Standing

Introduces the C# programming language and the .NET Framework. Discusses the various datatypes, built-in class in namespaces, and how to develop user defined classes and namespaces. Includes programming assignments for console, GUI, and ASP.NET applications. Lab access fee of $45 for computers applies.

CS 3270
Python Software Development
3 Credit Hours
Prerequisite(s): CS 2420 or INFO 2200, matriculation to computer science or software engineering if computer science or software engineering major, and University Advanced Standing

Covers the features of the Python programming language. Includes scripting, dynamic typing, data types (sequences, sets, mappings, files, etc.), loops, iterators, generators, functions, coroutines, classes and objects, modules, packages and scope, runtime services, data wrangling, concurrent programming, etc. Lab access fee of $45 for computers applies.

CS 3310
Analysis of Algorithms
3 Credit Hours
Prerequisite(s): Matriculation into Computer Science or Software Engineering, and University Advanced Standing

Develops and reinforces ability to write and mathematically analyze foundational computer algorithms. Includes formalizing NP-completeness, divide and conquer strategies, greedy algorithms, dynamic programming, backtracking, branch and bound, approximation algorithms and multicore parallelization. Lab access fee of $45 for computers applies.

CS 3320
Numerical Software Development
3 Credit Hours
Prerequisite(s): MATH 1210, matriculation to computer science or software engineering, and University Advanced Standing

Teaches the tools necessary for modern scientific computation. Covers computer representation of floating-point numbers, error analysis and numerical stability, IEEE floating-point standards, testing of numerical algorithms, calculation of elementary functions, roots of equations, solutions of linear systems, numerical integration and differentiation, interpolation and approximation, Monte Carlo methods. Lab access fee of $45 for computers applies. Canvas Course Mats $45/McGraw applies.

CS 3370
C Plus Plus Software Development
3 Credit Hours
Prerequisite(s): CS 2370, CS 2810, matriculation to computer science or software engineering, and University Advanced Standing

Teaches C++ programming in a production environment, emphasizing mastery of the standard C++ library. Covers the following topics in-depth: const correctness, operator overloading, exception handling, exception-safe design, programming with assertions, automated unit testing, advanced memory management, generic programming with templates, containers, iterators, algorithms, concurrency, and functional programming. Introduces library development, common idioms, and other advanced topics. Emphasizes accepted software engineering practices. Lab access fee of $45 for computers applies.

CS 3380
JavaScript Software Development
3 Credit Hours
Prerequisite(s): CS 2420, CS 2550, matriculation into the CS program, and University Advanced Standing

Covers modern JavaScript features of functional programming, not JavaScript programming limited to the browser. Topics include rest/spread operators, string interpolation, regular expressions, object property shorthand, computed properties, method properties, destructuring assignments using object and array matching, module export/import, classes & inheritance, promises, iterators, generators, map/set, reflection, localization & formatting. Introduces common idioms and design patterns. Emphasizes accepted software engineering practices. Lab access fee of $45 for computers applies.

CS 339R
Advanced Programming Language Other
3 Credit Hours
Prerequisite(s): University Advanced Standing

Introduces and explores state-of-the-art programming languages and concepts such as language-specific syntax, operational semantics, libraries, idioms, integrated development environments, and debugging techniques. Demonstrates language concepts by developing and writing programs. May only be repeated for additional credit in another computer language with prior written departmental approval. Lab access fee of $45 for computers applies.

CS 3410
Human Factors in Software Development
3 Credit Hours
Prerequisite(s): CS 2550 and University Advanced Standing

Explores the analysis, design, and implementation of User Interfaces. Delves into all aspects of the user experience while interacting with computer systems, including cognitive, social, and emotional aspects of the user experience and methodical interaction design. Teaches how to observe users, collect requirements, design user experiences, create prototypes for customers and how to evaluate the effectiveness of any user interface. Includes both individual and group work. Lab access fee of $45 for computers applies.

CS 3450
Principles and Patterns of Software Design
3 Credit Hours
Prerequisite(s): (CS 3250 or CS 3260 or CS 3270 or CS 3370) and University Advanced Standing

Gives students familiarity with modern principles and practices of software design. Emphasizes design patterns, including their motivation and the design principles on which they are based. Lab access fee of $45 for computers applies.

CS 3520
Database Theory
3 Credit Hours
Prerequisite(s): Matriculation to computer science or software engineering and University Advanced Standing

Introduces the underlying theories of Relational Database Management Systems (RDBMS) as well as their practical use retrieving data using both embedded SQL and relational algebra. Implements queries that start from simply joining, selecting, and projecting data, then progresses to more complex data retrieval techniques that require the use of set operations, sub-queries, and group by having clauses. Discusses entity-relationship (ER) modeling, creating a RDBMS from an ER model, B+ Trees, ACID transactions, normalization, locking, concurrency issues, and alternatives to an RDBMS. Lab access fee of $45 for computers applies.

CS 3530
Data Management For Data Sciences
3 Credit Hours
Prerequisite(s): CS 3520 and University Advanced Standing

Covers advanced relational databases and issues related to managing non-relational data sets. Has two major components: (1) advances knowledge in relational database and skills in using SQL and database indexing; and (2) introduces NoSQL databases such as a document-oriented database, key-value database, column-oriented database, graph database, and Hadoop system and data warehousing. Justifies the need for NoSQL databases, and shows how they are implemented in database systems. Presents criteria that decision makers should consider when choosing between relational and non-relational databases and techniques for selecting the NoSQL database that best addresses specific use cases.

CS 3540
Game Programming
3 Credit Hours
Prerequisite(s): Matriculation to computer science or software engineering and University Advanced Standing

Teaches techniques for two and three-dimensional graphics programming using DirectX, OpenGL, and/or game engines built on those libraries. Presents concepts of game design that relate to the design and implementation of game software, including procedural generation of assets. Includes application of artificial intelligence concepts to game programming. Introduces the use of network programming techniques for development of multi-player games. May be delivered hybrid. Lab access fee of $45 for computers applies.

CS 3660
Web Programming II
3 Credit Hours
Prerequisite(s): CS 2420, CS 2550, CS 3380, and University Advanced Standing

Builds upon concepts taught in CS 2550 Web Programming I. Teaches how to design, implement, test, and debug medium sized web applications using both client and server side technologies. Includes web security, data markup languages, server side scripting technologies, web application interactions with databases, and web service architectures. Teaches how to develop a full web-site having sophisticated user interactions at a variety of security levels. Lab access fee of $45 for computers applies.

CS 3670
Network Programming
3 Credit Hours
Prerequisite(s): CS 2690, CS 3250, and University Advanced Standing

Covers concept and practical application of socket communication and network protocols. Presents design and implementation of networked applications. May be delivered online. Lab access fee of $45 for computers applies.

CS 3680
Mobile Device Programming
3 Credit Hours
Prerequisite(s): Matriculation to computer science or software engineering and University Advanced Standing

Teaches software design and programming principles and practices for developing applications for mobile devices. Addresses issues such as application life-cycle, user interfaces on touch-screen devices, options for data storage and communication, power and performance, and using graphics and media. Examines hardware features common in mobile devices such as GPS, accelerometers, and cameras. Lab access fee of $45 for computers applies.

CS 3720
Database Programming
3 Credit Hours
Prerequisite(s): CS 3520 and University Advanced Standing

Develops the mastery of programming interfaces to local, remote, web and cloud databases. Uses console, Microsoft Windows WPF and web user interfaces. Lab access fee of $45 for computers applies.

CS 3800
Data Science Through Statistical Reasoning
3 Credit Hours
Prerequisite(s): ECE 3710, CS 3530, and University Advanced Standing

Develops statistical reasoning and computational skills required to clean transform data, implement solutions to complex problems, explore and visualize data, develop and test hypotheses, use simulation to investigate stochastic processes and model real-world situations of interest. Presents cases that require various statistical methods, data technologies, developing algorithms and using powerful statistical and data science tools in a modern scripting language.

CS 3810
Applied Data Science
3 Credit Hours
Prerequisite(s): CS 3100, CS 3530, and University Advanced Standing

Covers the entire life cycle of a data science project, from problem formulation to data science solutions. Starts with a data driven problem, identifying data sets needed, collecting data, selecting techniques to solve the problem, implementing algorithms and models, assessing performance, and communicating insights and recommendations through written reports and oral presentations. Features several individual projects and a semester long team project.

CS 3820
Visualization Analytics for Data Science
3 Credit Hours
Prerequisite(s): CS 3530 and University Advanced Standing

Introduces visual analytics methods and techniques to support human reasoning and decision-making with data. Presents visualization as the primary tool for recognizing and communicating the significance, meaning and decision-making from massive, dynamic, often conflicting, data. Includes both theoretical foundations and application methods, which presents a comprehensive view of this emerging, multidisciplinary field beyond simply learning to use visualization tools. Includes choosing the right visualization for the questions being asked, the data and the target audience; translating numbers to images; showing data or statistics; showing uncertainty, time trends; presenting results of machine learning techniques; many variables; big data; and maps and networks. Covers pie charts, bar charts, histograms, simple metrics, scatterplots, maps.

CS 4120
Security Vulnerability Analysis
3 Credit Hours
Prerequisite(s): CS 3100 and University Advanced Standing

Presents a methodology for attacking, assessing, analyzing, categorizing, and remediating security weaknesses in software and software systems. Develops insight into system architecture, process execution, operating systems, and error conditions that create opportunities for attack surfaces. Develops the ability to scan and exploit popular third-party applications rather than simulated lab exercises. Emphasizes writing and running working exploits and payloads.

CS 4200
Secure Computing Capstone
3 Credit Hours
Prerequisite(s): CS 3110, CS 3120, CS 3130 or CS 3140, and University Advanced Standing

Focuses on student's chosen field of the security domain. Solves a real-world computer security-related problem or dilemma. Brings all pieces of secure computing experience into a complete capstone project. Covers design, development, and deployment of all parts of the security domain.

CS 4230
Software Testing and Quality Engineering
3 Credit Hours
Prerequisite(s): CS 2450, one of (CS 3250 or CS 3260 or CS 3270 or CS 3370), ECE 3710 or STAT 2050, and University Advanced Standing

Provides a comprehensive exploration of strategies for testing software systems. Includes unit testing, system testing, developing software testing organization, and establishing software Total Quality Management (TQM) programs. Students will conduct system tests of software packages. Lab access fee of $45 for computers applies.

CS 4380
Advanced High Performance Computer Architecture
3 Credit Hours
Prerequisite(s): CS 3060, (CS 3370 Recommended), and University Advanced Standing

Presents theory and concepts of high-performance computer architectures. Includes digital logic, buses, registers, ALU's, control units, pipelining, parallelism, DASD's, SASD's, RAID, caching, instruction-sets, memory hierarchy, multiprocessing, interconnection via networks. Lab access fee of $45 for computers applies.

CS 439R
Advanced Current Topics in Computer Science
1 to 3 Credit Hours
Prerequisite(s): Department approval and University Advanced Standing

Provides exposure to emerging technologies and topics of current interest in computer science. Varies each semester depending upon the state of technology. A maximum of 6 hours may be counted toward graduation without CS Department approval. Lab access fee of $45 for computers applies.

CS 4400
Software Engineering II
3 Credit Hours
Prerequisite(s): CS 2450, CS 2600, CS 3520, and (CS 3250 or CS 3260 or CS 3270 or CS 3370), and University Advanced Standing
Prerequisite(s) or Corequisite(s): CS 3450

Covers principles and practices of early phases of software development life cycle. Studies software requirements elicitation, analysis, and design. Includes in-depth, practical study of at least one major software development approach as applied to a realistic organizational systems problem. Explores requirements definition, analysis including prototyping, functional and nonfunctional requirements specification, legacy systems, and architecture patterns. Lab access fee of $45 for computers applies.

CS 4440
Applied 3D Computer Graphics
3 Credit Hours
Prerequisite(s): CS 2420 with a C or better and (CS 3220 or CS 3250 or CS 3260 or CS 3270 or CS 3370 or CS 339R), and University Advanced Standing

Presents theory and implementation concepts of 2D and 3D computer graphics as used in areas such as computer games, movie special effects, scientific visualization and art. Focuses on the development of applications using an existing cross-platform graphics library rather than on the development of a graphics library. Lab access fee of $45 for computers applies.

CS 4450
Analysis of Programming Languages
3 Credit Hours
Prerequisite(s): CS 3240, (one of CS 3250, CS 3260, CS 3270 or CS 3370) and University Advanced Standing

Offers the mature student an in-depth understanding of the design and implementation of programming languages. Explores criteria for evaluating programming languages as a context for comparing both traditional and current popular languages. Includes the evolution of programming languages, the concept of binding, type checking, static and dynamic scoping, control structures, subprograms and parameter passing methods, and concurrency. Explores the functional programming paradigm in-depth. Includes programming assignments in at least two different programming languages, at least one of which being a functional language such as LISP, Scheme, ML, or Haskell. Lab access fee of $45 for computers applies.

CS 4470
Artificial Intelligence
3 Credit Hours
Prerequisite(s): CS 3240, CS 3310, CS 3320, and (CS 3250 or CS 3260 or CS 3270 or CS 3370), and University Advanced Standing

Presents theory, organization, concepts, and principles of artificial intelligence methodologies including neural networks, expert systems, machine learning algorithms, and genetic algorithms. Lab access fee of $45 for computers applies.

CS 4480
Digital Image Processing and Computer Vision
3 Credit Hours
Prerequisite(s): CS 2300, CS 2420, CS 3320, and University Advanced Standing

Prepares students for creating software solutions in the multimedia market of today and into the future. Covers digital sampling of analog signals, basic image processing in the spatial domain and frequency domain, edge and line detection, photo enhancement, feature extraction, and object recognition. May be delivered online. Lab access fee of $45 for computers applies.

CS 4490
Compiler Construction
3 Credit Hours
Prerequisite(s): CS 3450, CS 4380, CS 4450, and University Advanced Standing

Builds on software created in CS 4380. Presents concepts necessary to create a modern compiler. Reinforces theoretical and practical software development skills from previous courses through an immersive, expressive approach to compiler construction. Lab access fee of $45 for computers applies.

CS 4500
Advanced Topics in Database
3 Credit Hours
Prerequisite(s): (CS 3520 or INFO 3410) and University Advanced Standing

Covers transaction processing, concurrency control techniques, database recovery techniques, database security and authorization, database integrity, distributed databases and client-server architectures, load balancing, data warehousing, data mining, database machines, mobile database, multimedia database, GIS, genome data management, data fragmentation, data encryption, locking, and deadlock. Lab access fee of $45 for computers applies.

CS 4550
Software Engineering III
3 Credit Hours
Prerequisite(s): CS 4400, CS 4230, and University Advanced Standing

Senior-level, capstone project experience course. Requires operating as part of a high performance team. Includes completing the design and implementation of a large-scale software development project. Combines major milestone presentations to project clients, completing a portfolio of project-related artifacts, and offer an evaluation of the project and team experience. Requires students to take a program level assessment. Lab access fee of $45 for computers applies.

CS 4610
TCP IP Internet Architecture
3 Credit Hours
Prerequisite(s): CS 2690, matriculation to computer science or software engineering, and University Advanced Standing

Provides theoretical, practical, administrative perspectives of the TCP/IP protocol and its use with the Internet. Includes coverage of IPv4, IPv6, TCP, OSPF and related protocols, IP addressing, subnetting issues, and domain name services are also covered. Lab access fee of $45 for computers applies.

CS 4620
Data Mining
3 Credit Hours
Prerequisite(s): CS 3520 and University Advanced Standing

Introduces the process of knowledge discovery and the basic theory of automatic extracting models from data, validating those models, solving the problems of how to extract (mine) valid, useful, and previously unknown interesting patterns from a source (database or web) which contains an overwhelming amount of information. Explains various models (decision trees, association rules, linear model, clustering, bayesian network, neural network) and how to apply them in practice. Algorithms applied include searching for patterns in the data, using machine learning, and applying artificial intelligence techniques. Teaches how to implement several relevant algorithms and use existing tools to mine real-world, business driven databases. Lab access fee of $45 for computers applies.

CS 4660
NoSQL Database Development
3 Credit Hours
Prerequisite(s): Matriculation into the Computer Science or Software Engineering program, CS 3520, and University Advanced Standing

Introduces theory, concepts, architecture, and use of non-traditional database management systems. Discusses the appropriate use of each in its own niche. Lab access fee of $45 for computers applies.

CS 4670
Undergraduate Research Project for Networking Specialization
3 Credit Hours
Prerequisite(s): CS 3660, CS 4610, and University Advanced Standing

Creates a system suitable for presentation and defense including project proposal, management plan, system design documentation, relevant testing and benchmarks, and final written and oral reports. Includes system design, systems integration and systems management. Encourages open source and community service projects. Requires completion of a program level assessment test. Lab access fee of $45 for computers applies.

CS 4690
Distributed Internet Application Development
3 Credit Hours
Prerequisite(s): CS 3660 and University Advanced Standing

Provides experience building significant software solutions that span large heterogeneous networks. Includes heterogeneous operating systems, data stores (SQL and NoSQL), service architectures, remote objects, remote services, and data exchange. Lab access fee of $45 for computers applies.

CS 4700
Machine Learning I
3 Credit Hours
Prerequisite(s): CS 3270, CS 3320, and University Advanced Standing

Explores the philosophy, utility, mathematics and algorithms of machine learning in order to understand the basic concepts and issues at the heart of machine learning. Covers the implementation and use of machine learning algorithms to solve real-world problems or to pursue a graduate program. Includes feature selection and extraction, decision trees, neural networks, nearest-neighbors, support vector machines, naive Bayes classifier, clustering, ensembles, reinforcement learning and deep learning.

CS 4710
Machine Learning II
3 Credit Hours
Prerequisite(s): CS 4700 and University Advanced Standing

Applies Deep Learning models to problems in a variety of application domains that use massive data sets, such as recommender systems, novel text, image and music generation, sentiment analysis. Implements working models using algorithms such as recurrent neural nets, convolutional neural nets, deep belief nets, and deep reinforcement learning. Uses modern toolkits such as Tensorflow.

CS 4770
Software Development for Robotics
3 Credit Hours
Prerequisite(s): CS 3370 and University Advanced Standing; CS 4470 recommended

Teaches students through hands on development the intricacies of programming robots such as autonomous vehicles and/or industrial manufacturing robots. Includes behavior based programming, intelligent agents, low level device drivers, sensor calibration and processing, real time programming requirements, motion planning and navigation, and machine learning. Lab access fee of $45 for computers applies.

CS 479R
Advanced Current Topics in Computer Science
1 to 3 Credit Hours
Prerequisite(s): Department Approval and University Advanced Standing

Provides exposure to emerging technologies and topics of current interest in computer science. Varies each semester depending upon the state of technology. May be repeated for a maximum of 6 credit hours toward graduation without prior written CS Department approval. Lab access fee of $45 for computers applies.

CS 4800
Data Science Capstone
3 Credit Hours
Prerequisite(s): CS 3530 and University Advanced Standing

Solves a real-world data science problem or dilemma for an industry partner. Provides an opportunity to work in teams on a project from an industrial firm. Includes realistic industry evaluations such as teamwork, communication, individual initiative, and final product.

CS 481R
Internship
1 to 8 Credit Hours
Prerequisite(s): Matriculation to computer science or software engineering, Instructor Approval, and University Advanced Standing

Provides opportunity to use work experience to add to educational background and academic experience. A maximum of 3 credit hours may be counted towards graduation without prior written CS Department approval. May be graded credit/no credit.

CS 4880
Cloud Computing
3 Credit Hours
Prerequisite(s): Matriculation into the Computer Science or Software Engineering program, CS 4690, and University Advanced Standing

Develops mastery of programming to cloud databases. Emphasizes real-world scenarios involving architecture, build, development, testing, and deployment on commercially available cloud databases. Covers concurrent programming, distributed programming, microservices, migration, and hybrid clouds. Lab access fee of $45 for computers applies.

CS 489R
Undergraduate Research Project
2 to 6 Credit Hours
Prerequisite(s): Department approval and University Advanced Standing

Combines and integrates concepts, methodologies, and skills developed in previous Computer Science course work. Studies the specification, analysis, design, implementation, and completion of a complex and comprehensive project. Requires a project/portfolio using project management techniques. A maximum of 3 hours may be counted towards graduation without prior written Computer Science Department approval. Lab access fee of $45 for computers applies.

CS 4900
Full Stack Web Senior Capstone
3 Credit Hours
Prerequisite(s): CS 3410, CS 4660, CS 4690, and University Advanced Standing

Brings all pieces of full stack web development into a complete capstone project. Covers design, development and deployment of all parts of a web application. Lab access fee of $45 for computers applies.

CS 491R
Independent Study
1 to 6 Credit Hours
Prerequisite(s): Prior written Department Chair approval and University Advanced Standing

Offers independent study as directed by a faculty advisor in reading, individual projects, etc. Varies each semester depending upon the state of technology. A maximum of 3 credit hours may be counted towards graduation without prior written Department approval. Lab access fee of $45 for computers applies.

CS 496R
Senior Seminar
1 to 3 Credit Hours
Prerequisite(s): University Advanced Standing

Presents current state-of-the-art and/or best-practices topics in a seminar format. A maximum of 3 credits will count towards graduation. Lab access fee of $45 for computers applies.

CS 6100
Database Management System Construction
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science Program or Graduate Certificate in Artificial Intelligence Program

Explores issues associated with implementing a DBMS. Provides experience designing and implementing a relational DBMS with features such as projection, select and join, indexing, B+ trees, and parsing. Examines database performance and implements query optimization.

CS 6150
Advanced Algorithms
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program.

Explores applications and tradeoffs of state of the art algorithms in parallel/concurrent programming, data search, graphics, graph theory, data structures, mathematical programming, machine reasoning, machine learning, network flow, and other domains. Applies both theory and practice to various projects with a focus on concurrent/parallel programming.

CS 6200
Cyberphysical Security
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Studies the principles, practices and algorithms related to securing computers and other network-visible devices. Analyzes the problems of security associated with computers and cyberphysical systems. Identifies threats, attacks, and actors. Applies cryptography and other techniques to address those problems.

CS 6300
Software Engineering Leadership
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Prepares students to be software project leaders. Evaluates modern software processes and project management. Identifies important roles in software projects and their contribution to project success. Explores interaction of business needs and project development.

CS 6400
Modern Databases
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science Program or Graduate Certificate in Artificial Intelligence Program

Evaluates recent trends in database technology, including the history of NoSQL, NoSQL aggregate data, distribution models, and NoSQL consistency. Teaches data analysis and machine learning by exploring concepts associated with processing massive data sets such as parallel data analysis through mapReduce and other algorithms. Explores technologies associated with modern databases management systems, such as in-memory databases, cloud database management systems.

CS 6460
Artificial Intelligence
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Presents foundational AI algorithms. Explores state space search, local search, adversarial search, constraint satisfaction problems, logic and reasoning, expert systems, Markov Models, Bayesian networks, particle filters, planning, reinforcement learning, and multilayer perceptrons. Studies practical implementations of AI algorithms.

CS 6470
Machine Learning
3 Credit Hours
Prerequisite(s): Prerequisite(s):Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Explores the theory and algorithms, concepts and issues of machine learning. Topics include feature selection, neural networks, decision trees, K-nearest neighbor, clustering, reinforcement learning, genetic algorithms, deep learning and data mining. Implements machine learning approaches in real-world applications.

CS 6480
Advanced Machine Learning
3 Credit Hours
Prerequisite(s): CS 6470 and Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Presents advanced models, algorithms, approaches and applications in neural networks and machine learning. Broadens and deepens the horizons of study of the philosophy and utility of machine learning models beyond what is covered in Machine Learning. Includes advanced gradient descent models, bayesian methods, boltzmann machines, recurrent neural nets, hidden markov models, randomized optimization, hopfield nets, computer vision, modern toolkits, learning from gigantic data.

CS 6500
Software Architecture
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Evaluates software architecture and the high level design of large scale software systems. Explores common architectural styles and patterns. Teaches techniques of documenting and assessing software architectures. Teaches characteristics of software architecture evolution. Evaluates several large-scale software architectures.

CS 6510
Design and Simulation of Operating Systems
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Analyzes current topics in operating systems design and simulation. Covers modern computer architecture; several types of memory management; current scheduling algorithms for multiple processes; disk management; virtual memory and interprocess communication.

CS 6600
Graduate Project I
3 Credit Hours
Prerequisite(s): CS 6300, CS 6510, CS 6400

Teaches the design and development of a walking skeleton with students participating in all aspects of software development, including: requirements elicitation, architecture, design, implementation, testing, and deployment. First semester of a two-semester capstone course.

CS 6610
Graduate Project II
3 Credit Hours
Prerequisite(s): CS 6600

Guides through completion and delivery of the large-scale system started in CS 6600. Delivers appropriate system documentation. Teaches the writing and execution of system tests that ensure a high quality system. Must be taken immediately after CS 6600.

CS 6620
Advanced Data Mining and Visualization
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Explores advanced concepts of data mining and knowledge discovery including sequence mining, audio video mining, and text mining. Analyzes, designs, develops, and evaluates data mining techniques and tools, including data preprocessing, data characterization and comparison, decision trees, association rule mining in large databases, classification and prediction. Uses clustering and cluster analysis and statistical modeling, advanced methods and applications, extracting meaningful patterns from massive datasets using methods such as neural networks and machine learning algorithms.

CS 6700
Advanced Mathematics for Computer Science
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Solves computer science problems using advanced mathematical models. Applies calculus functions of multiple variables, linear equations, matrix algebra, determinants, Gaussian elimination, eigenvalues, linear programming, and finite-state Markov chains.

CS 6730
Advanced Embedded Systems Engineering
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Provides a hands-on design experience of software design at the system layer where hardware meets software. Explores embedded computing platforms, interacting with the external world, real-time operation, constraints and optimization, and other techniques which are important for building embedded systems that work in the real world. Applies design/implementation/debugging of embedded functionality through a series of projects and homework exercises.

CS 6800
Computer Graphics and Mixed Realities
3 Credit Hours
Prerequisite(s): Acceptance into the Master of Computer Science program or Graduate Certificate in Artificial Intelligence program

Introduces computer graphics beyond 2D and 3D graphics into mixed reality, where virtual objects interact with the real world. Explores topics such as 2D/3D graphics, augmented reality, virtual reality, immersive visualization, the use of graphics/physics engines, and 3D printing.