Computer Science (CMP_SC)

CMP_SC 1000: Introduction to Computer Science

This course introduces the Computer Science field, including the history of computers, career opportunities, and ethical/social issues. There will be lectures given by MU Computer Science faculty to discuss exciting fields as well as career advisement given by Computer Science industry representatives. Prerequisites: Restricted to freshman/sophomore students who are BS Computer Science, BS Information Technology and Undeclared Engineering or Pre-Engineering may enroll in the class without permission

Credit Hour: 1


CMP_SC 1001: Topics in Computer Science

Topic and credit may vary from semester to semester. May be repeated upon consent of department.

Credit Hour: 1-99


CMP_SC 1050: Algorithm Design and Programming I

This course provides experience in developing algorithms, designing, implementing programs. Topics include syntax/semantics, flow control, loops, recursion, I/O, arrays, strings and pointers.

Credit Hours: 4
Prerequisites: C- or higher in MATH 1100 or MATH 1160 or MATH 1500 or sufficient ALEKS score or MyMathTest College Algebra score of 60% or higher


CMP_SC 1050H: Algorithm Design and Programming I - Honors

This course provides experience in developing algorithms, designing, implementing programs. Topics include syntax/semantics, flow control, loops, recursion, I/O, arrays, strings and pointers.

Credit Hours: 4
Prerequisites: Honor eligibility required. C- or higher in MATH 1100 or MATH 1160 or MATH 1500 or sufficient ALEKS score or MyMathTest College Algebra score of 60% or higher


CMP_SC 1300: Computing with Data in Python

Introduction to computer programming for non-CS majors. The syntax and semantics of the python program language is taught. Students learn decision and repetition flow control for programming. Data files access using a variety of software libraries is covered for numerous file formats, such as test files, CSV, Excel files and more. Data structure such as lists, dictionaries, and data frames are covered, as well as programming patterns for data structure loading, manipulation, iteration and processing. Coursework is completed using Python programming language. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C- or higher in MATH 1100 or MATH 1160 or MATH 1500


CMP_SC 2001: Topics in Computer Science

Topic and credit may vary from semester to semester. May be repeated upon consent of department.

Credit Hour: 1-99
Prerequisites: departmental consent


CMP_SC 2010: Intellectual Property for Engineers

The objective of the course is to enable students to understand and develop informed opinions about issues relating to IP and its increasing influence on the control and use of information in society. A secondary objective is to provide a practical understanding of how to establish copyright, trademark, and/or patent protection for IP. Particular emphasis will be given to the complexities associated with IP in the fields of information technology and computer science.

Credit Hours: 3
Recommended: Any 1000 level Engineering course or instructor permission


CMP_SC 2017: World of Neuroscience

(same as ECE 2017, PSYCH 2017, BIO_SC 2017, BIOL_EN 2017, BME 2017). This in-class course will introduce undergraduates to the growing area of neuroscience from the perspectives of three disciplines: engineering, biology and psychology. Topics in the course will span multiple levels of neuroscience including genomic, genetic, molecular, cellular, systems, behavioral and clinical levels. Due to the interdisciplinary nature of the neuroscience, the classes will cover diverse topics. The topics will range from overviews of the key neurobiology areas, to lab sessions involving how to analyze your own brain signals (EEG), and to visits to brain imaging center and EEG lab. The overall goal is to provide a broad exposure to the fascinating world of interdisciplinary neuroscience. Graded on A-F basis only.

Credit Hour: 1


CMP_SC 2050: Algorithm Design and Programming II

A study of fundamental techniques and algorithms for representing and manipulating data structures. Topics include data abstraction, recursion, stacks, queues, linked lists, trees, efficient methods of sorting and searching, and Big-O analysis.

Credit Hours: 4
Prerequisites: C or higher in CMP_SC 1050. May be restricted to Engineering majors only


CMP_SC 2085: Problems in Computer Science

Independent investigation or project in Computer Science. May be repeated to up 6 hours.

Credit Hour: 1-6
Prerequisites: C or higher in CMP_SC 1050


CMP_SC 2111: Production Languages

The study of the syntax, semantics, and applications of one programming language suitable for large scale scientific or commercial projects, such as FORTRAN, COBOL, PL/1, C, or ADA. May be taken more than once for credit.

Credit Hour: 1-3
Prerequisites: C- or higher in CMP_SC 2050 or INFOTC 2040


CMP_SC 2270: Introduction to Logic Systems

(same as ECE 2210). Basic tools, methods and procedures to design combinational and sequential digital circuits and systems, including number systems, boolean algebra, logic minimization, circuit design, memory elements, and finite state machine design.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 1050 or INFOTC 1040


CMP_SC 2300: Introduction to Computational Data Visualization

This course is an introduction to data visualization using computational paradigms. The basic concepts of data visualization are introduced, including use of color, size, shape, and spatial organization to convey characteristics of data collections. Students learn to visualize univariate and multivariate data, customize style and formatting, and add plot enrichments to enhance visual information. Specialty visualization, such as timeseries, statistics, geospatial data, and interactive plots are also covered. Coursework is completed using the Python programming language. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 1050 or CMP_SC 1300 or INFOTC 1040


CMP_SC 2830: Web Application Development I

(same as INFOTC 2830). This course focuses on the development of web pages and web applications using Full Stack Development methodologies and tools. Topics such as current events, cloud services, web servers, digital animations, images, audio and video, user interface design, and usability principles are also challenged.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050 or INFOTC 2040


CMP_SC 3050: Advanced Algorithm Design

This class surveys fundamental algorithms and data structures that have wide practical applicability, including search trees and graph algorithms. Emphasis is placed on techniques for efficient implementation and good software development methodologies.

Credit Hours: 3
Prerequisites: CMP_SC 2050 with a C or higher


CMP_SC 3085: Problems in Computer Science

Independent investigation or project in Computer Science. May be repeated to up 6 hours.

Credit Hour: 1-6
Prerequisites: C or higher in CMP_SC 2050


CMP_SC 3280: Computer Organization and Assembly Language

(same as ECE 3280). Introduces computer architectures, programming concepts including parameter passing, I/O, interrupt handling, DMA, memory systems, cache, and virtual memory. Graded of A-F basis only.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 2270 or ECE 2210 or ECE 1210, and C or higher in CMP_SC 2050


CMP_SC 3330: Object Oriented Programming

(same as INFOTC 3330). This course focuses on object-oriented programming concepts such as: Abstraction, Polymorphism, Encapsulation, Inheritance, Interfaces, Abstract Classes, Files, Streams, and Object Serialization. Topics such as GUI and event-driven programming, APIs, and design patterns are also tackled.

Credit Hours: 3
Prerequisites: CMP_SC 2050 or INFOTC 2040 with a C or higher grade


CMP_SC 3380: Database Applications and Information Systems

Covers fundamental topics of database management systems (DBMS) and database-enabled applications. Topics include a brief history of secondary storage and databases, data modeling, introductory SQL, an overview of current database trends, and current popular database systems. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 2050 or INFOTC 2040


CMP_SC 3530: UNIX Operating System

(same as INFOTC 3530).This course is an introduction to UNIX and UNIX-like operating systems and interfaces, to include the file system, command shells, text editors, pipes and filters, input/output system, shell scripting and Regular Expressions. The course will also incorporate an aspect of programming in a UNIX environment, cloud computing, containers and an introduction to System Administration. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 1050 or INFOTC 1040


CMP_SC 3830: Signals and Linear Systems

(same as ECE 3830). Transform Analysis of Signals and Linear Systems. Laplace transforms, z-transforms, Fourier series and transforms. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: A grade of C or better in ECE 3810, and a grade of C or better in CMP_SC 2270 or a grade of C or better in ECE 2210, or Instructor's consent


CMP_SC 3940: Internship in Computer Science

Computer-related experience in business or industry jointly supervised by faculty and computer professionals. Students should apply one semester in advance for consent of the supervising professor. Graded on a S/U basis only.

Credit Hour: 1-3
Prerequisites: CMP_SC 2050


CMP_SC 4001: Topics in Computer Science

Topic and credit may vary from semester to semester. May be repeated upon consent of department.

Credit Hour: 1-99


CMP_SC 4050: Design and Analysis of Algorithms I

(cross-leveled with CMP_SC 7050). This course reviews and extends earlier work with linked structures, sorting and searching algorithms, and recursion. Graph algorithms, string matching, combinatorial search, geometrical algorithms and related topics are also studied.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3050 and MATH 2320


CMP_SC 4060: String Algorithms

(cross-leveled with CMP_SC 7060). This course provides an introduction to algorithms that efficiently compute patterns in strings. Topics covered include basic properties of strings, data structures for processing strings, string decomposition, exact and approximate string matching algorithms.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 4050


CMP_SC 4070: Numerical Methods for Science and Engineering

(same as ECE 4070; cross-leveled with CMP_SC 7070, ECE 7070). This course introduces the basic numerical methods that are widely used by computer scientists and engineers. Students will learn how to use the MATLAB platform to find the computational solution of various problems arising in many real world applications. By completing this course, students will be able to master algorithms, compare their performances and critically assess which ones are viable options for the particular problem at hand. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050 and junior standing or instructor's consent
Recommended: Students are expected to have basic knowledge in discrete math and algorithms


CMP_SC 4080: Parallel Programming for High Performance Computing

(same as ECE 4080; cross-leveled with CMP_SC 7080, ECE 7080) This course will provide in-depth treatment of the evolution high performance computing architectures and parallel programming techniques for those architectures. We will cover topics such as: multi-process and multi-threaded programming; multi-node system architectures (clusters, grids, and clouds) and distributed programming; and general purpose GPU programming. To reinforce lecture topics, programming projects will be completed using multi-process and multi-threaded techniques for modern multicore, multiprocessor workstations; parallel and distributed programming techniques for modern multi-node systems; and general purpose GPU programming. Parallel algorithms will be investigated, selected, and then developed for various scientific data processing problems. Programming projects will be completed using C and C++ APIs and language extensions, e.g. threads (pthreads, Boost/C++), TBB, CILK, OpenMP, OpenMPI, CUDA and OpenCL.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3280 or ECE 3210 and C- or higher in CMP_SC 3050 or ECE 3220


CMP_SC 4270: Computer Architecture

(same as ECE 4270; cross-leveled with CMP_SC 7270, ECE 7270). Advanced computer architectures and programming; memory, memory management and cache organizations, parallel processing, graphical processor units for general programming.

Credit Hours: 4
Prerequisites: C or higher in CMP_SC 2050 and CMP_SC 3280 or ECE 3280


CMP_SC 4280: Network Systems Architecture

(same as ECE 4280; cross-leveled with CMP_SC 7280, ECE 7280). The course covers network systems (interconnects and switch fabrics, network considerations) and relevant networking applications at the network, transport and application layer.

Credit Hours: 4
Prerequisites: C- or higher in CMP_SC 2050 or ECE 3220 and C- or higher in CMP_SC 3280 or ECE 3210


CMP_SC 4320: Software Engineering I

(cross-leveled with CMP_SC 7320). Overview of software life cycle, including topics in systems analysis and requirements specification, design, implementation testing and maintenance. Uses modeling techniques, project management, peer review, quality assurance, and system acquisition.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3380


CMP_SC 4320W: Software Engineering I - Writing Intensive

(cross-leveled with CMP_SC 7320). Overview of software life cycle, including topics in systems analysis and requirements specification, design, implementation testing and maintenance. Uses modeling techniques, project management, peer review, quality assurance, and system acquisition.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3380


CMP_SC 4330: Object Oriented Design I

(cross-leveled with CMP_SC 7330). Building on a prior knowledge of program design and data structures, this course covers object-oriented design, including classes, objects, inheritance, polymorphism, and information hiding. Students will apply techniques using a modern object-oriented implementation language.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3330


CMP_SC 4350: Big Data Analytics

(cross-leveled with CMP_SC 7350). Big Data Analytics represents a new era of computing, where data in any format maybe processed and exploited to extract insights for industries and organizations to make informed decisions, whether that data is in-place, in-motion or at-rest, in large volume, structured or unstructured. More and more companies are embracing open source Big Data technologies, such as Hadoop and extending it into an enterprise ready Big Data Platform. This course will cover advanced analytics technologies and techniques that enable industries to extract insights from data with sophistication, speed and accuracy. You will learn practical industry best practices to bridge the gap between classroom learning and real world; and have access to cloud services for labs/projects.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3330 and CMP_SC 3380


CMP_SC 4380: Database Management Systems I

(cross-leveled with CMP_SC 7380). Fundamental concepts of current database systems with emphasis on the relational model. Topics include entity-relationship model, relational algebra, query by example, indexing, query optimization, normal forms, crash recovery, web-based database access, and case studies. Project work involves a modern DBMS, such as Oracle, using SQL.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3380


CMP_SC 4405: iOS App Development I

(same as INFOTC 4405). This is a first in a series of courses on developing iOS applications using Xcode, and the Swift programming language on the macOS platform.

Credit Hours: 3
Prerequisites: INFOTC 1040 or CMP_SC 1050 with C- or higher, or consent of instructor
Recommended: Prior experience programming in any programming language. The student should understand basic language concepts such as variables, data structures, control structures, and functions


CMP_SC 4410: Theory of Computation I

(cross-leveled with CMP_SC 7410). An introductory study of computation and formal languages by means of automata and related grammars. The theory and applications of finite automata, regular expressions, context free grammars, pushdown automata and Turing machines are examined. May not be counted toward Computer Science MS/PHD.

Credit Hours: 3
Prerequisites: C- or higher in MATH 2320


CMP_SC 4420: Software Security

(cross-leveled with CMP_SC 7420). This course would introduce students to fundamental principles of applied computer security who will learn to identify, detect, and defend against common security vulnerabilities. The goals of this course are: (1) to provide students with a solid background with basic software security concepts, (2) impart knowledge of common soft- ware security vulnerabilities and (3) foster understanding of secure design of software. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 3050 and MATH 2320


CMP_SC 4430: Compilers I

(cross-leveled with CMP_SC 7430). Introduction to the translation of programming languages by means of interpreters and compilers. Lexical analysis, syntax specification, parsing, error-recovery, syntax-directed translation, semantic analysis, symbol tables for block structured languages, and run-time storage organization. May not be counted toward Computer Science MS/PHD.

Credit Hours: 3
Prerequisites: C- or higher in MATH 2320, CMP_SC 3280 and CMP_SC 4450


CMP_SC 4440: Malware Analysis and Defense

(cross-leveled with CMP_SC 7440). Malicious software or "malware" is a security threat. This course teaches students to understand the nature and types of viruses and how they are threats; teaches techniques used to prevent, detect, repair and defend against viruses and worms; teaches program binary examination tools to detect malicious code; and teaches ethical issues surrounding computer security violations.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3280 or ECE 3210


CMP_SC 4450: Principles of Programming Languages

(cross-leveled with CMP_SC 7450). An introduction to the structure, design and implementation of programming languages. Topics include syntax, semantics, data types, control structures, parameter passing, run-time structures, and functional and logic programming. May not be counted toward Computer Science MS/PHD.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050


CMP_SC 4460: Introduction to Cryptography

(cross-leveled with CMP_SC 7460). Cryptography is an important technique used to achieve security goals in an untrusted and possibly adversarial environment. The goals of this course are: (1) to provide students with a solid background with basic cryptographic techniques and their applications, (2) to impart knowledge of standard cryptographic algorithms and (3) to foster understanding of the correct use of cryptographic techniques.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3050 and MATH 2320


CMP_SC 4520: Operating Systems I

(cross-leveled with CMP_SC 7520). Basic concepts, theories and implementation of modern operating systems including process and memory management, synchronization, CPU and disk scheduling, file systems, I/O systems, security and protection, and distributed operating systems.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3050, C or higher in CMP_SC 3280, and C- or higher in MATH 1700


CMP_SC 4530: Cloud Computing

(cross-leveled with CMP_SC 7530). This course covers principles that integrate computing theories and information technologies with the design, programming and application of distributed systems. The course topics will familiarize students with distributed system models and enabling technologies; virtual machines and virtualization of clusters, networks and data centers; cloud platform architecture with security over virtualized data centers; service- oriented architectures for distributed computing; and cloud programming and software environments. Additionally, students will learn how to conduct some parallel and distributed programming and performance evaluation experiments on applications within available cloud platforms. Finally we will survey research literature and latest technology trends that are shaping the future of high performance, distributed and cloud computing.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3330 or instructor's consent


CMP_SC 4540: Neural Models and Machine Learning

(same as ECE 4540, BME 4540, BIOL_EN 4540; cross-leveled with CMP_SC 7540, ECE 7540, BIOL_EN 7540). The projects-based course has three inter-linked components: (I) math models of neurons and neural networks, (II) machine learning in neuroscience, after a brief introduction to python and (III) software automation and cyberinfrastructure to support neuroscience. Extensive projects focusing on software automation and machine learning components, with brief in-class presentations. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: MATH 1500 or consent of instructor
Recommended: Introductory software programming, and introductory cell biology or consent of instructor


CMP_SC 4550: Cyber Defense

(cross-leveled with CMP_SC 7550). Familiarize students with intrusion detection systems; application and network attacks; security architectures; design principles; compliance standards; risk assessment and management; policy management; authentication and access control; and moving target defense. The course also will provide hands-on skills to apply cyber defense at the application and network levels. Course students will conduct experiments on the "Mizzou Cyber Range" relating to attack detection, resource adaptation as well as human/behavioral aspects. Finally, students will collaboratively survey research literature, real-world case studies and latest trends in data science, artificial intelligence, and human-centered design that are shaping nextgeneration cyber defense services in enterprise systems and critical infrastructures. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 3330


CMP_SC 4590: Computational Neuroscience

(same as BIO_SC 4590, BIOL_EN 4590, ECE 4590, BME 4590; cross-leveled with BIO_SC 7590, ECE 7590, BIOL_EN 7590). Interdisciplinary course in biology and quantitative sciences with laboratory and modeling components. Explores basic computational and neurobiological concepts at the cellular and network level. Introduction to neuronal processing and experimental methods in neurobiology; modeling of neurons and neuron-networks. Graded on A-F basis only.

Credit Hours: 4
Prerequisites: MATH 1500 or equivalent


CMP_SC 4610: Computer Graphics I

(cross-leveled with CMP_SC 7610).Basic concepts and techniques of interactive computer graphics including hardware, software, data structures, mathematical manipulation of graphical objects, the user interface, and fundamental implementation algorithms.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3050 and MATH 1500 or C- or higher in CMP_SC 3050 and MATH 1300 and MATH 1400


CMP_SC 4620: Physically Based Modeling and Animation

(cross-leveled with CMP_SC 7620). This course introduces students to physically based modeling and animation methodology for computer graphics and related fields such as computer vision, visualization, biomedical imaging and virtual reality. We will explore current research issues and will cover associated computational methods for simulating various visually interesting physical phenomena. This course should be appropriate for graduate students in all areas as well as advanced undergraduate students.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 4610
Recommended: Good knowledge of C or C++ programming, no physics background necessary


CMP_SC 4630: Game Development

(same as INFOTC 4630). The course focuses on rapid game prototyping and development utilizing the Unity game engine and C#. tools. You will learn the fundamentals of game programming and also a platform which is actually used t to make published games across multiple platforms (Mac, PC, web, iOS, Android etc). Graded on A-F basis only.

Credit Hours: 3
Prerequisites: INFOTC 3630 with C- or better, or INFOTC 2040 with C- or higher, or CMP_SC 2050 with a C- or better


CMP_SC 4650: Digital Image Processing

(same as ECE 4655; cross-leveled with CMP_SC 7650, ECE 7655). Fundamentals of digital image processing hardware and software including digital image acquisition, image display, image enhancement, image transforms and segmentation.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050 and STAT 4710 or instructor's consent


CMP_SC 4670: Digital Image Compression

(same as ECE 4675; cross-leveled with ECE 7675, CMP_SC 7670). Covers digital image formation, information theory concepts, and fundamental lossless and lossy image compression techniques including bit plane encoding, predictive coding, transform coding, block truncation coding, vector quantization, subband coding and hierarchical coding.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050


CMP_SC 4720: Introduction to Machine Learning and Pattern Recognition

(same as ECE 4720; cross-leveled with ECE 7720, CMP_SC 7720) This course provides foundations and methods in machine learning and pattern recognition that address the problem of programming computers to optimize performance by learning from example data or expert knowledge. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050 and STAT 4710 or instructor consent


CMP_SC 4730: Building Intelligent Robots

(same as ECE 4340; cross-leveled with CMP_SC 7730, ECE 7340). Covers the design and development of intelligent machines, emphasizing topics related to sensor-based control of mobile robots. Includes mechanics and motor control, sensor characterization, reactive behaviors and control architectures.

Credit Hours: 4
Prerequisites: junior standing
Recommended: programming experience in one of the following programming languages - Basic, C, C++, or Java


CMP_SC 4740: Interdisciplinary Introduction to NLP

(same as LINGST 4740; cross-leveled with CMP_SC 7740; LINGST 7740). The goal of this course is to enable students to develop substantive NLP applications. Focus on current structural and statistical techniques for the parsing and interpretation of texts.

Credit Hours: 3
Prerequisites: senior standing


CMP_SC 4750: Artificial Intelligence I

(same as ECE 4750; cross-leveled with CMP_SC 7750, ECE 7750).This course is intended to be a general introduction to the field of Artificial Intelligence (AI). It will provide exposure to a range of core AI topics including intelligent agent, problem solving by search and game playing, constraint satisfaction problems, propositional and first-order logic, probability in AI, and machine learning. The topics covered in this course are closely related to the common core of Computing & Information education -- about C&I know-how and the ways of thinking and problem solving that characterize C&I community: a system view of the world, a focus on mathematical and computational representation of systems, information representation and transformation, and so forth.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3050 and junior standing


CMP_SC 4770: Introduction to Computational Intelligence

(same as ECE 4870; cross-leveled with CMP_SC 7770, ECE 7870). Introduction to the concepts, models and algorithms for the development of intelligent systems from the standpoint of the computational paradigms of neural networks, fuzzy set theory and fuzzy logic, evolutionary computation and swarm optimization.

Credit Hours: 3


CMP_SC 4830: Web Application Development II

(same as INFOTC 4830; cross-leveled with CMP_SC 7830). This course will study science and engineering of the world-wide web, languages, protocols, services, and tools that enable the web. Topics such as virtual machines, model-view-controller, data interchange formats, data analytics, web services and APIs, templates, authentication, security, scalability, protocols, and version-control are also challenged. Emphasis will be placed on cloud services and technologies.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2830 or INFOTC 2830


CMP_SC 4850: Computer Networks I

(cross-leveled with CMP_SC 7850). Introduction to concepts and terminology of data communications and computer networking. Basic protocols and standards, applications of networking, routing algorithms, congestion avoidance, long-haul and local networks.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3050


CMP_SC 4910: Digital Forensics

(same as INFOTC 4910; cross-leveled with CMP_SC 7910, INFOTC 7910). This course introduces an overview of basic Digital Forensics procedures and techniques to enable students to perform a digital investigation of physical storage media and volume analysis, including preservation, analysis and acquisition of artifacts that resides in hard disk and random access memory, for Linux and Windows systems. Work is completed in Unix/Linux environments and in Microsoft Windows environment. Students will need to setup a virtual private infrastructure to perform multiple tasks. The course emphasizes "learning by doing" and has a 90% hands-on and 10% theory. Much of this information consists of skills and abilities that employers want and expect in the real world of IT - in a small to medium size organization. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 3530 or INFOTC 3530 with a C- or higher


CMP_SC 4970: Senior Capstone Design I

Communication skills, and prototyping. Covers professional ethics, intellectual property/patenting, knowledge of engineering literature, safety, economic and environmental impact of technology. Essays, oral and written reports.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 4320 and senior standing


CMP_SC 4970W: Senior Capstone Design I - Writing Intensive

Communication skills, and prototyping. Covers professional ethics, intellectual property/patenting, knowledge of engineering literature, safety, economic and environmental impact of technology. Essays, oral and written reports.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 4320 and senior standing


CMP_SC 4980: Senior Capstone Design II

Course entails completion of CMP_SC 4970 design project. Design prototyping, testing, evaluation, presentation, and preparation of documentation.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 4970


CMP_SC 4980H: Senior Capstone Design II - Honors

Course entails completion of CMP_SC 4970 design project. Design prototyping, testing, evaluation, presentation, and preparation of documentation. Prerequisites: C or higher in CMP_SC 4970; Honors eligibility required

Credit Hours: 3


CMP_SC 4990: Undergraduate Research in Computer Science

Independent investigation or project in Computer Science. May be repeated to 6 hours.

Credit Hour: 0-6
Prerequisites: C or higher in CMP_SC 3050 and senior standing in Computer Science


CMP_SC 4995: Undergraduate Research in Computer Science - Honors

Independent investigation to be presented as an undergraduate honors thesis.

Credit Hour: 1-6
Prerequisites: C or higher in CMP_SC 3050 and honors student in Computer Science


CMP_SC 7001: Topics in Computer Science

Topic and credit may vary from semester to semester. May be repeated upon consent of department.

Credit Hour: 1-99


CMP_SC 7010: Computational Methods in Bioinformatics

(same as INFOINST 7010) Introduces the fundamental concepts and basic computational techniques for mainstream bioinformatics problems. Emphasis will be placed on the computational aspect of bioinformatics, including formulation of a biological problem in a computable problem, design of scoring functions and algorithms, confidence assessment of prediction results and software development.

Credit Hours: 3
Prerequisites: CMP_SC 4050 and STAT 4710


CMP_SC 7050: Design and Analysis of Algorithms I

(cross-leveled with CMP_SC 4050). This course reviews and extends earlier work with linked structures, sorting and searching algorithms, and recursion. Graph algorithms, string matching, combinatorial search, geometrical algorithms and related topics are also studied. Cannot be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: CMP_SC 3050 and MATH 2320


CMP_SC 7060: String Algorithms

(cross-leveled with CMP_SC 4060). This course provides an introduction to algorithms that efficiently compute patterns in strings. Topics covered include basic properties of strings, data structures for processing strings, string decomposition, exact and approximate string matching algorithms.

Credit Hours: 3
Prerequisites: CMP_SC 4050


CMP_SC 7070: Numerical Methods for Science and Engineering

(cross-leveled with CMP_SC 4070). This course introduces the basic numerical methods that are widely used by computer scientists and engineers. Students will learn how to use the MATLAB platform to find the computational solution of various problems arising in many real world applications. By completing this course, students will be able to master algorithms, compare their performances and critically assess which ones are viable options for the particular problem at hand. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 2050 or instructor's consent
Recommended: Students are expected to have basic knowledge in discrete math and algorithms


CMP_SC 7080: Parallel Programming for High Performance Computing

(same as ECE 7080; cross-leveled with CMP_SC 4080, ECE 4080). This course will provide in-depth treatment of the evolution high performance computing architectures and parallel programming techniques for those architectures. We will cover topics such as: multi-process and multi-threaded programming; multi-node system architectures (clusters, grids, and clouds) and distributed programming; and general purpose GPU programming. To reinforce lecture topics, programming projects will be completed using multi-process and multi-threaded techniques for modern multicore, multiprocessor workstations; parallel and distributed programming techniques for modern multi-node systems; and general purpose GPU programming. Parallel algorithms will be investigated, selected, and then developed for various scientific data processing problems. Programming projects will be completed using C and C++ APIs and language extensions, e.g. threads (pthreads, Boost/C++), TBB, CILK, OpenMP, OpenMPI, CUDA and OpenCL.

Credit Hours: 3
Prerequisites: CMP_SC 3280 or ECE 3210 and CMP_SC 3050 or ECE 3220


CMP_SC 7270: Computer Architecture

(same as ECE 7270; cross-leveled with CMP_SC 4270, ECE 4270). Advanced computer architectures and programming; memory, memory management and cache organizations, parallel processing, graphical processor units for general programming.

Credit Hours: 4
Prerequisites: C or higher in CMP_SC 2050 and CMP_SC 3280 or ECE 3280


CMP_SC 7320: Software Engineering I

(cross-leveled with CMP_SC 4320). Overview of software life cycle, including topics in systems analysis and requirements specification, design, implementation testing and maintenance. Uses modeling techniques, project management, peer review, quality assurance, and system acquisition. May not be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: CMP_SC 3380


CMP_SC 7330: Object Oriented Design I

(cross-leveled with CMP_SC 4330). Building on a prior knowledge of program design and data structures, this course covers object-oriented design, including classes, objects, inheritance, polymorphism, and information hiding. Students will apply techniques using a modern object-oriented implementation language.

Credit Hours: 3
Prerequisites: CMP_SC 3330


CMP_SC 7350: Big Data Analytics

(cross-leveled with CMP_SC 4350). Big Data Analytics represents a new era of computing, where data in any format maybe processed and exploited to extract insights for industries and organizations to make informed decisions, whether that data is in-place, in-motion or at-rest, in large volume, structured or unstructured. More and more companies are embracing open source Big Data technologies, such as Hadoop and extending it into an enterprise ready Big Data Platform. This course will cover advanced analytics technologies and techniques that enable industries to extract insights from data with sophistication, speed and accuracy. You will learn practical industry best practices to bridge the gap between classroom learning and real world; and have access to cloud services for labs/projects.

Credit Hours: 3
Prerequisites: CMP_SC 3330 and CMP_SC 3380


CMP_SC 7380: Database Management Systems I

(cross-leveled with CMP_SC 4380). Fundamental concepts of current database systems with emphasis on the relational model. Topics include entity-relationship model, relational algebra, query by example, indexing, query optimization, normal forms, crash recovery, web-based database access, and case studies. Project work involves a modern DBMS, such as Oracle, using SQL.

Credit Hours: 3
Prerequisites: CMP_SC 2050


CMP_SC 7410: Theory of Computation I

(cross-leveled with CMP_SC 4410). An introductory study of computation and formal languages by means of automata and related grammars. The theory and applications of finite automata, regular expressions, context free grammars, pushdown automata and Turing machines are examined. May not be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: MATH 2320


CMP_SC 7420: Software Security

(cross-leveled with CMP_SC 4420). This course would introduce students to fundamental principles of applied computer security who will learn to identify, detect, and defend against common security vulnerabilities. The goals of this course are: (1) to provide students with a solid background with basic software security concepts, (2) impart knowledge of common soft- ware security vulnerabilities and (3) foster understanding of secure design of software. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 3050 and MATH 2320


CMP_SC 7430: Compilers I

(cross-leveled with CMP_SC 4430). Introduction to the translation of programming languages by means of interpreters and compilers. Lexical analysis, syntax specification, parsing, error-recovery, syntax-directed translation, semantic analysis, symbol tables for blockstructured languages, and run-time storage organization. May not be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: MATH 2320 and CMP_SC 3280 and CMP_SC 4450


CMP_SC 7440: Malware Analysis and Defense

(cross-leveled with CMP_SC 4440). Malicious software or "malware" is a security threat. This course teaches students to understand the nature and types of viruses and how they are threats; teaches techniques used to prevent, detect, repair and defend against viruses and worms; teaches program binary examination tools to detect malicious code; and ethical issues surround computer security violations.

Credit Hours: 3
Prerequisites: CMP_SC 3280, ECE 3210 or equivalent


CMP_SC 7450: Principles of Programming Languages

(cross-leveled with CMP_SC 4450). An introduction to the structure, design and implementation of programming languages. Topics include syntax, semantics, data types, control structures, parameter passing, run-time structures, and functional and logic programming. May not be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: CMP_SC 2050


CMP_SC 7460: Introduction to Cryptography

(cross-leveled with CMP_SC 4460). Cryptography is an important technique used to achieve security goals in an untrusted and (possibly) adversarial environment. The goals of this course are: (1) to provide students with a solid back- ground with basic cryptographic techniques and their applications, (2) impart knowledge of standard cryptographic algorithms and (3) foster understanding of the correct use of cryptographic techniques.

Credit Hours: 3
Prerequisites: CMP_SC 3050 and MATH 2320


CMP_SC 7520: Operating Systems I

(cross-leveled with CMP_SC 4520). Basic concepts, theories and implementation of modern operating systems including process and memory management, synchronization, CPU and disk scheduling, file systems, I/O systems, security and protection, and distributed operating systems. Cannot be counted toward CS MS/PHD.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3050, C or higher in CMP_SC 3280, and C- or higher in MATH 1700


CMP_SC 7525: Probability and Computing

(same as MATH 7525; cross-leveled with CMP_SC 4525, MATH 4525). This course is concerned with probabilistic methods in computer science and discrete mathematics. Its goal is to study the interplay between probability and computational complexity, and to demonstrate how tools from modern probability theory can be exploited in the study of structures that depend on many parameters, such as networks with many nodes and functions of many variables. Covered topics may include: discrete probability, concentration inequalities, martingale methods, the probabilistic method, entropy and information, Vapnik-Chervonenkis theory. Applications to (theoretical) computer science, combinatorics, random graphs, randomized algorithms, probabilistic analysis, derandomization. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: MATH 2320 or MATH 3000W; STAT 4710/STAT 7710 or STAT 4750/STAT 7750
Recommended: MATH 4120/MATH 7120 MATH 4140/MATH 7140


CMP_SC 7530: Cloud Computing

(cross-leveled with CMP_SC 4530). This course covers principles that integrate computing theories and information technologies with the design, programming and application of distributed systems. The course topics will familiarize students with distributed system models and enabling technologies; virtual machines and virtualization of clusters, networks and data centers; cloud platform architecture with security over virtualized data centers; service- oriented architectures for distributed computing; and cloud programming and software environments. Additionally, students will learn how to conduct some parallel and distributed programming and performance evaluation experiments on applications within available cloud platforms. Finally we will survey research literature and latest technology trends that are shaping the future of high performance, distributed and cloud computing.

Credit Hours: 3
Prerequisites: CMP_SC 3330 or instructor's consent


CMP_SC 7540: Neural Models and Machine Learning

(same as ECE 7540, BIOL_EN 7540; cross-leveled with ECE 4540). The projects-based course has three inter-linked components: (I) math models of neurons and neural networks, (II) machine learning in neuroscience, after a brief introduction to python and (III) software automation and cyberinfrastructure to support neuroscience. Extensive projects focusing on software automation and machine learning components, with brief in-class presentations. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: MATH 1500 or consent of instructor
Recommended: Introductory software programming, and introductory cell biology or consent of instructor


CMP_SC 7550: Cyber Defense

(cross-leveled with CMP_SC 4550). Familiarize students with intrusion detection systems; application and network attacks; security architectures; design principles; compliance standards; risk assessment and management; policy management; authentication and access control; and moving target defense. The course also will provide hands-on skills to apply cyber defense at the application and network levels. Course students will conduct experiments on the "Mizzou Cyber Range" relating to attack detection, resource adaptation as well as human/behavioral aspects. Finally, students will collaboratively survey research literature, real-world case studies and latest trends in data science, artificial intelligence, and human-centered design that are shaping nextgeneration cyber defense services in enterprise systems and critical infrastructures. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 3330


CMP_SC 7560: Mathematical Modeling I

(same as MATH 7540, ECE 7560). Solution of problems from industry, physical, social and life sciences, economics, and engineering using mathematical models. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: graduate standing and 3 semesters of calculus and some exposure to ordinary differential equations or instructor's consent


CMP_SC 7590: Computational Neuroscience

(same as BIOL_EN 7590, BIO_SC 7590, ECE 7590; cross-leveled with BIO_SC 4590). Interdisciplinary course in biology and quantitative sciences with laboratory and modeling components. Explores basic computational and neurobiological concepts at the cellular and network level. Introduction to neuronal processing and experimental methods in neurobiology; modeling of neurons and neuron-networks. Graded on A-F basis only.

Credit Hours: 4
Prerequisites: MATH 1500 or equivalent


CMP_SC 7610: Computer Graphics I

(cross-leveled with CMP_SC 4610). Basic concepts and techniques of interactive computer graphics including hardware, software, data structures, mathematical manipulation of graphical objects, the user interface, and fundamental implementation algorithms.

Credit Hours: 3
Prerequisites: CMP_SC 3050 and either MATH 1500 or MATH 1300 and MATH 1400


CMP_SC 7620: Physically Based Modeling and Animation

(cross-leveled with CMP_SC 4620). Introduces fundamental algorithms and techniques including interpolation, quaternions, rigid body dynamics, kinematics, particle systems, free form and dynamic deformations, spring and damper systems and computational natural phenomena simulation.

Credit Hours: 3
Prerequisites: CMP_SC 4610 or CMP_SC 7610
Recommended: Good knowledge of C or C++ programming, no physics background necessary


CMP_SC 7650: Digital Image Processing

(same as ECE 7655; cross-leveled with CMP_SC 4650, ECE 4655). Fundamentals of digital image processing hardware and software including digital image acquisition, image display, image enhancement, image transforms and segmentation.

Credit Hours: 3
Prerequisites: CMP_SC 2050, STAT 7710 or instructor's consent


CMP_SC 7670: Digital Image Compression

(same as ECE 7675; cross-leveled with CMP_SC 4670, ECE 4675). Covers digital image formation, information theory concepts, and fundamental lossless and lossy image compression techniques including bit plane encoding, predictive coding, transform coding, block truncation coding, vector quantization, subband coding and hierarchical coding.

Credit Hours: 3
Prerequisites: CMP_SC 2050


CMP_SC 7720: Introduction to Machine Learning and Pattern Recognition

(same as ECE 7720; cross-leveled with CMP_SC 4720, ECE 4720). This course provides foundation knowledge and methods in machine learning and pattern recognition that address the problem of programming computers to optimize performance by learning from example data or expert knowledge. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 2050 and STAT 4710 or instructor's consent


CMP_SC 7730: Building Intelligent Robots

(same as ECE 7340; cross-leveled with CMP_SC 4730, ECE 4730). Covers the design and development of intelligent machines, emphasizing topics related to sensor-based control of mobile robots. Includes mechanics and motor control, sensor characterization, reactive behaviors and control architectures. Prerequisites: programing experience in one of the following programming languages: Basic, C, C++, or Java.

Credit Hours: 4


CMP_SC 7740: Interdisciplinary Introduction to Natural Language Processing

(same as LINGST 7740; cross-leveled with CMP_SC 4740; LINGST 4740). The goal of this course is to enable students to develop substantive NLP applications. Focus on current structural and statistical techniques for the parsing and interpretation of text.

Credit Hours: 3


CMP_SC 7750: Artificial Intelligence I

(same as ECE 7750; cross-leveled with CMP_SC 4750, ECE 4750).This course is intended to be a general introduction to the field of Artificial Intelligence (AI). It will provide exposure to a range of core AI topics including intelligent agent, problem solving by search and game playing, constraint satisfaction problems, propositional and first-order logic, probability in AI, and machine learning. The topics covered in this course are closely related to the common core of Computing & Information education -- about C&I know-how and the ways of thinking and problem solving that characterize C&I community: a system view to the world, a focus on mathematical and computational representation of systems, information representation and transformation, and so forth.

Credit Hours: 3
Prerequisites: CMP_SC 3050


CMP_SC 7770: Introduction to Computational Intelligence

(same as ECE 7870; cross-leveled with CMP_SC 4770, ECE 4870). Introduction to the concepts, models and algorithms for the development of intelligent systems from the standpoint of the computational paradigms of neural networks, fuzzy set theory and fuzzy logic, evolutionary computation and swarm optimization.

Credit Hours: 3


CMP_SC 7830: Web Application Development II

(cross-leveled with CMP_SC 4830). This course will study science and engineering of the world-wide web, languages, protocols, services, and tools that enable the web. Topics such as virtual machines, model-view-controller, data interchange formats, data analytics, web services and APIs, templates, authentication, security, scalability, protocols, and version-control are also challenged. Emphasis will be placed on cloud services and technologies.

Credit Hours: 3
Prerequisites: C- or higher in CMP_SC 3330 or INFOTC 3330. C- higher in CMP_SC 2830 or INFOTC 2830


CMP_SC 7850: Computer Networks I

(cross-leveled with CMP_SC 4850). Introduction to concepts and terminology of data communications and computer networking. Basic protocols and standards, applications of networking, routing algorithms, congestion avoidance, long-haul and local networks.

Credit Hours: 3
Prerequisites: C or higher in CMP_SC 3050


CMP_SC 7910: Digital Forensics

(same as INFOTC 7910; cross-leveled with CMP_SC 4910, INFOTC 4910). This course introduces an overview of basic Digital Forensics procedures and techniques to enable students to perform a digital investigation of physical storage media and volume analysis, including preservation, analysis and acquisition of artifacts that reside in hard disk and random access memory, for Linux and MS Windows systems. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: INFOTC 3530 or CMP_SC 3530 or Instructor consent


CMP_SC 8001: Advanced Topics in Computer Science

Topic may vary from semester to semester. May be repeated upon consent of department.

Credit Hours: 3
Prerequisites: varies by topic


CMP_SC 8050: Design and Analysis of Algorithms II

Techniques for the design and analysis of correct, efficient algorithms. Topics include graph, geometric, and algebraic/ numeric algorithms, NP-completeness, and parallel algorithms.

Credit Hours: 3
Prerequisites: CMP_SC 4050


CMP_SC 8060: Survey of Advanced Algorithm Techniques

This class provides a survey of important algorithmic techniques, some of which are emerging right now, and show that they are much easier to understand than they first appear. The class will create a renewed appreciation for what makes Computer Science such a fun/interesting discipline.

Credit Hours: 3
Prerequisites: CMP_SC 4050


CMP_SC 8085: Problems in Computer Science

Independent study project work with a professor in computer science.

Credit Hour: 1-4
Prerequisites: instructor consent


CMP_SC 8130: Computational Genomics

(same as INFOINST 8310). This course introduces computational concepts and methods of genomics to students. The course covers genome structure, database, sequencing, assembly, annotation, gene and RNA finding, motif and repeats identification, single nucleotide polymorphism, and epigenomics. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: INFOINST 7010 or CMP_SC 7010


CMP_SC 8150: Integrative Methods in Bioinformatics

(same as INFOINST 8150), Introduces the most popular experimental methods from the point of view of the information sources that can be used. Students will use data obtained directly from biological experiments and learn how to suggest new experiments to improve results. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: INFOINST 7010 or CMP_SC 7010


CMP_SC 8160: Content Management in Biomedical Informatics

(same as INFOINST 8860). This course introduces theory and techniques for content extraction, indexing, and retrieval of biomedical media databases. Topics include biomedical media databases, feature extraction methods, advanced database indexing structures, query methods, and result visualization. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 7380, INFOINST 7010


CMP_SC 8170: Computational Modeling of Molecular Structures

This course uses a problem solving paradigm to investigate common principles, data structures, algorithms, challenges, and solutions in computationally modeling (constructing) 3D structures of proteins, RNAs, chromosomes, and genomes.

Credit Hours: 3
Prerequisites: CMP_SC 7010


CMP_SC 8180: Machine Learning Methods for Biomedical Informatics

(same as INFOINST 8880). Teaches statistical machine learning methods and applications in biomedical informatics. Covers theories of advanced statistical machine learning methods and how to develop machine learning methods to solve biomedical problems. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 7050 and INFOINST 7010 or CMP_SC 7010 or INFOINST 8005


CMP_SC 8190: Computational Systems Biology

(same as INFOINST 8390). This course covers current theories and methods in the modeling and analysis of high-throughput experiments such as microarrays, proteomics, and metabolomics. Topics include the inference of causal relations from experimental data and reverse engineering of cellular systems. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: INFOINST 7010 or CMP_SC 7010; INFOINST 8010


CMP_SC 8370: Data Mining and Knowledge Discovery

Course topics include an introduction to fundamental concepts, data mining techniques from machine learning and pattern recognition areas, association rules, web mining, spatial mining, temporal mining, multimedia/multimodal database mining, and database mining, and geospatial information mining.

Credit Hours: 3
Prerequisites: CMP_SC 7380


CMP_SC 8440: Information Security: A Language-Based Approach

This course focuses on language-based techniques for information flow security. Students will gain a solid background in information security, be encouraged to do further research and be exposed to important/promising trends in state-of-the-art computer security.

Credit Hours: 3
Prerequisites: CMP_SC 4450 or CMP_SC 7450


CMP_SC 8450: Formal Engineering Methods for Software and Security

Designing scalable exhaustive methods to ensure reliability of computer systems is an important challenge in computer science as even simple errors can have serious socio-economic-political consequences. This challenge is the focus of the field of automated verification techniques which draws techniques from complexity theory, automata theory, programming languages and logic, and provides tools to ensure that the computer systems are reliable. Computer-assisted techniques for verifying hardware implementations are regularly employed in the industry, and are also being increasingly adopted in the software industry as the costs of software bugs and security flaws escalate. The goals of this course are: (1) to provide students with a solid back- ground in the fundamental techniques used in this field, (2) to encourage further research in software and security verification, and (3) to introduce students to important upcoming trends in verifying security protocols. The students will get theoretical background as well as learn to use some standard tools in this field. Students will also explore topics of particular interest to them through the performance of a significant semester project.

Credit Hours: 3
Prerequisites: CMP_SC 4450 or CMP_SC 7450 or CMP_SC 4430 or CMP_SC 7430 or instructor's consent. A reasonable level of mathematical maturity and significant programming experience is expected


CMP_SC 8460: Cryptographic Protocols and Formal Proofs

Cryptographic techniques are widely deployed to secure electronic commerce, electronic voting, contract-signing and many other applications. They aim to achieve security goals such as confidentiality, data integrity, data privacy, entity authentication, and non-repudiation. Despite their widespread use, their design is error-prone. This happens as a result of the complexity of the cryptographic primitives, the inherent asymmetry of Internet and malicious behavior. Thus, there is a need for rigorous formal verification of their correctness. This need has resulted in the development of several automated tools that verify the correctness of cryptographic protocols. This course aims to introduce the methods and techniques underlying these tools. The goals of this course are: (1) to provide students with a solid back- ground in the fundamental techniques used in this field, (2) to encourage further research in cryptographic protocol verification, and (3) to intro- duce students to important upcoming trends in verifying security protocols. The students will get theoretical background as well as learn to use some standard tools in this field. Students will also explore topics of particular interest to them through the performance of a significant semester project. Graded on A-F basis only.

Credit Hours: 3


CMP_SC 8530: Cloud Computing II

This course covers advanced principles of distributed system models and enabling technologies relating to cloud computing; latest advances in management and security of virtual machines and virtualization of clusters, networks, and data centers will be studied; additionally, students will survey research literature and perform cloud programming as well as performance evaluation experiments on applications within available cloud platforms. Students will learn project-based: problem solving, collaborative programming, technical writing and presentation skills. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 4530 or CMP_SC 7530 or instructor's consent


CMP_SC 8540: Principles of Big Data Management

This course will introduce the essential characteristics of Big Data and why it demands rethinking how we store, process, manage and analyze massive amounts of structured and unstructured data. It will cover the core technical challenges in Big Data management i.e., the storage, retrieval, and analysis of Big Data. it will emphasize on fundamental concepts, analytical skills, critical thinking, and software skills necessary for solving real-world Big Data problems. The design of real- world systems for Big Data management (e.g., Cassandra, Storm/Heron, Samza, Flink, Kafka, Voldemort) and large-scale graph data management systems will be discussed. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 4380/CMP_SC 7380 (or equivalent) and CMP_SC 4520/CMP_SC 7520 (or equivalent). Recommended Good knowledge of developing software in languages such as C++/Java in a Linux/UNIX environment


CMP_SC 8550: Cryptographic Protocols and Formal Proofs

Provide students with a solid back-ground in the fundamental techniques used in this field, encourage further research in cryptographic protocol verification, and introduce students to important upcoming trends in verifying security protocols. Graded on A-F basis only.

Credit Hours: 3
Recommended: CMP_SC 8450 useful but not required


CMP_SC 8570: Neural Dynamics and Communication

(same as ECE 8570). Properties of nerve cells including membrane potential, action potential, ion channel dynamics, GHK equation, dynamical properties of excitable membranes, neuronal communication and plasticity. Entrainment, synchronization and oscillations in neuronal networks, and their functional significance. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: ECE 4590/CMP_SC 4590 or consent of instructor


CMP_SC 8580: Machine Learning in Neuroscience

(same as ECE 8580). Basics of neuronal and network dynamics including spikes and communication between regions, including via competing hypotheses. Machine learning fundamentals including linear, logistic and artificial neural network mappings. Integration of data-driven and theory-driven models, with emphasis on insights into neuroscience via XAI approaches. Software automation in neuroscience including python notebooks and cyberinfrastructure tools for interacting with software repositories and HPC resources. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: ECE 4590/CMP_SC 4590 or consent of instructor


CMP_SC 8610: Computer Graphics II

Further study of computer graphics, focused on 3-D graphics, transformations, geometric and surface modeling, color models, visible surface determination, lighting and shading, standard graphics software (Phigs/OpenGL). Selected current topics in graphics such as visualization, animation and realism.

Credit Hours: 3
Prerequisites: CMP_SC 7610


CMP_SC 8620: Physically Based Modeling and Animation II

This course introduces students to physical based modeling and animation methodology for computer graphics and related fields such as computer vision, visualization, biomedical imaging and virtual reality. We will explore current research issues and will cover associated computational methods for simulating various visually interesting physical phenomena. This course should be appropriate for graduate students in all areas as well as advanced undergraduate students.

Credit Hours: 3
Prerequisites: CMP_SC 4610 or CMP_SC 7610


CMP_SC 8630: Data Visualization

Data visualization broadly covers transforming multidimensional and timevarying datasets to dynamic visual representations and encodings that facilitate exploratory data mining, knowledge discovery, improved understanding, summarization, structural modeling, collaboration and decision making using interactive methods.

Credit Hours: 3
Prerequisites: CMP_SC 4610 or CMP_SC 7610 or instructor's consent


CMP_SC 8650: Advanced Image Processing

(same as ECE 8855). This course covers advanced topics in image understanding including multispectral multimodal imaging, motion estimation, texture analysis, geometric level set methods.

Credit Hours: 3
Prerequisites: CMP_SC 4650 or CMP_SC 7650 or instructor's consent


CMP_SC 8660: Multimedia Security

This course offers a comprehensive coverage of the theoretical foundation of multimedia security technologies, including encryption, authentication, digital watermarking, key management, copy control, fingerprinting/tracing, digital media forensics, and biometrics, provides an in-depth study of the state-of-the-art digital rights management systems and the underlying security technologies. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 4670 or CMP_SC 4650; instructor's consent


CMP_SC 8675: Biomedical Image Processing

(same as ECE 8675). This course introduces students to the fundamentals of biomedical image processing and analysis with an emphasis on cellular and tissue microscopy along with anatomical imaging. The course will cover image and video processing techniques and pipelines for image enhancement, restoration, registration, detection, segmentation, classification, and motion analysis that are tailored for biomedical image informatics. This course will provide a rich exposure to a broad range of imaging datasets from the molecular to the anatomical; and train students to implement algorithms for moderately complex tasks in biomedical image analysis. This course is suitable for graduate students in all fields of engineering and science who are interested in understanding and implementing biomedical and biological image analytics and are seeking pointers to the broad literature in the field.

Credit Hours: 3
Prerequisites: CMP_SC 4650 or CMP_SC 7650, ECE 4655 or ECE 7655 or instructor's consent


CMP_SC 8680: 3-D Computer Vision

This course introduces students to a central problem in computer vision - how to recover 3-D structure and motion from a collection of 2-D images, using techniques drawn mainly from linear algebra and matrix theory. The main focus is on developing a unified framework for studying the geometry of multiple images of a 3-D scene and reconstructing geometric models from those images. The course also covers relevant aspects of image formation, basic image processing, and feature extraction.

Credit Hours: 3
Prerequisites: CMP_SC 4650 or CMP_SC 7650
Recommended: Good knowledge of C or C++ programming, linear algebra and data structures


CMP_SC 8690: Computer Vision

(same as ECE 8690). This course introduces students to the fundamental problems of computer vision, the main concepts and the techniques used to solve such problems. It will enable graduate and advanced undergraduate students to solve complex problems and make sense of the literature in the area. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: ECE 4655 or ECE 7655 or CMP_SC 4650 or CMP_SC 7650 or instructor's consent


CMP_SC 8725: Supervised Learning

(same as ECE 8725). This course introduces the theories and applications of advanced supervised machine learning methods. It covers hidden Markov model and expectation maximization (EM) algorithms, probabilistic graphical models, non-linear support vector machine and kernel methods. The course emphasizes both the theoretical underpinnings of the advanced supervised learning methods and their applications in the real world. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 4720 or CMP_SC 7720 or ECE 4720 or ECE 7720 or instructor's consent


CMP_SC 8735: Unsupervised Learning

(same as ECE 8735). Theoretical and practical aspects of unsupervised learning including topics of expectation maximization (EM), mixture decomposition, clustering algorithms, cluster visualization, and cluster validity. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: CMP_SC 4720 or CMP_SC 7720 or ECE 4720 or ECE 7720 or instructor's consent


CMP_SC 8740: Advanced Natural Language Processing

What do Google, the New York Times, Facebook, Cerner, and other big companies know that you don't? Natural language processing. This course considers open and compelling problems in contemporary research in the processing and analysis of text, focusing on both the underlying theory and its practical application. The goal is to help students understand the nature of these problems, the current approaches to them, the strengths and weaknesses of those approaches, and other possible ways forward.

Credit Hours: 3
Prerequisites: CMP_SC 4740 or CMP_SC 7740
Recommended: CMP_SC 2050; students should be facile in programming at least one high-level language. Good knowledge of univariate, parametric statistics


CMP_SC 8750: Artificial Intelligence II

Further discussion of theories and techniques of artificial intelligence. Investigating state-of-the-art systems with capabilities to perceive, reason, learn and react intelligently to their environment.

Credit Hours: 3
Prerequisites: CMP_SC 4750 or CMP_SC 7750 or instructor's consent


CMP_SC 8770: Neural Networks

(same as ECE 8890). The course will consider computing systems based on neural networks and learning models along with implementations and applications of such systems.

Credit Hours: 3
Prerequisites: CMP_SC 4870 or CMP_SC 7870 or instructor's consent


CMP_SC 8780: Advanced Topics in Computational Intelligence

(same as ECE 8875). This course is a continuation of ECE 7870/CMP_SC 7770 Introduction to Computational Intelligence in the concepts, models, and algorithms for the development of intelligent systems from the standpoint of the computational paradigms of neural networks, fuzzy set theory and fuzzy logic, evolutionary computation, and swarm intelligence. Advanced topics in these areas will be discussed with a focus on applications of these technologies.

Credit Hours: 3
Prerequisites: ECE 4870 or ECE 7870 or CMP_SC 4770 or CMP_SC 7770


CMP_SC 8790: Filtering, Tracking and Data Fusion

This course will cover theory and applications of rigorous and efficient techniques for determining the state of an observed system from a series of imperfect observations or measurements. Specific topics to be covered include semidefinite matrix theory, the Kalman filter, the Unscented Transform, Covariance Intersection and related techniques. Applications of these techniques include head and hand tracking in virtual reality systems, robotics, and distributed information fusion.

Credit Hours: 3
Prerequisites: CMP_SC 2050, MATH 2300 or Linear Algebra or Matrix Theory


CMP_SC 8850: Computer Networks II

In-depth analysis and evaluation of computer networking architectures, protocols and algorithms, network security, distributed database and computational networks, routing and congestion control, domains and internetworking.

Credit Hours: 3
Prerequisites: CMP_SC 7850


CMP_SC 8870: Modeling and Management of Uncertainty

(same as ECE 8870). Theoretical and practical issues in the modeling and management of uncertainty. Topics include probabilistic uncertainty, belief theory and fuzzy set theory. Applications to computer vision, pattern recognition and expert systems. Graded on A-F basis only.

Credit Hours: 3
Prerequisites: ECE 4870 or ECE 7870 or CMP_SC 4770 or CMP_SC 7770 or instructor's consent


CMP_SC 8980: Research Masters Project in Computer Science

Investigation and research of a topic, not leading to a thesis. Graded on S/U basis only.

Credit Hour: 1-99
Prerequisites: departmental consent


CMP_SC 8990: Research-Masters Thesis Computer Science

Graded on S/U basis only.

Credit Hour: 1-99
Prerequisites: advisor's consent


CMP_SC 9990: Research-Doctoral Dissertation Computer Science

Graded on S/U basis only.

Credit Hour: 1-99
Prerequisites: advisor's consent