Computer Science

Courses

CMP SCI 1000 Computer Science Experiences: 1 semester hour

This course is for recently declared undergraduate students majoring in Computer Science or Computing Technology. Topics may include resources that are available on campus and in the department, career opportunities, choosing the right degree, and exploration of concepts, skills and practices that are essential for successful careers. This course should be taken by freshmen and transfers within the first two semesters of declaring the major.

CMP SCI 1250 Introduction to Computing: 3 semester hours

Prerequisites: MATH 1030 with a B- or better, or MATH 1045 with B- or better, or MATH 1100 (can be taken concurrently), or MATH 1800 (can be taken concurrently), or a 70% on the proctored UMSL Math Placement obtained at most one year prior to enrollment in this course. This course provides an introduction to the concepts of computation, problem solving, and computer systems. It covers topics such as, fundamental programming constructs, basic data types, and modularization using a modern high level language. Problem solving skills are developed through a progression of programming projects.

CMP SCI 2250 Programming and Data Structures: 3 semester hours

Prerequisite: CMP SCI 1250. This course covers properties, implementation, and use of abstract data types such as lists, trees, stacks, and queues. It also covers procedural and data abstraction, use of interfaces, file processing, and basic algorithms for sorting and searching.

CMP SCI 2261 Object-Oriented Programming: 3 semester hours

Prerequisites: CMP SCI 2250 (may be taken concurrently). This course introduces object-oriented concepts, terminology, and notation (UML) using Java. It also covers encapsulation, classes, objects, inheritance, and the use of class libraries. Additional topics may include graphical user interfaces, applets, and related tools and technologies.

CMP SCI 2700 Computer Organization and Architecture: 3 semester hours

Prerequisites: CMP SCI 2250 (may be taken concurrently). This course introduces details of computer systems from architectural and organizational points of view. It covers data representation, basic digital logic circuits, memory types and hierarchies, I/O and storage devices, CPU architectures such as RISC, CISC, parallel, and multi-core.

CMP SCI 2750 Linux Environment and Programming: 3 semester hours

Prerequisites: CMP SCI 2250 and CMP SCI 2700 (CMP SCI 2700 may be taken concurrently). This course introduces Linux Operating System and focuses on command-line interactions, the file system, and shell scripting. Additional topics may include source control, symbolic debugging, and system programming in C.

CMP SCI 2890 Introductory Topics in Computer Technology: 1-3 semester hours

Prerequisites: CMP SCI 1250 or students who have taken another introduction to programming may enroll with consent of instructor. This course covers an introductory topic in computer technology relevant to the field and the interests of the instructor. This course may be taken for credit more than once so long as the topic discussed is different.

CMP SCI 3010 Web Full Stack Development: 3 semester hours

Prerequisites: CMP SCI 2250 (may be taken concurrently) or students with familiarity with basic data structures may enroll with consent of instructor. This course provides an overview of website development focusing on development tools along with modern frameworks and libraries. Development tools include Git, GitLab, and Docker. Students will create well-structured, easily maintained, standards-compliant, accessible JavaScript code. Client-side JavaScript libraries may include React and Redux. Server-side JavaScript frameworks include Node with Express. Client-server computing projects are a course requirement. Upon successful completion of the course students will understand how client-side code, server-side code, web servers, and databases function together.

CMP SCI 3130 Design and Analysis of Algorithms: 3 semester hours

Prerequisites: CMP SCI 2250, MATH 1320, and MATH 3000. This course addresses the design and analysis of fundamental algorithms in computer science. Studies basic sorting algorithms, priority queues, order statistics, search trees, and hash tables. Analysis techniques may involve time and space complexity analysis of both iterative and recursive algorithms, analysis of algorithm correctness, and amortized complexity analysis. Additional topics may include data compression, string manipulation, greedy algorithms, dynamic programming, and graph traversal.

CMP SCI 3200 .NET Framework: 3 semester hours

Prerequisites: CMP SCI 3010. This course introduces the .NET framework and related languages and technologies. Topics will include Visual Studio and C# for OOP and web applications. Additional topics may include ASP.NET with MVC, data access, and windows communication.

CMP SCI 3410 Video Game Design and Development: 3 semester hours

Prerequisites: CMP SCI 2261. This course covers major aspects of the design and development of video games, including world/level design, game UI design, game character design, game engine programming, 2D/3D modeling and rendering, game physics and animation. This is a project-based course in which students learn to apply acquired knowledge and skills to building a video game in a team environment.

CMP SCI 3411 Introduction to Data Visualization: 3 semester hours

Prerequisites: CMP SCI 1250. This course introduces students to the principles of effective data visualization. The course includes an introduction to data cleaning and analysis. Plotting tools such as Tableau, Matplotlib, and D3.js are also introduced. Topics covered may include graphical excellence, log scale, color, heat maps, network visualization, plotting scientific data, interactive plots, and plotting live stream of data. Credit cannot be granted for both CMP SCI 3411 and CMP SCI 5411.

CMP SCI 3702 Introduction to Cyber Threats and Defense: 3 semester hours

Prerequisites: CMP SCI 2250. This course introduces the importance of cybersecurity and covers its various components. Topics may include different types of malware, phishing, password attacks, spoofing, efficient encryption algorithms, firewalls, intrusion prevention/detection systems, and honeypots. Credit cannot be granted for both CMP SCI 3702 and CMP SCI 5702.

CMP SCI 3780 Software Security: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750, and CMP SCI 3010. This course introduces the basic software security principles and pitfalls, including topics such as buffer, integer and string problems, runtime errors, SQL and command injection. Additional topics may include data protection, secure file access, password and network security.

CMP SCI 3990 Undergraduate Internship: 1-3 semester hours

Prerequisites: Consent of instructor. This course is a computer science internship that provides a student field experience in an organization related to the profession. To be enrolled, students must be employed in an internship or co-op program and find an instructor to supervise the experience. Internship activities may vary by site, but will often require end-of-semester reporting. Typically 1 credit can be earned for about 100 work hours. A maximum of 3 credit hours of CMP SCI 3990 can be counted as major electives and a maximum of 6 credit hours of CMP SCI 3990 and CMP SCI 4880 combined can be counted as major electives.

CMP SCI 4010 Web Development with Java: 3 semester hours

Prerequisites: CMP SCI 3010 and either CMP SCI 2261 or INFSYS 3806; or graduate standing. This course covers fundamental topics of Java EE technology. Topics start with servlets and JSP. Additional topics may include JDBC, expression language, JSTL, security, Maven, Hibernate ORM framework, MVC pattern, REST web services, testing and source control for Java web applications.

CMP SCI 4011 Web Development with Advanced JavaScript: 3 semester hours

Prerequisites: CMP SCI 3010. This course provides a comprehensive overview of website development using the modern MEAN (MongoDB, Express.js, Angular, Node.js) stack architecture. Students will create web applications that make use of today's modern JavaScript engine. Other topics may include React, Sass (Syntactically awesome style sheets), and Pug template engine.

CMP SCI 4012 Introduction to Enterprise Microservice Development: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 3010. This is a hands-on course providing students with an understanding of microservices and related technologies, with enough scope and depth to make the students ready to participate in real-world microservice application developments. Emphasis is placed on practical and effective knowledge and an in-depth technical learning experience suitable for any developer. The target audience is students who want to be involved in microservice application development. Credit cannot be earned for both CMP SCI 4012 and CMP SCI 5012.

CMP SCI 4020 Introduction to Android Apps: Android Fundamentals: 3 semester hours

Prerequisite: CMP SCI 2261. This course covers the fundamental programming principles, software architecture, and user experience considerations underlying handheld software applications and their development environments. The course involves in-depth, hands-on examples that are implemented on the Android Platform, along with discussions of security. Credit can not be granted for both CMP SCI 4020 and CMP SCI 5020.

CMP SCI 4030 Introduction to Intelligent Web: 3 semester hours

Prerequisites: CMP SCI 3010 and CMP SCI 3130. This course covers the application of artificial intelligence and other modern techniques to help construct, navigate, and experience the Web. Topics may include retrieval models, classification, mining, association, topology, and indexing algorithms such as PageRank and HITS. Credit cannot be earned for both CMP SCI 4030 and CMP SCI 5030.

CMP SCI 4151 Introduction to Statistical Methods for Data Science: 3 semester hours

Prerequisites: CMP SCI 1250, MATH 1900, and an introductory statistics course (ANTHRO 3220/SOC 3220, BIOL 4122, CRIMIN 2220, ECON 3100, MATH 1320, POL SCI 3000, or PSYCH 2201). This course covers statistical inference with emphasis on applications and computer simulation. Topics may include multivariate distributions, transformations and combinations of random variables, sampling distributions, maximum likelihood, bootstrap, order statistics, hypothesis testing, likelihood ratio tests, Monte Carlo methods, Bayesian inference, and sufficient statistics. Students may not receive credit for both CMP SCI 4151 and CMP SCI 5151.

CMP SCI 4200 Python for Scientific Computing and Data Science: 3 semester hours

Prerequisites: CMP SCI 1250 and (MATH 1100 or MATH 1800) and (ANTHRO 3220/SOC 3220 or BIOL 4122 or CRIMIN 2220 or ECON 3100 or MATH 1320 or POL SCI 3000 or PSYCH 2201) or graduate standing in computer science. This course covers programming using the Python language and related libraries. The course explores problem solving using Python's support of procedural, object-oriented, and functional approaches to programming. Topics may include NumPy arrays, visualization, Pandas DataFrames, and selected functions from statistical and scientific packages.

CMP SCI 4220 Introduction to iOS Programming and Apps: 3 semester hours

Prerequisites: CMP SCI 2261 or INFSYS 3806 or graduate standing. This course will use Swift for building iOS apps. It also introduces Xcode, Interface Builder, basic design patterns like MVC and delegation, and core libraries for Swift and iOS. Additional topics may include network communication, data persistence, basic animation, and mapping. This is a project-oriented class that will require significant use of a Mac with Xcode installed.

CMP SCI 4222 iOS Apps: 3 semester hours

Prerequisites: CMP SCI 4220 or consent of the instructor. This course focuses on building more sophisticated iOS apps. May include networking such as web services, Bluetooth and wifi connectivity, graphics and animation in 2-d and 3-d, autolayouts, OpenGL, advanced data sources such as plist and core data, source control and unit testing. May also discuss security topics. Credit not granted for both CMP SCI 4222 and CMP SCI 5222.

CMP SCI 4250 Programming Languages: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 3010, or graduate standing. This course studies the principles, approaches, and trade-offs in modern programming languages, including a comparative study of syntax, semantics, and pragmatics. It also examines major programming paradigms: object-oriented, imperative, functional and logic.

CMP SCI 4280 Program Translation Project: 3 semester hours

Prerequisites: CMP SCI 2700, CMP SCI 2750, CMP SCI 3130, and CMP SCI 4250, or graduate standing. This course uses program translation as an example of a complex task, and focuses on managing and developing solutions for such complex programming tasks using modular incremental development and testing while applying proper standards. Translation topics may include finite automata, BNF, language semantics, and various translation models.

CMP SCI 4300 Introduction to Artificial Intelligence: 3 semester hours

Prerequisites: CMP SCI 3130. This course provides an introduction to artificial intelligence. The list of topics may include search, planning, knowledge-based reasoning, probabilistic inference, machine learning, natural language processing, and practical applications. Credit cannot be granted for both CMP SCI 4300 and CMP SCI 5300.

CMP SCI 4320 Introduction to Evolutionary Computation: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 2750 and CMP SCI 3130. This course introduces the concepts of nature-inspired problem solving with artificial evolution using selection, crossover, mutation and inheritance. It discusses applications of evolutionary algorithms, overviews the existing models and instances, and analyzes specific instances such as genetic algorithms, evolutionary programming, evolution strategies, and genetic programming. Credit not granted for both CMP SCI 4320 and CMP SCI 5320.

CMP SCI 4340 Introduction to Machine Learning: 3 semester hours

Prerequisites: CMP SCI 4342, or CMP SCI 2261 and CMP SCI 3130, or consent of instructor. This course provides an introduction to machine learning principles, algorithms and applications. Topics may include computational learning theory, VC Dimension, generalization, classification, regression, regularization, validation, and reinforcement learning. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.

CMP SCI 4342 Introduction to Data Mining: 3 semester hours

Prerequisites: CMP SCI 2261 and CMP SCI 3130, or CMP SCI 4200, or consent of the instructor. This course provides an introduction to data mining principles, algorithms, and applications. Topics may include data preprocessing, data transformation, similarity and dissimilarity measures, data representation, classification techniques, association analysis, cluster analysis, and anomaly detection. Credit cannot be granted for both CMP SCI 4342 and CMP SCI 5342.

CMP SCI 4370 Introduction to Biological Data Science: 3 semester hours

Prerequisites: CMP SCI 3130 or consent of instructor. This course provides an introduction into several key areas of biological data science, with a focus upon genetic data. Relevant background topics in genetics, current issues, and a variety of available resources will be explored. Upon successful completion of this course, the student will be able to evaluate algorithms for analyzing genetic data, including assessments of sources of errors and analysis of time and space complexity; address shortcomings in existing approaches; and implement efficient and effective software for exposing information hidden in genetic data. Credit cannot be granted for both CMP SCI 4370 and CMP SCI 5370.

CMP SCI 4390 Introduction to Deep Learning: 3 semester hours

Prerequisites: CMP SCI 3130 or consent of instructor. This course introduces mathematical foundations for deep learning, and follows with practical applications using selected domains such as image classification or protein predictions. It also covers dense neural networks, convolutional neural networks, recurrent neural networks, and other state-of-the-art networks. Credit cannot be granted for both CMP SCI 4390 and CMP SCI 5390.

CMP SCI 4410 Introduction to Computer Graphics: 3 semester hours

Prerequisites: CMP SCI 2250 and MATH 2450. This course covers the theoretical foundation and algorithms for computer graphics. Students learn the basics of graphics programming for modeling, rendering, and animation of 2D and 3D objects, using standard graphics API. A brief discussion of special graphics hardware, such as GPU, may be included. Credit cannot be granted for both CMP SCI 4410 and CMP SCI 5410.

CMP SCI 4420 Introduction to Digital Image Processing and Computer Vision: 3 semester hours

Prerequisites: MATH 1900, MATH 2450, CMP SCI 2750, and CMP SCI 3130. This course focuses on image analysis and visual perception. Students learn data structures and algorithms for image processing, region and texture analysis, image filtering, edge detection, contour following, and image enhancement in both spatial and frequency domain. Other topics may include color processing, coding for storage, retrieval, transmission, and image restoration. Credit cannot be granted for both CMP SCI 4420 and CMP SCI 5420.

CMP SCI 4500 Introduction to the Software Profession: 3 semester hours

Prerequisites: CMP SCI 2261, CMP SCI 3010, and MATH 3000. This course focuses on software development and on the skills required for success in the software profession. Topics related to software development may include software process, models and views, software architectures, documentation, and testing strategies. Topics related to the profession may include ethics, licensing, copyright, trademarks, and professional conduct. Individual and group projects, research, and presentations may be required in this capstone course.

CMP SCI 4610 Database Management Systems: 3 semester hours

Prerequisites: CMP SCI 3010 and MATH 3000; or graduate standing. This course focuses on database theory and applications, with emphasis on the relational model. Topics include database design, modeling, file systems, indexing, integrity constraints, relational algebra, normalization, transaction processing, and concurrency control. Students are exposed to emerging DBMS technologies and applications. Several programming projects will be required using a popular SQL server.

CMP SCI 4700 Computer Forensics: 3 semester hours

Prerequisites: CMP SCI 2750 or graduate standing. This course explores topics and methodologies for examining digital evidence, along with some principles of the investigative process. Topics may include memory, file system, operating system, network, and mobile device forensics. This course addresses both theory and hands-on aspects for conducting digital forensic examinations.

CMP SCI 4730 Computer Networks and Communications: 3 semester hours

Prerequisites: CMP SCI 2750 and MATH 1320, or graduate standing. The course provides an understanding of computer network fundamentals, design, management and security through the layered Internet architecture and the TCP/IP protocol stack. The topics may include common networking techniques and protocols, as well as more advanced concepts like cloud computing, software-defined networks, and virtual network functions.

CMP SCI 4732 Introduction to Cryptography for Computer Security: 3 semester hours

Prerequisites: MATH 1100 or MATH 1800 or consent of instructor. This course provides an introduction to cryptography as it applies to computer security. It describes modern cryptographic systems and potential attacks on against these systems. Topics may include both symmetric and asymmetric encryption algorithms, authentication, key exchange protocols, onion networks and blockchain technology, as well as potential attacks on these systems. Credit cannot be granted for more than one of CMP SCI 4732, CMP SCI 4780, and CMP SCI 5732.

CMP SCI 4750 Introduction to Cloud Computing: 3 semester hours

Prerequisites: CMP SCI 2750. This course provides an introduction to development and deployment of applications in the cloud space. Touches on different aspects of cloud computing such as IaaS, PaaS, and SaaS. Includes significant discussion on legal and security aspects of clouds in the marketplace. May also include public, private, and hybrid clouds, and Internet of Things. Credit not granted for both CMP SCI 4750 and CMP SCI 5750.

CMP SCI 4760 Operating Systems: 3 semester hours

Prerequisites: CMP SCI 2750 and CMP SCI 3130; or graduate standing. This course covers the structure of a generic operating system, considering in detail the algorithms for interprocess communication, process scheduling, resource management, memory management, file systems, and device management. It presents examples from contemporary operating systems and requires practical projects implemented within a modern operating system or simulator environment.

CMP SCI 4782 Information Security: 3 semester hours

Prerequisites: CMP SCI 2750 and, CMP SCI 3702 or INFSYS 3848, or consent of instructor. This course provides an overview of the cybersecurity profession and the various domains associated with it. Students will be introduced to various information risk management concepts and how it is interconnected to cybersecurity. A broad range of cybersecurity domains will be discussed along with practical applications of information risk management. Additional topics may include labs in select cybersecurity domains. Credit can not be granted for both CMP SCI 4782 and CMP SCI 5782.

CMP SCI 4792 Introduction to Mobile Computing, Networking, and Security: 3 semester hours

Prerequisites: CMP SCI 2750 and, CMP SCI 3702 OR INFSYS 3848, or consent of instructor. This course introduces fundamental concepts of mobile wireless networks, mobile edge computing, and security measures at the edge. It discusses challenges related to mobile edge computing systems in general and may include topics such as crowdsourcing/crowdsensing systems, Quality of Experience (QoE) in real-time mobile services, Internet of Things, scalability, secure and verifiable computing, and vehicular and autonomous driving networks. Credit not granted for both CMP SCI 4792 and CMP SCI 5792.

CMP SCI 4794 Introduction to Internet of Things: 3 semester hours

Prerequisites: CMP SCI 4730 or consent of instructor. This course covers the cutting-edge techniques on the emerging edge cloud and wireless/mobile Internet of Things (IoT) systems. It covers the IoT reference architecture, integrated IoT security architecture, major threats and vulnerabilities with the IoT devices and edge cloud, and defense mechanisms. It includes hands-on labs on both the vulnerabilities and defense of the systems. Credit cannot be granted for both CMP SCI 4794 and CMP SCI 5794.

CMP SCI 4880 Individual Studies in Computer Science: 1-3 semester hours

Prerequisites: Consent of instructor. This course allows a student to pursue individual studies under the supervision of a faculty member. Topics may include learning new technology, software development, or participation in research activities. Students must arrangements for an instructor to supervise their work. A maximum of 6 credit hours of CMP SCI 3990 and CMP SCI 4880 combined can be counted as major electives.

CMP SCI 4890 Topics in Computer Science: 1-3 semester hours

Prerequisites: Consent of instructor. This course covers a special topic in computer science to be determined by recent developments in the field and the interests of the instructor. This course may be taken for credit more than once so long as the topic discussed in each semester is different.

CMP SCI 5012 Enterprise Microservice Development: 3 semester hours

Prerequisites: Graduate standing. This is a hands-on course providing students with an understanding of microservices and related technologies, with enough scope and depth to make the students ready to participate in real-world microservice application developments. Emphasis is placed on practical and effective knowledge and an in-depth technical learning experience suitable for any developer. The target audience is students with familiarity with full stack, Java and JavaScript who want to be involved in microservice application development. Students may not receive credit for both CMP SCI 4012 and CMP SCI 5012.

CMP SCI 5020 Android Apps: Android Fundamentals: 3 semester hours

Prerequisite: Graduate standing. This course covers fundamental programming principles, including software architecture and user experience considerations, which underlie handheld software applications and their development environments. The course involves in-depth, hands-on examples that are implemented on the Android Platform, along with discussions of security. Credit is not granted for both CMP SCI 4020 and CMP SCI 5020.

CMP SCI 5030 Intelligent Web: 3 semester hours

Prerequisite: Graduate standing. This course covers the application of artificial intelligence and other modern techniques to help construct, navigate, and experience the Web. Topics may include retrieval models, classification, mining, association, topology, and indexing algorithms such as PageRank and HITS. Credit cannot be earned for both CMP SCI 4030 and CMP SCI 5030.

CMP SCI 5130 Advanced Data Structures and Algorithms: 3 semester hours

Prerequisites: Graduate standing in Computer Science. This course covers the design of efficient data structures and algorithms, as well as an advanced analysis of the time and space complexities of iterative and recursive algorithms. Student will learn a variety of techniques including dynamic programming, greedy algorithms, various graph algorithms, and NP-completeness and approximation algorithms.

CMP SCI 5151 Statistical Methods for Data Science: 3 semester hours

Prerequisites: Graduate standing in Computer Science/Cybersecurity (Computer Science option) or, for non-Computer Science graduate students, consent of the instructor. This course covers statistical inference with emphasis on applications and computer simulation. Topics may include multivariate distributions, transformations and combinations of random variables, sampling distributions, maximum likelihood, bootstrap, order statistics, hypothesis testing, likelihood ratio tests, Monte Carlo methods, Bayesian inference, and sufficient statistics. Students may not receive credit for both CMP SCI 4151 and CMP SCI 5151.

CMP SCI 5222 Advanced iOS Apps: 3 semester hours

Prerequisites: CMP SCI 4220 or consent of instructor. Focuses on building sophisticated apps using iOS. Will cover recent developments in networking such as web services, Bluetooth and wifi connectivity, graphics and animation in 2-d and 3-d, autolayouts, OpenGL, advanced data sources such as plist and core data, source control and unit testing. May also discuss security topics. Credit not granted for both CMP SCI 4222 and CMP SCI 5222.

CMP SCI 5300 Artificial Intelligence: 3 semester hours

Prerequisites: Graduate standing. This course provides an introduction to artificial intelligence. The list of topics may include search, planning, knowledge-based reasoning, probabilistic inference, machine learning, natural language processing, and practical applications. Credit cannot be granted for both CMP SCI 4300 and CMP SCI 5300.

CMP SCI 5320 Evolutionary Computation: 3 semester hours

Prerequisites: Graduate standing in Computer Science. This course introduces the concepts of nature-inspired problem solving with artificial evolution using selection, crossover, mutation and inheritance. It discusses applications of evolutionary algorithms, overviews the existing models and instances, and analyzes specific instances such as genetic algorithms, evolutionary programming, evolution strategies, and genetic programming. Credit not granted for both CMP SCI 4320 and CMP SCI 5320.

CMP SCI 5340 Machine Learning: 3 semester hours

Prerequisites: Graduate standing in Computer Science/Cybersecurity (Computer Science option) or CMP SCI 4342 or CMP SCI 5342 or consent of the instructor. This course provides an introduction to machine learning principles, algorithms and applications. Topics may include computational learning theory, VC dimensions, generalization, classification, regression, regularization, validation, and reinforcement learning. Credit cannot be granted for both CMP SCI 4340 and CMP SCI 5340.

CMP SCI 5342 Data Mining: 3 semester hours

Prerequisites: Graduate standing in Computer Science/Cybersecurity (Computer Science option) or consent of the instructor. This course provides an introduction to data-mining principles, algorithms, and applications. Topics may include data preprocessing, data transformation, similarity and dissimilarity measures, data representation, classification techniques, association analysis, cluster analysis, and anomaly detection. Credit cannot be granted for both CMP SCI 4342 and CMP SCI 5342.

CMP SCI 5370 Biological Data Science: 3 semester hours

Prerequisites: Graduate standing in Computer Science or consent of instructor. This course provides an introduction into several key areas of biological data science, with a focus upon genetic data. Relevant background topics in genetics, current issues, and a variety of available resources will be explored. Upon successful completion of this course, the student will be able to evaluate algorithms for analyzing genetic data, including assessments of sources of errors and analysis of time and space complexity; address shortcomings in existing approaches; and implement efficient and effective software for exposing information hidden in genetic data. Credit cannot be granted for both CMP SCI 4370 and CMP SCI 5370.

CMP SCI 5390 Deep Learning: 3 semester hours

Prerequisites: Graduate standing in Computer Science. This course reviews a typical machine learning recipe, mathematical foundations for deep learning, and provides an introduction to deep learning. Topics include dense neural networks, convolutional neural networks, and recurrent neural networks. The course will cover building, training, and using deep neural networks for solving various machine learning problems like image classification and protein contact prediction. Credit cannot be granted for both CMP SCI 4390 and CMP SCI 5390.

CMP SCI 5410 Computer Graphics: 3 semester hours

Prerequisites: Graduate standing in Computer Science. This course covers the theoretical foundation and algorithms of computer graphics. Students learn the basics of graphics programming for modeling, rendering, and animation of 2D and 3D objects, using standard graphics API. A brief discussion of special graphics hardware, such as GPU, may be included. Credit cannot be granted for both CMP SCI 4410 and CMP SCI 5410.

CMP SCI 5411 Data Visualization: 3 semester hours

Prerequisites: Graduate standing. This course introduces students to the principles of effective data visualization. The course includes an introduction to data cleaning and analysis. Plotting tools such as Tableau, Matplotlib, and D3.js are also introduced. Topics covered may include graphical excellence, log scale, color, heat maps, network visualization, plotting scientific data, interactive plots, and plotting live stream of data. Students may not receive credit for both CMP SCI 3411 and CMP SCI 5411.

CMP SCI 5420 Digital Image Processing and Computer Vision: 3 semester hours

Prerequisites: Graduate standing in Computer Science. This course focuses on image analysis and visual perception. Students will learn data structures and algorithms for image processing, region and texture analysis, image filtering, edge detection, contour following, and image enhancement in both spatial and frequency domain. Other topics may include color processing, coding for storage, retrieval, transmission, and image restoration. Credit cannot be granted for both CMP SCI 4420 and CMP SCI 5420.

CMP SCI 5500 Software Engineering: 3 semester hours

Prerequisite: Graduate standing. Introduces software engineering as a discipline, discusses stages of the software life cycle, compares development models such as waterfall, prototyping and incremental/iterative, covers requirements analysis, effort and cost estimation, compares structured and object-oriented analysis and design methods. Discusses verification/validation, quality assurance, software reliability, testing methods, maintenance, documentation, project management and team structure, metrics, and available tools.

CMP SCI 5700 Computer Systems: 3 semester hours

Prerequisite: Graduate standing in Computer Science. This course focuses on parallel computing architectures, including RISC, pipelining, vector processing, SIMD, MIMD, and array processing. It introduces different memory and I/O subsystems, hardware description languages, and it demonstrates performance enhancement using different architectures studied.

CMP SCI 5702 Cyber Threats and Defense: 3 semester hours

Prerequisites: Graduate standing. This course introduces the importance of cybersecurity and covers its various components. Topics may include different types of malware, phishing, password attacks, spoofing, efficient encryption algorithms, firewalls, intrusion prevention/detection systems, and honeypots. Credit cannot be granted for both CMP SCI 3702 and CMP SCI 5702.

CMP SCI 5710 Modern Computing: 3 semester hours

Prerequisites: Graduate standing. This course covers technical concepts and tools in a modern computing environment such as file systems, command-line operations and productivity tools, communication with servers, software installation and deployment, basic data representation and computer organization/memory layers, virtualization and cloud.

CMP SCI 5732 Cryptography for Computer Security: 3 semester hours

Prerequisites: Graduate standing. This course provides an introduction to cryptography as it applies to computer security. It describes cryptographic code-making and code-breaking, and how they are integrated within larger security systems. Topics include symmetric encryption algorithms like AES, asymmetric encryption using prime number factorization and elliptic curves, message authentication codes, key exchange protocols and attacks on all these systems. Additional topics may include onion networks and blockchain technology, as well as possible attacks on those systems. Credit cannot be grant for more than one of CMP SCI 4732, CMP SCI 4780, and CMP SCI 5732.

CMP SCI 5750 Cloud Computing: 3 semester hours

Prerequisites: Graduate standing. Provides an introduction to development and deployment of applications in the cloud space. Touches on different aspects of cloud computing such as IaaS, PaaS, and SaaS. Includes significant discussion on legal and security aspects of clouds in the marketplace. May also include public, private, and hybrid clouds, and Internet of Things. Credit not granted for both CMP SCI 4750 and CMP SCI 5750.

CMP SCI 5782 Advanced Information Security: 3 semester hours

Prerequisites: CMP SCI 5702 or INFSYS 6828 or consent of instructor. This course provides an overview of the cybersecurity profession and the various domains associated with it. Students will be introduced to various information risk management concepts and how they are interconnected to cybersecurity. A broad range of cybersecurity domains will be discussed along with their practical applications in information risk management. Additional topics may include labs in select cybersecurity domains to further the learning process. Credit cannot be granted for both CMP SCI 4782 and CMP SCI 5782.

CMP SCI 5792 Mobile Computing, Networking, and Security: 3 semester hours

Prerequisites: CMP SCI 5702 or INFSYS 6828 or consent of instructor. This course introduces fundamental concepts of mobile wireless networks, mobile edge computing, and security measures at the edge. It discusses challenges related to mobile edge computing systems in general and may include topics such as crowdsourcing/crowdsensing systems, Quality of Experience (QoE) in real-time mobile services, Internet of Things, scalability, secure and verifiable computing, and vehicular and autonomous driving networks. Credit not granted for both CMP SCI 4792 and CMP SCI 5792.

CMP SCI 5794 Internet of Things: 3 semester hours

Prerequisites: CMP SCI 4730 or consent of instructor. This advanced course covers cutting-edge techniques for the emerging edge cloud and wireless/mobile Internet of Things (IoT) systems. It covers the IoT reference architecture, integrated IoT security architecture, major threats and vulnerabilities with IoT devices and edge cloud and defense mechanisms. It includes hands-on labs on both vulnerabilities and defense of the systems. Credit cannot be granted for both CMP SCI 4794 and CMP SCI 5794.

CMP SCI 5870 Computer Science Seminar: 1-3 semester hours

Prerequisites: Graduate standing. This is a seminar on various topics. Substantial student reading and participation is expected. It may be taken more than once for credit with the consent of the department.

CMP SCI 5880 Computer Science Independent Project: 1-3 semester hours

Prerequisites: Graduate standing and consent of the instructor. This course offers the student an opportunity to work on a supervised project, individually or in a group. A maximum of 6 credit hours can be counted toward the M.S. in Computer Science or in the Cybersecurity program from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900.

CMP SCI 5888 Cybersecurity Capstone: 3 semester hours

Prerequisites: INFSYS 6828 and one of either INFSYS 6858 or CMP SCI 5782. This course provides students an opportunity to participate in the full cybersecurity lifecycle in an applied setting using a project-based approach. Students from technical and non-technical backgrounds will work together in teams. Major tasks may include creating an information security management plan, conducting risk assessments, implementing technical and administrative controls to mitigate information security risks, and managing security operations with a focus on incident detection and response. Students may work on projects through an actual organization and demonstrate application of knowledge gained through all prior courses in the degree program. This course must be taken the last semester prior to graduation. Cannot receive credit for CMP SCI 5888 and INFSYS 6888.

CMP SCI 5890 Topics in Computer Science: 1-3 semester hours

Prerequisites: Graduate standing. This course offers various topics not offered on a regular basis. This course may be taken for credit more than once so long as the topic discussed in each semester is different.

CMP SCI 5900 Graduate Internship in Computer Science: 1-3 semester hours

Prerequisites: Consent of the instructor. This course is an internship that provides a student with field experience in an organization related to the profession. To be enrolled, students must be employed in a temporary capacity such as an internship or co-op program. If the instructor is not listed, the student must find an instructor to supervise the internship. Internship activities may vary by site but will require some reporting to the instructor. Typically, 1 credit can be earned for 100 work hours. A maximum of 3 credit hours can be counted toward the M.S. in Computer Science program or in Cybersecurity program, and a maximum of 6 credit hours can be counted from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900.

CMP SCI 5991 Professional Competency: 1-6 semester hours

Prerequisites: Graduate standing in Computer Science. This course will award competency-based credits to computer/IT professionals entering the professional option in the MS in the Computer Science program. Applicants or prospective applicants should contact the MS in Computer Science program director for guidance.

CMP SCI 6320 Advances in Evolutionary Computation: 3 semester hours

Prerequisites: CMP SCI 5320. This course focuses on some advanced topics in genetic and evolutionary computation (both theory and applications). Topics may include genetic algorithm variants, intelligent metaheuristics, evolutionary machine learning, differential evolution, swarm intelligence, learning classifier systems, and Markov models. A substantial part of the course will be based on selected topics from recent literature. This is a project-based course, with the project typically involving literature search and conducting and reporting research. Projects may involve developing specific applications or implementing a specific model.

CMP SCI 6340 Genetic Programming: 3 semester hours

Prerequisites: CMP SCI 5320. This course provides an in-depth exploration of Genetic programming, including advanced concepts such as scalability, evolution of modularity and regularity, and constrained evolution with CGP, STGP, or CFG-based GP. It may be reading, research, or application oriented.

CMP SCI 6390 Interpretable Machine Learning: 3 semester hours

Prerequisites: CMP SCI 5390 or CMP SCI 5340. This research course discusses classical, modern, and advanced methods for machine and deep learning interpretability. It focuses on the application, analysis, and evaluation of model-agnostic methods to interpret shallow and deep neural network models and their predictions.

CMP SCI 6410 Topics in Computer Graphics: 3 semester hours

Prerequisites: CMP SCI 4410 or CMP SCI 5410. This course covers various aspects of advanced graphics techniques, such as geometric modeling, rendering, shading, texturing, and computer animation. The course provides an in-depth study of recent advanced topics in computer graphics.

CMP SCI 6420 Topics In Image Processing and Computer Vision: 3 semester hours

Prerequisites: CMP SCI 5420. This course covers new developments in digital image processing, computer vision, and multimedia. Topics to be covered may include image databases, object tracking, and large-scale data visualization.

CMP SCI 6900 Thesis Preparation in Computer Science: 1-6 semester hours

Prerequisites: Completion of at least 12 graduate credits and approval of research topic by the instructor. This course is designed to help students in preparing a thesis in Computer Science. The student must identify the instructor through mutual interest and understanding of the research. A maximum of 3 credit hours of CMP SCI 6900 can be counted toward the M.S. in Computer Science or Cybersecurity program until the thesis is successfully defended. A maximum of 6 credit hours from a combination of CMP SCI 5880, CMP SCI 5900, and CMP SCI 6900 can be counted toward the M.S. in Computer Science or Cybersecurity program.

CMP SCI 7990 Ph.D. Dissertation Research in Computer Science: 1-9 semester hours

Prerequisites: Completion of comprehensive examinations. This course is used to pursue research work for a Ph.D. dissertation under the supervision of a faculty advisor. This course is available only to the students pursuing a Ph.D. under the Computer Science option.