Computer Science (CMSI)

CMSI 540  Software Architecture  (3 semester hours)  
Common architectural patterns used in software-intensive systems. Examination of architecture from different viewpoints to develop understanding of the factors that matter in practice, not just in theory. Strategies for evolving software intensive eco-systems including the design of domain appropriate architectures and what it means to be an evolvable architecture, how architecture fits into the specification of software intensive systems, techniques to visualize software-intensive architectures, and common software architectural patterns and the problems they are designed to address. Service, object, and data-oriented design principles, embedded and enterprise architectural solutions, centralized and distributed architectures, and cloud computing architectures.
CMSI 543  Agile Development and Project Management  (3 semester hours)  
Design, development, and management issues of large-scale software systems which are reliable and maintainable, using methodologies applicable to evolving requirements through collaboration between self-organizing, cross-functional teams. A course project covers each step of the development process from the initial needs analysis and requirements specification through design, implementation, and deployment. Tradeoffs between current agile methods and older approaches, the impact of legacy systems, architectural representation issues, testing, project risk management, and emerging trends such as model-driven engineering and aspect-oriented software development are studied.
CMSI 544  Engineering for Autonomy  (3 semester hours)  
CMSI 560  Introduction to Cybersecurity  (3 semester hours)  
(See SYEG 560.)
CMSI 563  Cyberdefense  (3 semester hours)  
(See SYEG 563.)
CMSI 583  Computability and Complexity  (3 semester hours)  
Introduction to the study of computability and computational complexity. Models for computation such as finite automata, pushdown automata, Turing machines, Post canonical systems, partial recursive functions, and phrase structure grammars. Complexity classes such as P, NP, RP, and NC. NP- Completeness. Efficient algorithms for matrix multiplication and fast Fourier transforms. Approximation algorithms, randomized algorithms and parallel algorithms.
CMSI 585  Programming Language Foundations  (3 semester hours)  
Mechanisms for the definition of syntax and semantics of programming languages, covering binding, scope, type systems, control flow, subroutines and coroutines, asynchronous and parallel execution, modularity, and metaprogramming. Denotational, operational, and axiomatic semantics. Case studies are taken from existing popular languages and virtual machines.
CMSI 620  Database Systems  (3 semester hours)  
Fundamental concepts in the field of database technology. Database system structure, semantic data modeling. relational, document, key-value, object-oriented, and graph databases. Formal query languages, integrity, normalization, security, physical database design, indexing and hashing, query processing and optimization, transaction processing, concurrency, crash recovery, and current research in the field.

Prerequisite: CMSI 3520 or permission of instructor.
CMSI 627  Knowledge-Based Systems and Hybrid Artificial Intelligence  (3 semester hours)  
Detailed study of the design and implementation of knowledge-based systems which excel in the areas of transparency, regulatory compliance, and explicit logic. Topics include: logic and theorem proving; deduction systems; reaction systems; forward and backward chaining; knowledge acquisition; and explanatory interfaces. Students work either individually or in self-organizing teams to ideate, design, implement, test, and present a knowledge-based system software application using current rule-based, decision management, and diagnostic tools.

Prerequisite: CMSI 3520 or permission of instructor.
CMSI 630  Artificial Intelligence  (3 semester hours)  
Introduction to the fundamental concepts behind the implementation of human-level intelligence in computer systems. Agent architectures, problem-solving methods, heuristic search, game playing, knowledge representation, frames, inheritance and common-sense reasoning, neural networks, genetic algorithms, conceptual clustering, and current research in the field.

Permission of instructor required.
CMSI 632  Cognitive Systems  (3 semester hours)  
Topics at the intersection of cognitive psychology, experimental design, and machine learning, through an examination of the tools that automate how intelligent agents (both human and artificial) react to, learn from, and otherwise reason about their environments. Causal formalizations for higher cognitive processes surrounding the distinction between associational, causal, and counterfactual quantities, as well as advanced topics in causal inference including do-calculus and transportability. Automation of aspects of human and animalistic reasoning by employing modern tools from reinforcement and causal learning, including: Structural Causal Models, Counterfactual Randomization, Multi-armed Bandit Agents, Markov Decision Processes, approaches to Q-Learning, and Generative Adversarial models.

Prerequisite: CMSI 630 or equivalent.
CMSI 638  Multi-agent Systems and Distributed Artificial Intelligence  (3 semester hours)  
Study of the development of multi-agent systems for distributed artificial intelligence. Topics include intelligent agents, multi-agent systems, agent societies, problem solving, search, decision-making, and learning algorithms in distributed domains, industrial and practical applications of distributed artificial intelligence techniques to real-world problems.
CMSI 640  Software Architecture  (3 semester hours)  
Common architectural patterns used in software-intensive systems. Examination of architecture from different viewpoints to develop understanding of the factors that matter in practice, not just in theory. Strategies for evolving software intensive eco-systems including: design of domain appropriate architectures and what it means to be an evolvable architecture, how architecture fits into the specification of software intensive systems, techniques to visualize software-intensive architectures, and common software architectural patterns and the problems they are designed to address. Service, object, and data oriented design principles, embedded and enterprise architectural solutions, centralized and distributed architectures, and cloud computing architectures.
CMSI 644  Advanced Modeling of Software Systems  (3 semester hours)  
Recent developments in the theory, design, development, and application of autonomous systems. Technical contributions of experts in the field of autonomous systems, current gaps in theory and technology, system architecture, design of agents, models and knowledge representation, control of robotic manipulators, machine vision, design of wheeled, air, space, and underwater robots, navigation and localization, and political and ethical implications for autonomous systems.
CMSI 662  Secure Software Development  (3 semester hours)  
Theoretical foundations and best practices in secure software development. Examination of the application of security techniques in all phases of the software lifecycle (from requirements analysis through deployment and maintenance) with particular emphasis on writing secure software. Threat modeling, cryptography, digital signatures, analysis and assessment, defense against common attack vectors, web security, and testing best practices. Coursework includes implementation of a networked application with associated threat models and mitigation documentation.

Prerequisites: SYEG 560
CMSI 664  Advanced Cybersecurity Management  (3 semester hours)  
Systems engineering approaches to cybersecurity in modern, highly networked organizations in the private and public sectors. NIST formal framework of terms, concepts, and methods. Creation of realistic threat models and vulnerability assessments for enterprises of different types. Comprehensive coverage of benefits and limitations for extant host-based or network-based technologies including anti-virus software, malware detection, intrusion detection and prevention, firewalls, denial of service attack mitigation, encryption, network monitoring, and automatic audit tools. Optimal combination of management procedures and controls with key technologies. Best practice frameworks such as OWASP Top 10 and STIGS, and resources from institutions such as CERT, NIST, and SANS.
CMSI 670  Topics in Interaction Design  (3 semester hours)  
Interaction design and human-computer interaction, with equal emphasis on learning how to design and evaluate interaction architectures and learning how to survey and analyze current literature on the subject to implement such architectures. Topics include: interaction guidelines, principles, and theories; usability engineering; accessibility; the model-view-controller (MVC) and related paradigms; and current research in the field.
CMSI 672  Computer Vision  (3 semester hours)  
Fundamentals of computer vision including image formation, camera imaging geometry, feature detection and matching, boundary detection, stereo, motion estimation and tracking, text and object recognition, image classification, and scene understanding.
CMSI 675  Game Design and Architecture  (3 semester hours)  
The design and development of games, both analog and digital, with an emphasis on modular and scalable video game programming patterns, rather than specific languages or game engines. Concepts are applied through iterative development of game projects and prototypes.
CMSI 694  Graduate Capstone Project  (3 semester hours)  
Project-based seminar in which students will be required to select, research, write about, and discuss some aspect of a broad area of current interest to computer scientists and electrical engineers.

Prerequisite: Successful completion of coursework and the endorsement of the faculty advisor required. (The seminar can be taken during the final semester of coursework subject to the approval of the faculty advisor.)
CMSI 695  Master's Thesis I  (3 semester hours)  
Research and development of a thesis project in compliance with the Frank R. Seaver College of Science and Engineering Master's Thesis Requirements.

Selection of, and project approval from, a thesis advisor required.
Credit/No Credit only.
CMSI 696  Master's Thesis II  (3 semester hours)  
Continuing research and/or development of a thesis project for a second semester.

Prerequisite: CMSI 695.
Credit/No Credit only.
CMSI 697  Master's Thesis III  (3 semester hours)  
Continuing research and/or development of a thesis project for a third semester.

Credit/No Credit only.
Prerequisites: CMSI 695 and CMSI 696.
CMSI 1010  Computer Programming Laboratory  (4 semester hours)  
Foundational course on computer programming, using a popular scripting language such as JavaScript or Python. Topics include values, types, functions, objects, iteration, recursion, command line scripts, event-driven programming, graphics, and animation. Basic data structures and selected algorithmic paradigms are introduced. Laboratory experiences emphasize software engineering practices such as requirements specification, context definition, unit testing, version control, packaging, and distribution.

University Core fulfilled: Foundations: Quantitative Reasoning.
CMSI 1024  Software Carpentry  (2 semester hours)  
Practicum course taking its name from the term coined by Greg Wilson and Brent Gorda, focusing on the tools used for programming as opposed to the programming itself. Topics include: command line interaction, file management, environment variables, and version control (workflow, collaboration, conflict resolution, and best practices).
CMSI 1600  Introduction to Computer Science  (4 semester hours)  
History of computer science and its relationship to other fields. The benefits of computational thinking and computing-enhanced creativity in daily life. Numerous examples connecting computing and computing technology to human activities, such as sporting events, elections, politics, and health care. Coursework includes small-scale programming.
CMSI 1601  Computing in the Popular Culture  (4 semester hours)  
Common stereotypes and assumptions about computing, as reflected in art, entertainment, and conventional wisdom--and the truths and fallacies behind them. Deeper study of particularly seminal popular representations of computing concepts. Critical study of the depiction of computing in film (e.g., 2001: A Space Odyssey, The Matrix, War Games), literature (e.g., Neuromancer; I, Robot, The Soul of a New Machine; The Hitchhiker's Guide to the Galaxy), and mixed media (e.g., "Spock's Brain," Max Headroom, and Univac's 1952 presidential election forecast).
CMSI 1900  Exploring Computer Science  (0 semester hours)  
An introduction to the discipline of computing, its history, principles, ethical issues, societal impacts, and applications in and relationships to other fields. Development of soft skills including interviewing, resume writing, career building, mitigation of impostor syndrome and stereotype threat, team dynamics, and strategies for success.

Required for all incoming first year computer science majors.
Credit/No Credit only.
CMSI 1998  Special Studies  (1-4 semester hours)  
CMSI 1999  Independent Studies  (1-4 semester hours)  
CMSI 2021  Web Application Development  (2 semester hours)  
Practicum culminating in the development of an open-source web application utilizing modern front-end and back-end frameworks and integrating with a cloud datastore and third-party APIs. Topics include the architecture of full-stack systems, single vs. multipage front ends, client-side visuals and animation, web accessibility, HTTP, asynchronous programming, database programming, version control, continuous integration, and web security.

Prerequisite: CMSI 1010 or ENGR 160 or ENGR 1200.
CMSI 2022  Mobile Application Development  (2 semester hours)  
Practicum culminating in the development of an open-source native mobile application. Topics include the architecture of full-stack systems, differences between web and native applications, device interaction and fingerprinting, HTTP, asynchronous programming, database programming, version control, continuous integration, and mobile security.

Prerequisite: CMSI 1010 or ENGR 160 or ENGR 1200.
CMSI 2120  Data Structures and Applications  (4 semester hours)  
Specification and design of data types, information structures, and their associated algorithms. Collection classes and interfaces for sets, lists, stacks, queues, hierarchies, heaps, and dictionaries. Implementation techniques such as arrays, linked lists, hash tables, and efficient tree structures. Introduction to asymptotic computational complexity. Methods for sorting, indexing, and hashing.

Prerequisite: CMSI 1010.
CMSI 2130  Algorithms and Analysis  (4 semester hours)  
The study of algorithm paradigms, including divide-and-conquer, greedy methods, dynamic programming, backtracking, and randomization, with an emphasis on combinatorial search. Modern heuristics such as genetic programs and simulated annealing. String processing including matching and longest common subsequence. Advanced sorting. Constraint satisfaction, hill climbing, and optimization. Combinatorial objects such as permutations, combinations, subsets, and partitions. Graph algorithms. Computational geometry. Recurrences and the Master Theorem.

Prerequisite: CMSI 2120.
CMSI 2210  Computer Systems Organization  (4 semester hours)  
Exploration of computing system operation with a focus on programming at levels with minimal translation between code and the information that the computer can access and manipulate directly. Topics include: encoding, decoding, and manipulation of bit representations for integers, floating-point numbers, characters, and machine instructions; the C programming language up to strings, pointers, and arrays; assembly languages in various architectures up to calling conventions and the stack; introduction to graphics processor architecture and instructions; programming tasks utilizing system calls and other operating system interfaces.

Prerequisite: CMSI 2120.
CMSI 2310  Language, Thought and Computation  (4 semester hours)  
A study of the philosophical and epistemological roots of computer science, covering language, thought, logic, cognition, computation, the Church-Turing thesis, computer programming, and artificial intelligence. Mathematical models of knowledge, learning, consciousness, and self-awareness. Structural and statistical foundations of human language. Holism, reductionism, Zen, and dualism.
CMSI 2464  Cryptography and Cryptanalysis  (4 semester hours)  
Survey of the basic principles and methods of both classical and modern cryptology, and the historical context in which these systems have arisen. Secret key and public key encryption and decryption. Random number generation. Hashes. Digital Signatures. Cryptanalysis.

Prerequisite: MATH 101.
CMSI 2603  Introduction to Responsible Artificial Intelligence  (4 semester hours)  
Development of foundational skills in quantitative, mathematical, and computational reasoning working with various types of data such as time series data, networked data, geospatial data, structured and unstructured textual data, labeled and annotated data, and big data. Using AI as a central theme, the course explores how algorithms are designed, how data is structured and interpreted, and how AI systems influence society. Students will engage with machine learning and model outputs to draw conclusions, evaluate the effectiveness and fairness of AI-based decisions, and discern matters of ethical use.

University Core fulfilled: Foundations: Quantitative Reasoning
CMSI 2820  Discrete Mathematics for Computer Science  (4 semester hours)  
Fundamental mathematical tools used in Computer Science: sets, relations, and functions; propositional and predicate logic; proof strategies such as direct, contradiction and induction; number theory; counting, discrete probability and graph theory with applications in computer science.

Prerequisites: CMSI 1010 or ENGR 160 or ENGR 1200.
CMSI 2998  Special Studies  (1-4 semester hours)  
CMSI 2999  Independent Studies  (1-4 semester hours)  
CMSI 3300  Artificial Intelligence  (4 semester hours)  
Introduction to the foundational mathematics and concepts behind the implementation of autonomous reasoning, prediction, and decision-making. Logical and symbolic reasoning, probability theory and inference. Markov models, information and utility theory, sampling and approximation, machine learning, and introduction to deep learning.

Prerequisites: CMSI 2130, or CMSI 2120 with permission of instructor.
CMSI 3422  Biological Databases  (4 semester hours)  
An examination of biological information storage and processing at both organic and digital levels. The central dogma of molecular biology; the genetic code; the structure of DNA; DNA replication, transcription, translation, and regulation; recording and archiving of gene, protein, and transcription factor information in digital form; reading and integrating biological data into end-user applications.
CMSI 3510  Operating Systems  (4 semester hours)  
The design and implementation of modern operating systems examining both user interaction and internal management of computation and resources. Scheduling, synchronization, and preemptive multitasking of threads and processes. Memory and resource management techniques such as virtual memory, page tables, segmentation, atomicity and transactions. File system storage, indexing, and allocation. Security issues at the process, memory, and resource levels. Case studies and a term project involving the extension of a popular open-source operating system kernel.

Prerequisite: CMSI 2210.
University Core fulfilled: Flag: Information Literacy.
CMSI 3520  Database Systems  (4 semester hours)  
Theory, design, and programming of database systems. Data modeling foundations such as relational algebra and applications of canonical, logical, and physical schemas. ACID, normalization, constraints, transaction processing; concurrency, scaling up vs. scaling out. Query languages, database software interfaces and frameworks. Database security; indexing and optimization. Students work on a range of real-world database systems and datasets of different types including file-based, relational, document-centric, graph, data warehouses, and search engines.

Prerequisites: CMSI 2210
CMSI 3550  Networks and the Internet  (4 semester hours)  
Introduction to fundamental networking principles and their applications from local networks to the global Internet. Physical networking components, layered abstractions of the Internet architecture, several protocols enabling end-to-end data communication for varied applications and services. Client and server network programming. How key issues of security, scalability, resource allocation, and availability impact the design of computer networks.

Prerequisites: CMSI 2210 or EECE 3140.
CMSI 3558  Electronic Markets  (4 semester hours)  
Study of the convergence of markets, fair division, and dispute resolution with modern information technologies. Utility theory; formal definitions for fairness; algorithms for proportional, strong, and envy-free division; complexity of cake-cutting algorithms; unequal shares; indivisible goods; impossibility theorems; auctions and elections; electronic markets vs. electronic commerce; parimutuel wagering and modern wagering websites; efficient market hypothesis; introduction to price theory; prediction markets and IEM (Iowa Electronic Markets); securities exchanges and NASDAQ; online auction markets and eBay; blockchain and cryptocurrencies; architecture and implementation; scalability and security; legal issues; future directions.

Prerequisite: CMSI 1010 or permission of instructor.
CMSI 3630  Data Structures and Algorithms in Engineering  (4 semester hours)  
The rigorous application of computing paradigms and principles to the development of software systems for solving engineering problems, with hands-on programming comprising a significant portion of the course. Laboratory exercises and projects are implemented with modern languages, toolsets, and libraries for scientific computing and introductory linear algebra. Topics include data structures including arrays, lists, and balanced trees; traditional algorithms for searching and sorting; and algorithms for computational geometry and large-scale data processing. Laboratory programming challenges include examples from several engineering disciplines.

Prerequisite: ENGR 160 or ENGR 1200 or MATH 181 or PHYS 1200 or CMSI 1010.
Intended for Engineering majors only, computer science majors will take CMSI 2120 and 2130.
CMSI 3700  Interaction Design  (4 semester hours)  
Introduction to interaction design and human-computer interaction with a primary focus on user-centered design techniques. Three broad categories of topics within human-computer interaction are covered: (a) concepts in human factors, usability, and interface design, and the effects of human capabilities and limitations on interaction with computer systems; (b) design, development, and evaluation of user interfaces for computer systems and learning how to use existing frameworks to implement interaction architectures; and (c) current areas of cutting-edge research and development in human-computer interaction.

Prerequisite: CMSI 2120.
CMSI 3710  Computer Graphics  (4 semester hours)  
The study and development of algorithms for synthesizing, manipulating, and displaying visual information. Representation, modeling, and creation of visual information in digital form: pixels, images, vertices, polygon meshes, scene graphs. Manipulation and rendering of visual information both computationally and mathematically via color manipulation, composition, vectors, matrices/transformations, projection, normal vectors, lighting, clipping, and hidden surface removal. The use and development of computer graphics APIs (libraries) at different levels of abstraction, including scene/geometry/material libraries, graphics pipeline, vertex and fragment shading, and direct graphics memory manipulation.

Prerequisite: CMSI 2120.
University Core fulfilled: Explorations: Creative Experience.
CMSI 3751  Game Design  (4 semester hours)  
The art and science of games. Goals, rules, game balance, and other fundamentals are introduced through lecture, activity, and gameplay. Coverage of specialty design concepts, such as narrative, economy, interfaces, experience, etc., is provided as needed. All concepts are applied in an appropriately scaled, self-driven analog or video game project.
CMSI 3752  Game Development  (4 semester hours)  
Development, production, marketing, and distribution of electronic games. Technical details of game and physics engines. Modeling, programming, and interaction techniques. The course covers both two-and three-dimensional platforms.

Prerequisite: CMSI 3751 or permission of instructor.
CMSI 3801  Theories of Computer and Human Languages  (4 semester hours)  
Survey of the classical theories of language, computation, computability, and complexity and their application to the understanding and generation of both human language and computer programs. Topics include generative and analytic grammars, Turing machines, intractability, undecidability, and an introduction to large language models. Evolution of human languages from sounds to words to abstractions and the relationship of language to cognition and culture. Case studies examine structures and semantics in selected Indo-European and non-Indo-European languages as well as modern programming languages.

Prerequisite: CMSI 2120.
CMSI 3802  Programming Language Concepts and Implementation  (4 semester hours)  
A comparative study of the rationale, concepts, design, and features of several major programming languages, including binding, type systems, control flow, subroutines, coroutines, modules, objects, asynchronous programming, memory management, concurrency, and metaprogramming. Major attention is given to the following broad categories of languages: systems, enterprise, scripting, intermediate, experimental, and esoteric. The architecture and implementation of compilers, transpilers, and interpreters and their relationship to formal models of computation connects language theories to software engineering practice.

Prerequisite: CMSI 3801.
CMSI 3920  Human Contexts and Computer Ethics  (4 semester hours)  
Examination of human contexts within computer science and specific technical skills that help facilitate ethical practice, with an emphasis on learning how to situate and confront social-technical issues at play in personal-professional development, interpersonal relationships, community relations, and global citizenship. Topics include: privacy-first software development and data stewardship; data literacy and quantification of complex social issues; value judgments and consequences; the role and responsibility of computer scientists.

Prerequisite: CMSI 2120 or CMSI 3630.
Junior standing or higher required.
University Core fulfilled: INT: Ethics & Justice.
CMSI 3960  Computing Internship  (0-1 semester hours)  
Credit awarded for (1) preparing supporting documentation for actual internships taken, or (2) participating in an individual or group directed research project resulting in a project or paper that is presented at a conference or university-sanctioned event.

Note: May be repeated up to four times for credit.
CMSI 3998  Special Studies  (1-4 semester hours)  
CMSI 3999  Independent Studies  (1-4 semester hours)  
CMSI 4071  Senior Project I  (4 semester hours)  
Introduction to essential software engineering principles guiding design, development, implementation, and management of modern software projects. Software life cycle models, problem description, specification, and analysis. Object-oriented and use-case analysis methods. Requirements specification, development planning and basics of project management, SEI/CMMI processes, agile software development methods and activities, testing philosophies, ethical concerns, conflicts, and resolution strategies. Technical presentation skills. Students work in self-organizing teams to ideate, design, implement, test, and present a non-trivial software application which includes concepts from spanning the entire CS curriculum.

Prerequisite: permission of instructor.
University Core fulfilled: Flag: Engaged Learning.
CMSI 4072  Senior Project II  (4 semester hours)  
Continuation of the acquisition and practice of essential software engineering skills as described for CMSI 4071.Additional topics include elements of user interface design; front-end development; database integration; networking; SOA, SaaS, and distributed systems; client/server models; more in-depth practices of Agile development, and technical presentations. Students work either individually or in self-organizing teams to ideate, design, implement, test, and present a non-trivial software application which includes concepts spanning the entire CS curriculum. Projects may be extensions of those completed in CMSI 4071.

Prerequisite: CMSI 4071 or permission of instructor.
CMSI 4075  Artificial Intelligence Capstone  (4 semester hours)  
Ideation, requirements specification, design, implementation, and responsible deployment of a project integrating concepts and methodologies from foundational AI courses. The project is to be supplemented by a report and oral presentation that demonstrates proficiency in the technical, cognitive, linguistic, and ethical contributions of the work, including risk analyses.

Senior Standing only.
CMSI 4081  Senior Thesis I  (4 semester hours)  
Authorship and presentation of a paper, backed by the conception, design, and construction of a software project demonstrating mastery of the computer science curriculum.

Senior standing and Permission of instructor required.
University Core fulfilled: Flag: Engaged Learning.
CMSI 4082  Senior Thesis II  (4 semester hours)  
Authorship and presentation of a paper, backed by the conception, design, and construction of a software project demonstrating mastery of the computer science curriculum.

Prerequisite: CMSI 4081 and permission of instructor.
CMSI 4085  Artificial Intelligence Thesis  (4 semester hours)  
Authorship and presentation of a paper, backed by the conception, design, and construction of a software project demonstrating mastery of the artificial intelligence curriculum.

Senior Standing Only
CMSI 4096  Computer Science Seminar  (1-2 semester hours)  
Computer Science Seminar. Readings and discussion of classic papers, essays, and monographs in a seminar setting.

Prerequisite: CMSI 3801.
CMSI 4320  Cognitive Systems Design  (4 semester hours)  
Topics at the intersection of cognitive psychology, experimental design, philosophy of science, and machine learning through an examination of the tools that automate how intelligent agents (both human and artificial) react to, learn from, and hypothesize beyond their environments. Causal formalizations for higher cognitive processes surrounding the distinction between associational, causal, and counterfactual quantities. Automation of aspects of human and animalistic reasoning by employing modern tools from reinforcement and causal learning, including: Structural Causal Models, Multi-armed Bandit Agents, online and offline solutions to Markov Decision Processes, and approaches to Q-Learning, including introductions to Deep Reinforcement Learning.

Prerequisite: CMSI 3300 with a C+ or better.
CMSI 4998  Special Studies  (1-4 semester hours)  
Repeatable for Credit.
CMSI 4999  Independent Studies  (1-4 semester hours)  
Repeatable for Credit.
CMSI 5243  Computer Architecture and VHDL  (4 semester hours)  
(See EECE 5140.)
CMSI 5271  Ubiquitous Computing & Pervasive Systems  (4 semester hours)  
Imagine a world where computers are invisible yet everywhere—seamlessly blending into the environment and transforming the way we live, work, and interact. This is the essence of ubiquitous computing, a paradigm that envisions technology so integrated into our surroundings that it “disappears” into the fabric of daily life. Students will learn about the technical foundations of sensing, computing, and system integration, which enable smooth and seamless interactions in a continuous manner. Using these foundations, students will work on practical projects addressing cutting-edge real-world problems, developing innovative solutions through mobile and ubiquitous computing. The course will also explore the history of ubiquitous computing and its evolution, engaging in collaborative research to understand the central challenges and questions driving contemporary theory and practice in this field.
CMSI 5277  Embedded Systems  (4 semester hours)  
(See EECE 5141.)
CMSI 5331  Interactive Data Science  (4 semester hours)  
Introduction to the foundational concepts and practical tools of data science. Students will craft programmatic solutions to search, retrieve, and analyze data from the web in order to generate meaningful insights. Topics include file I/O and parsing, regular expressions, web scraping, API integration, data visualization techniques, scientific computing, and the manipulation of large datasets.
CMSI 5337  Big Data Mining and Recommender Systems  (4 semester hours)  
An in-depth study of data mining and its role in pattern discovery and the generation of usable products within analytics workflows, with an emphasis on large data set processing to prepare students to solve real-world problems. Topics include data representation and preprocessing, proximity, finding nearest neighbors, dimensionality reduction, exploratory analysis, association analysis and sequential patterns, supervised learning (model selection and evaluation), overfitting, clustering, and advanced topics. Implementation of real-world applications such as recommender systems are studied.
CMSI 5338  Data Streaming & Web Mining Algorithms  (4 semester hours)  
The study of big data management systems with a focus on the implementation of algorithms used in generative artificial intelligence, large language models, recommender systems, and other applications. Topics include ranking and evaluation, graph mining, link analysis, datastreams, social network analysis, sentiment analysis, and advanced topics.
CMSI 5350  Machine Learning  (4 semester hours)  
Introduction to the concepts and methods of Machine Learning (ML) and tools and technologies used to implement and deploy ML solutions. Topics include supervised learning, unsupervised learning, reinforcement learning, learning theory, and ethical discernment for bias mitigation, privacy preservation, transparency, and proper attribution. Case studies include applications in areas such as speech recognition, control systems, and bioinformatics.

Prerequisites: ((CMSI 2120 or CMSI 3630) and (MATH 251 or MATH 241)) and (CMSI 4320 or MATH 361 [either may be taken concurrently])) or (Permission of instructor)
CMSI 5370  Natural Language Processing and Large Language Models  (4 semester hours)  
Introduction to the field of natural language processing (NLP), covering algorithms for solving various NLP tasks, including recent deep learning methods, as well as hands-on application of these techniques to real-world problems. Topics include language modeling, text classification, sequence tagging, syntactic parsing, word embeddings, machine translation, question answering, spoken dialogue systems, and ethical awareness and discernment.

Prerequisite: CMSI 5350 or MATH 470.
CMSI 5381  Agentic Artificial Intelligence in Game Development  (3 semester hours)  
Introductory theory behind, and practice implementing, a wide variety of artificial intelligence (AI) techniques used in modern game development, including navmeshes, behavior graphs, goal-oriented action planning (GOAP), utility-based agents, procedural generation, difficulty adjustment, matchmaking, imitation learning, and advanced reinforcement learning; and the use of programmatic tools to craft dynamic agents, procedurally generated environments, and novel methods of interaction including natural language. Students will implement concrete examples of these topics in scaffolded mini-games, with the opportunity to extend their ideas in creative directions for inclusion in portfolios.

Prerequisites: CMSI 2120, CMSI 2130, and CMSI 3752.
CMSI 5390  Generative Artificial Intelligence Algorithms and Models  (4 semester hours)  
Architectures, training methodologies, and capabilities of modern generative AI systems, including large language models, diffusion models, and multimodal systems. Topics include transformer and diffusion architectures, pre-training and post-training techniques, reasoning models, image and video synthesis, and cross-modal generation. Students will implement and evaluate generative models using advanced AI frameworks while engaging with critical ethical considerations in AI safety, alignment, and societal impact.

Prerequisites: CMSI 5350 or permission of instructor.
CMSI 5391  Generative Artificial Intelligence Infrastructure  (4 semester hours)  
Examination of the infrastructure required to train, deploy, and scale generative AI systems in practice. Topics include distributed training, GPU/TPU cluster management, memory-efficient training, inference optimization, cloud-native deployment, and agentic infrastructure including orchestration frameworks and multi-agent coordination. Students will gain hands-on experience designing and evaluating scalable infrastructure for large language models, diffusion models, and multimodal systems, with attention to cost, latency, throughput, and reliability tradeoffs in production environments as well as ethical and environmental impact considerations.

Prerequisite: CMSI 5390 or permission of instructor.
CMSI 5457  Introduction to Virtual Worlds  (4 semester hours)  
An introduction to the history of, and the technological and social aspects surrounding, virtual worlds. Building and scripting objects, and the interaction between avatars, avatar customization, and computer science concepts underlying virtual worlds.

Permission of instructor required.
CMSI 5555  Wireless Networks  (4 semester hours)  
(See EECE 5270.)
CMSI 5586  Blockchain Technologies  (4 semester hours)  
A detailed study of blockchain and related distributed ledger technologies with a focus on the underlying principles from networking, security and cryptography, system performance and scalability, and other areas of computer science. Critical analysis of appropriate applications of distributed-ledger-based systems, along with technical and societal trade-offs. Design and implementation of smart contracts.

Prerequisites: CMSI 2120.
CMSI 5823  Random Processes  (4 semester hours)  
(See EECE 5210.)
CMSI 5950  Research Methods  (2 semester hours)  
Theories governing, and best practices surrounding, the ethical design, execution, analysis, and dissemination of scientific studies across diverse computing disciplines. Topics include: problem formulation and the research question; literature review; scientific writing, presentation, and communication; sampling and statistical analysis; data curation; experimental and non-experimental methods as applied to computing contexts such as simulation construction and human-computer interaction design; software engineering and maintenance; and open data and open source philosophies. Students will practice safe and privacy-preserving data provenance, analysis, and integrity throughout the entire research process, especially in relation to research surrounding generative AI.
CMSI 5998  Special Studies  (1-4 semester hours)  
Repeatable for credit.
CMSI 5999  Independent Studies  (1-4 semester hours)  
CMSI 6135  Decentralized Algorithms  (3 semester hours)  
Exploration of how agents coordinate and accomplish tasks in uncertain and dynamic environments. Algorithms for coordination, and resilience under incomplete information. Topics include mobile agents, competitive analysis, fault tolerance, leader election, consensus protocols, and the algorithmic foundations of distributed ledger technology.

Prerequisites: CMSI 2130
CMSI 6272  Motion Capture Laboratory  (4 semester hours)  
Laboratory course in which students will learn how to set up motion capture systems using two different technologies: (1) infrared cameras and reflective markers, and (2) wearable wireless networks. The motion capture systems will be interfaced to a computer to log and process data via digital-signal-processing and data-classification algorithms.
CMSI 6278  Internet of Things  (4 semester hours)  
(See EECE 6170.)
CMSI 6352  Deep Learning Applications  (4 semester hours)  
Construction of deep-learning models using recursive and convolutional neural networks. Application areas such as natural language processing, speech recognition, image classification and segmentation, and computer vision. The course requires the implementation of a project applying deep learning to real-world problems.
CMSI 6404  Emergent Complex Adaptive Systems  (3 semester hours)  
This course is an introduction to the basics of complex systems emphasizing non-linearity both in nature and computation. Complexity and complex systems using the framework of traditional Turing machines lead to examples of complex systems such as deep learning and quantum computing. Social computing, personal security, and interactive media serve as impact examples.
CMSI 6555  Wireless Sensor Networks  (4 semester hours)  
The programming and implementation of wireless sensor networks (WSN). Interfaces, memory allocation, component layering, sampling, single-and multi-hop networking, packet sources, reliable transmission, and transmission power control. Students will program wireless sensors that communicate with each other to form a WSN.

Prerequisite: EECE 3140.
CMSI 6820  Information Theory  (4 semester hours)  
Introduction to the concepts of information measures, data compression, and channel capacity. Applications of Shannon theory to evaluate the effectiveness of practical communication links. Error correction coding and its application in reliable communications. Entropy, relative entropy, asymptotic equipartition, entropy of stochastic processes, and differential entropy.
CMSI 6868  Concurrent, Distributed, & Parallel Computing  (3 semester hours)  
Principles of concurrent, distributed, and parallel computation including multithreading; event-driven programming; writing concurrent, asynchronous, parallel, and distributed programs using both (1) low-level processor instructions and operating systems interfaces and (2) high-level languages with built-in support for concurrency and distribution; mathematical models of concurrency and distribution such as process algebras, Petri nets, statecharts, and temporal logic; various networking protocols and parallel architectures.
CMSI 6960  Graduate Computing Internship  (0-1 semester hours)  
Credit awarded to graduate students for 1) preparing supporting documentation for actual internships taken, or 2) participating in an individual or group directed research project resulting in a project or paper that is presented at a conference or University-sanctioned event.

Credit/No Credit only.
CMSI 6998  Special Studies  (1-4 semester hours)  
Repeatable for credit.
CMSI 6999  Independent Studies  (1-4 semester hours)