Computer Science (CMSI)

CMSI 198  Special Studies  (1-4 semester hours)  
CMSI 533  Data Science  (3 semester hours)  
Basic mathematical concepts of data science and their implementation in various programming languages. Methods for obtaining and massaging data. Data life cycle, optimization, cost functions, and stochastic gradient descent.
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 and implementation. Tradeoffs between agile and older approaches, the impact of legacy systems, architectural representation issues, testing, project risk management, and emerging trends in software engineering such as model-driven engineering and aspect-oriented software development.
CMSI 544  Engineering for Autonomy  (3 semester hours)  
CMSI 560  Introduction to Cybersecurity  (3 semester hours)  
Topics in cybersecurity for modern, highly networked organizations in both the private and public sectors from an engineering perspective, using NIST's formal framework of terms, concepts, and methods. Studies of realistic threat models and vulnerability assessments. Comprehensive coverage of technical foundations for extant technologies and tools, including anti-virus software, malware detection, intrusion detection and prevention, firewalls, denial of service attack mitigation, encryption, network monitoring, and automatic audit tools. Complications introduced by emerging trends such as mobile devices and cloud computing. Disaster recovery and business continuity plans. Best practices such as OWASP Top 10 and STIGS.
CMSI 563  Cyberdefense  (3 semester hours)  
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  (3 semester hours)  
Detailed study of design and implementation of knowledge-based systems. Topics include: logic and theorem proving; deduction systems; reaction systems; forward and backward chaining; knowledge acquisition; and explanatory interfaces. 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.
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 690  Research Methods  (3 semester hours)  
Interactive seminar taken in preparation for the graduate capstone project or the graduate thesis. The primary objectives are to provide students with basic skills necessary for performing independent research under the guidance of a faculty member, and to sharpen both written and oral presentation skills. Secondary objectives include broadening the students' technical backgrounds and awareness of contemporary issues, as well as promote life-long learning.
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 and Laboratory  (4 semester hours)  
Foundational course on computer programming, using a popular scripting language such as JavaScript or Python and stressing software development best practices. Topics include values and types, functions, objects, iteration, recursion, command line scripts, event-driven programming, and graphics and animation. Basic data structures and selected algorithmic paradigms are introduced. Laboratory experiences emphasize software engineering practices such as version control, packaging, distribution, and unit testing.
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 the code and what the computer can access and manipulate directly. 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 language, up to calling conventions and the stack. 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 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. Corequisite: 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 linear algebra. Topics include data structures including arrays, lists, and balanced trees; traditional algorithms for searching and sorting; and algorithms for computational geometry, large-scale data processing, and machine learning. Prerequisite: ENGR 160 or ENGR 1200. 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, as well as implementation issues such as modeling, physics, animation, networking, and performance. Coverage of existing gaming platforms and languages in provided as needed. Concepts are applied in an appropriately scaled, team-implemented 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  Languages and Automata I  (4 semester hours)  
A comparative study of the rationale, concepts, design, and features of several major programming languages, including bindings, scope, control flow, type systems, subroutines and coroutines, modules, objects, asynchronous programming, concurrency, and metaprogramming. Major attention is given to the following broad categories of languages: systems, enterprise, scripting, experimental, and esoteric. Compiler architecture and its relationship to formal models of computation. Prerequisite: CMSI 2120.
CMSI 3802  Languages and Automata II  (4 semester hours)  
Applications of the classical theory of computation (including formal grammars, finite automata, stack machines, Turing machines, intractability and undecidability) in the implementation of compilers, transpilers, and interpreters for high-level computer programming languages. Scanner construction, parser construction, intermediate representations, virtual machines, code generation, and optimization. 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 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 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)  
Organization, functionality, and operation of hardware and instruction sets of modern microprocessor systems. Design of computing systems that meet desired functionalities. The use of VHDL in the implementation of computer architectures. Topics include memory systems, pipelining, instruction-level parallelism, and multicore processors. Prerequisite: EECE 3140.
CMSI 5277  Embedded Systems  (4 semester hours)  
Introduction to the design and analysis of computational systems that interact with physical processes. Case studies and applications in selected areas such as medical devices and systems, consumer electronics, toys and games, assisted living, traffic control and safety, automotive systems, process control, energy management and conservation, environmental control, aircraft control systems, communications systems, defense systems, manufacturing, and smart structures. Prerequisite: EECE 3140.
CMSI 5350  Machine Learning  (4 semester hours)  
Introduction to the concepts and methods of Machine Learning (ML) and tools and technologies that can be used to implement and deploy ML solutions. Supervised learning, unsupervised learning, reinforcement learning, and learning theory. Applications including speech recognition, control systems, and bioinformatics. Prerequisites: ((CMSI 2120 or CMSI 3630) and MATH 251) and (CMSI 4320 or MATH 361 [either may be taken concurrently])) or (Permission of instructor).
CMSI 5370  Natural Language Processing  (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, and spoken dialogue systems. Prerequisite: CMSI 5350 or MATH 470.
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)  
An introduction to cellular networks and wireless local area networks. Fundamental theories of transmission, antennas, and propagation. Signal encoding, spread spectrum, received-signal impairments in wireless systems, error detection and correction. TCP/IP, satellite communications, mobile IP. Wireless standards such as IEEE 802.11. Prerequisite: EECE 3140.
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)  
Studies of the fundamental theories of probability, random variables, and stochastic processes at a level appropriate to support graduate coursework/research and practice in the industry in electrical and computer engineering. Selected topics include basic probability concepts, total probability and Bayes theorems, independence, probability functions, expectation, moments of random variables, multiple random variables, functions of random variables, central limit theorems, basic stochastic process concepts, wide-sense stationary processes, autocorrelation function, power spectral density, and important processes such as Gaussian, Markov, and Poisson. Applications of the theories to engineering and science problems will be emphasized. Permission of instructor required.
CMSI 5998  Special Studies  (1-4 semester hours)  
Repeatable for credit.
CMSI 5999  Independent Studies  (1-4 semester hours)  
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)  
Overview of the loT ecosystem and how value is created with loT products. Key loT concepts and technologies and a survey of important loT companies and their products. Students will learn how to turn ideas into new products and create value for customers. Students will also learn how to work together in cross functional teams, deal with fast, ambiguous. and rapidly changing projects. In addition, students will learn to identify and resolve cybersecurity threats in loT solutions.
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 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 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)