Hide Advanced Options
Courses - Spring 2024
CMSC
Computer Science Department Site
CMSC100
Bits and Bytes of Computer and Information Sciences
Credits: 1
Grad Meth: Reg
Restriction: For first time freshmen and first time transfer students; or permission of CMNS-Computer Science department.
Cross-listed with: INST101.
Credit only granted for: CMSC100 or INST101.
Students are introduced to the fields (and disciplines) of computer science and information science within a small classroom setting. They will learn to make a successful transition from high school to the university, while exploring study skills, student success plans and research opportunities.
CMSC106
Introduction to C Programming
Credits: 4
Grad Meth: Reg
Prerequisite: MATH115.
Restriction: Must not be in Computer Science program; and must not have completed any courses from CMSC131-499 course range.
Credit only granted for: CMSC106 or CMSC122.
Design and analysis of programs in C. An introduction to computing using structured programming concepts. Intended for students with no or minimal programming experience.
CMSC115
Gender, Race and Computing
Credits: 3
Grad Meth: Reg
GenEd: DSSP, DVUP
Restriction: Must not have taken CMSC216 or higher.
Cross-listed with: WGSS115.
Credit only granted for: WGSS115 or CMSC115.
Race and gender have shaped computing from its earliest histories to contemporary debates over bias in search algorithms, surveillance, and AI. As computational processes shape ever more dimensions of everyday life from the personal to the global scale, understanding how they operate and how power operates within them grows ever more important. Combating racism and sexism is not as simple as ensuring the pool of programmers and engineers is more diverse; structures of power are embedded in digital technologies as they are in all aspects of our society, and we must learn to perceive their operation if we hope to transform them. We will examine how racism and sexism operate in the field of computer science and in everyday uses of digital technologies, while studying how feminist and racial justice movements have created alternative approaches. This class is for anyone who wishes to better understand the relationships between digital technology, structural power, and social justice.
CMSC116
You and I, and Generative AI
Credits: 3
Grad Meth: Reg
GenEd: DSSP, SCIS
Restriction: Must not have completed CMSC216 or higher.
This course explores whether and how generative AI can be developed to support human values and promote human autonomy, and how the context of the deployment of AI may impact answers to this question. Entire industries are being transformed by AI technology, much of which is driven by the recent meteoric advances in generative AI. These advances have enabled many people to do things they previously were incapable of but have also brought about a series of ethical questions around their development and use. These developments raise fundamental questions around whether it is even possible to develop generative AI technology that empowers rather than replaces people, and which serves human values such as rights, justice, and dignity. It also raises the question: Is generative AI different from other technologies that can be used toward both positive and negative ends?
Restriction: Must not have completed CMSC216 or higher.
CMSC122
Introduction to Computer Programming via the Web
Credits: 3
Grad Meth: Reg
GenEd: DSSP
Restriction: Must not have completed any courses from CMSC131-499 course range; and must not be concurrently enrolled in CMSC131.
Credit only granted for: CMSC106, or CMSC122.
Introduction to computer programming in the context of developing full featured dynamic web sites. Uses a problem solving approach to teach basics of program design and implementation using JavaScript; relates these skills to creation of dynamic web sites; then explores both the potential and limits of web-based information sources for use in research. Intended to help relate a student's major to these emerging technologies.
CMSC125
Introduction to Computing
Credits: 3
Grad Meth: Reg
GenEd: DSSP
Prerequisite: Must have completed or be concurrently enrolled in MATH115 or higher.
Restriction: Must not be in the Computer Science program; and must not have completed any courses from CMSC131-499; and must not have completed BMGT302, IMDM127 or INST126.
Credit only granted for: IMDM127 or CMSC125.
Introduces you to the computing field as a whole. You will gain skills used across the spectrum of computing majors and learn about the great variety of routes into the various areas of study and employment in technological fields.
CMSC131
Object-Oriented Programming I
Credits: 4
Grad Meth: Reg
Corequisite: MATH140.
Credit only granted for: CMSC131, CMSC133 or CMSC141.
Introduction to programming and computer science. Emphasizes understanding and implementation of applications using object-oriented techniques. Develops skills such as program design and testing as well as implementation of programs using a graphical IDE. Programming done in Java.
CMSC132
Object-Oriented Programming II
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC131; or must have earned a score of 5 on the A Java AP exam; or must have earned a satisfactory score on the departmental placement exam; and minimum grade of C- in MATH140.
Credit only granted for: CMSC132 or CMSC142.
Introduction to use of computers to solve problems using software engineering principles. Design, build, test, and debug medium -size software systems and learn to use relevant tools. Use object-oriented methods to create effective and efficient problem solutions. Use and implement application programming interfaces (APIs). Programming done in Java.
CMSC142
Programming with Purpose II: Data Structures and Algorithms
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC141 and MATH140.
Credit only granted for: CMSC132 or CMSC142.
Introduction to use of computers to solve problems using software engineering principles. The course will focus on the central idea of an interface (e.g. an application programming interface, or API) and how to conceptualize, design, implement, and test interfaces. Common data structures will introduced along with their expected interfaces. Programming done in Python.
CMSC216
(Perm Req)
Introduction to Computer Systems
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC132; and minimum grade of C- in MATH141.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in Engineering: Computer program; or must be in the Computer Science Minor program; and Permission of CMSC - Computer Science department.
Introduction to the interaction between user programs and the operating system/hardware. Major topics include C programming, introductory systems programming, and assembly language. Other concepts covered include UNIX, machine data representation, thread management, optimization, and virtual memory. Programming is done in the Linux Environment.
CMSC250
(Perm Req)
Discrete Structures
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC131; and minimum grade of C- in MATH141.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in Engineering: Computer program; or must be in the Computer Science Minor program; and Permissions of CMSC - Computer Science department.
Fundamental mathematical concepts related to computer science, including finite and infinite sets, relations, functions, and propositional logic. Introduction to other techniques, modeling and solving problems in computer science. Introduction to permutations, combinations, graphs, and trees with selected applications.
CMSC250H
(Perm Req)
Discrete Structures
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC131; and minimum grade of C- in MATH141.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in Engineering: Computer program; or must be in the Computer Science Minor program; and Permissions of CMSC - Computer Science department.
Fundamental mathematical concepts related to computer science, including finite and infinite sets, relations, functions, and propositional logic. Introduction to other techniques, modeling and solving problems in computer science. Introduction to permutations, combinations, graphs, and trees with selected applications.
Prerequisite: Minimum grade of C- in CMSC131; and minimum grade of C- in MATH141; and permission of CMNS-Computer Science department.
CMSC298A
(Perm Req)
Special Topics in Computer Science
Credits: 1 - 4
Grad Meth: S-F
Contact department for information to register for this course.
CMSC320
(Perm Req)
Introduction to Data Science
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250.
Restriction: Permission of CMNS-Computer Science department.
Credit only granted for: CMSC320, DATA320 or STAT426.
An introduction to the data science pipeline, i.e., the end-to-end process of going from unstructured, messy data to knowledge and actionable insights. Provides a broad overview of several topics including statistical data analysis, basic data mining and machine learning algorithms, large-scale data management, cloud computing, and information visualization.
CMSC330
(Perm Req)
Organization of Programming Languages
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in the Computer Science Minor program; or must be in Engineering: Computer program; and Permission of CMSC - Computer Science department.
A study of programming languages, including their syntax, semantics, and implementation. Several different models of languages are discussed, including dynamic, scripting (e.g., Ruby, Python) functional (e.g., OCaml, Haskell, Scheme), and memory safe systems programming (e.g., Rust). Explores language features such as formal syntax, scoping and binding of variables, higher-order programming, typing, and type polymorphism. Introduces finite automata, context free grammar, parsing, lambda calculus, and basics of security attacks and software security.
CMSC335
(Perm Req)
Web Application Development with JavaScript
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250.
Restriction: Permission of CMNS-Computer Science Department.
Credit only granted for: CMSC389N or CMSC335.
Formerly: CMSC389N.
Provides an introduction to modern ways of developing Web Applications/Services using JavaScript for both front-end and back-end. The course covers topics on fundamental JavaScript language constructs, server-side JavaScript, back-end data persistence, and client-side JavaScript to build Web Applications that interact with Web services and back-end databases.
CMSC351
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in Engineering: Computer program; or must be in the Computer Science Minor program; and Permission from the CMSC - Computer Science department.
A systematic study of the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics. Algorithms are analyzed using mathematical techniques to solve recurrences and summations.
CMSC351H
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216.
Restriction: Must be in a major within the CMNS-Computer Science department; or must be in Engineering: Computer program; or must be in the Computer Science Minor program; and Permission from the CMSC - Computer Science department.
A systematic study of the complexity of some elementary algorithms related to sorting, graphs and trees, and combinatorics. Algorithms are analyzed using mathematical techniques to solve recurrences and summations.
CMSC388J
(Perm Req)
Special Topics in Computer Science; Building Secure Web Applications
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department.

Explores tools such as Python, Flask, Django, MongoDB, Svelte, and React

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC389G
(Perm Req)
Special Topics in Computer Science; What to do After Landing a SWE Job
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission of CMNS-Computer Science department.

Students are given a scoped experience of a Software Engineering industry job and relevant tools/practices to accelerate acclimation to a future SWE Intern or Full-Time role. Topics/Skills covered include: Git, Code Reviews, AWS basics, Design Docs, unit testing, virtual machines, etc. Students will contribute to a complex code base to simulate designing, implementing, and testing new features in a professional setting.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC389O
(Perm Req)
Special Topics in Computer Science; The Coding Interview
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department.

Technical interviewing is a critical skill for acquiring internships and jobs. Students will gain a comprehensive, practical introduction to technical interviews. Students will be introduced to basic topics such as Big O and String Manipulation and later move into more complex topics such as Graphs and Dynamic Programming. Most in-class time will be spent on mock interviews to give real interview practice. The course facilitators are experienced in interviewing and have received internship/job offers from companies like Meta, Optiver, Bloomberg, Amazon, Apple, Microsoft, Databricks, Capital One, and more.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC389P
(Perm Req)
Special Topics in Computer Science; Mastering the PM Interview
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department.

Product Management is an interesting intersection of technology and business that students are given the opportunity to learn more about in this class. Students are introduced to the tools, techniques, and resources to nail their PM (Product Management) interviews. We'll be providing hands-on practice with PM specific topics including product design, analytical, and case questions. By the end of the class, you should be acing all your PM interviews!

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC396H
(Perm Req)
Computer Science Honors Seminar
Credits: 1
Grad Meth: Reg
Prerequisite: Must have admission into Computer Science Departmental Honors Program.
Restriction: Permission of CMNS-Computer Science department.
Overview of computer science research activities, techniques, and tools. Diverse research areas will be covered, including systems, networks, artificial intelligence, human-computer interaction, software engineering, graphics, vision, and theory.
CMSC398E
(Perm Req)
Special Topics in Computer Science; Essential Data Science Skills & Techniques
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department.

Students will learn the tools and techniques needed to succeed in the field of data science. They will engage in simulations that allow them to develop SQL/R coding skills, and learn how to effectively present these findings. They will also utilize analytical thinking to solve real-world data science problems.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC398L
(Perm Req)
Special Topics in Computer Science; Introduction to Competitive Programming
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department. Covers most of the basic techniques and algorithms that are used in competitive programming. Topics include C++ STL, greedy, dynamic programming,divide and conquer, graph algorithms, and data structures. Students will learn different algorithmic techniques and apply these concepts to solve interesting programming problems in practice.
CMSC398M
(Perm Req)
Special Topics in Computer Science; Introduction to Product Design with Figma
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250 or permission of instructor; and permission of CMNS-Computer Science department

An exploration into the world of Figma! Figma is a popular collaborative design tool used by many developers for brainstorming, proof of concepts and website/application design. We will be exploring the various capabilities of Figma, and how we can create a website or mobile application from a design made on Figma. Students will learn principles of design, create mockups, and build their own website/mobile app that will look great for resumes and portfolios. Permission of department

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC398Q
(Perm Req)
Special Topics in Computer Science; Secure Communication
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250; and permission of CMNS-Computer Science department. Covers basic topics in cryptography and explains how those topics are applied to modern forms of communication. We will cover messaging protocols and modern texting apps such as iMessage, Whatsapp, Signal, and more. We will also discuss ways of communicating with other forms of media such as audio and video. Finally, time-permitting, we will discuss the basics of quantum cryptography, and where current research in that field is headed.
CMSC398R
(Perm Req)
Special Topics in Computer Science; Binary Exploitation
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission of CMNS-Computer Science department.

An introduction to exploiting common vulnerabilities in compiled applications. Topics include an overview of C, intro to x86 assembly, buffer overflows on stack and heap, format string bugs, heap exploitation, and other special topics (kernel/browser/blockchain). Students will be able to write exploits for all the bugs learned in class, and secure their own applications.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Click here to learn more about STICs.
CMSC401
Algorithms for Geospatial Computing
Credits: 3
Grad Meth: Reg
Prerequisite: GEOG276; or a minimum grade of C- in CMSC330 and CMSC351; or permission of instructor.
Cross-listed with: GEOG470.
Jointly offered with: GEOG770.
Credit only granted for: CMSC498Q, CMSC401, CMSC788I, GEOG470, GEOG498I, GEOG770, or GEOG788I.
Formerly: GEOG498I.
An introduction to fundamental geospatial objects and geometric algorithms for spatio-temporal data processing and analysis. Point data representation and analysis: spatial data models and data structures, algorithms for spatial queries, point clustering algorithms. Surface and scalar field modeling, such as terrains: raster and triangle-based models (TINs), algorithms for building and querying TINs. Algorithms for natural and urban terrain analysis: morphology computation and visibility analysis. Applications to processing and analysis of LiDAR (Light Detection And Ranging) data in the context of terrain reconstruction, urban modeling, forest management and bathymetry reconstruction for coastal data management. Road network computation and analysis: algorithms for route computation in road networks, and for road network reconstruction from GPS and satellite data.
CMSC411
(Perm Req)
Computer Systems Architecture
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330; or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Restriction: Permission of CMNS-Computer Science department.
Credit only granted for: ENEE446 or CMSC411.
Input/output processors and techniques. Intra-system communication, buses, caches. Addressing and memory hierarchies. Microprogramming, parallelism, and pipelining.
CMSC412
(Perm Req)
Credits: 4
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; and 1 course with a minimum grade of C- from (CMSC414, CMSC417, CMSC420, CMSC430, CMSC433, CMSC435, ENEE440, ENEE457).
Restriction: Permission of CMNS-Computer Science department; or must be in one of the following programs (Computer Science (Master's); Computer Science (Doctoral)).
Credit only granted for: CMSC412 or ENEE447.
A hands-on introduction to operating systems, including topics in: multiprogramming, communication and synchronization, memory management, IO subsystems, and resource scheduling polices. The laboratory component consists of constructing a small kernel, including functions for device IO, multi-tasking, and memory management.
CMSC414
(Perm Req)
Computer and Network Security
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Restriction: Permission of CMNS-Computer Science department.
Credit only granted for: CMSC414, ENEE459C, or ENEE457.
An introduction to the topic of security in the context of computer systems and networks. Identify, analyze, and solve network-related security problems in computer systems. Fundamentals of number theory, authentication, and encryption technologies, as well as the practical problems that have to be solved in order to make those technologies workable in a networked environment, particularly in the wide-area Internet environment.
CMSC416
(Perm Req)
Introduction to Parallel Computing
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; or permission of instructor.
Restriction: Permission of CMNS-Computer Science department.
Jointly offered with: CMSC616.
Credit only granted for: CMSC416, CMSC498X, CMSC616, or CMSC818X.
Formerly: CMSC498X.
Introduction to parallel computing. Topics include programming for shared memory and distributed memory parallel architectures, and fundamental issues in design, development, and performance analysis of parallel programs.
CMSC417
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Computer networks and architectures. The OSI model including discussion and examples of various network layers. A general introduction to existing network protocols. Communication protocol specification, analysis, and testing.
CMSC420
(Perm Req)
Advanced Data Structures
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Description, properties, and storage allocation functions of data structures including balanced binary trees, B-Trees, hash tables, skiplists, tries, KD-Trees and Quadtrees. Algorithms for manipulating structures. Applications from areas such as String Processing, Computer Graphics, Information Retrieval, Computer Networks, Computer Vision, and Operating Systems.
CMSC421
(Perm Req)
Introduction to Artificial Intelligence
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Introduces a range of ideas and methods in AI, varying semester to semester but chosen largely from: automated heuristic search, planning, games, knowledge representation, logical and statistical inference, learning, natural language processing, vision, robotics, cognitive modeling, and intelligent agents. Programming projects will help students obtain a hands-on feel for various topics.
CMSC422
(Perm Req)
Introduction to Machine Learning
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC320, CMSC330, and CMSC351; and 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461); and permission of CMNS-Computer Science department.
Machine Learning studies representations and algorithms that allow machines to improve their performance on a task from experience. This is a broad overview of existing methods for machine learning and an introduction to adaptive systems in general. Emphasis is given to practical aspects of machine learning and data mining.
Credit only granted for CMSC422 or CMSC498M.
CMSC423
(Perm Req)
Bioinformatic Algorithms, Databases, and Tools
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
An introduction to the main algorithms, databases, and tools used in bioinformatics. Topics may include assembly and analysis of genome sequences, reconstructing evolutionary histories, predicting protein structure, and clustering of biological data. Use of scripting languages to perform analysis tasks on biological data. No prior knowledge of biology is assumed.
CMSC424
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Students are introduced to database systems and motivates the database approach as a mechanism for modeling the real world. An in-depth coverage of the relational model, logical database design, query languages, and other database concepts including query optimization, concurrency control; transaction management, and log based crash recovery. Distributed and Web database architectures are also discussed.
CMSC425
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351.
Restriction: Permission of CMNS-Computer Science department.
An introduction to the principles and practice of computer game programming and design. This includes an introduction to game hardware and systems, the principles of game design, object and terrain modeling, game physics, artificial intelligence for games, networking for games, rendering and animation, and aural rendering. Course topics are reinforced through the design and implementation of a working computer game.
CMSC426
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351 and 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461); or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program; or permission of the instructor.
Restriction: Permission of CMNS-Computer Science department.
An introduction to basic concepts and techniques in computervision. This includes low-level operations such as image filtering and edge detection, 3D reconstruction of scenes using stereo and structure from motion, and object detection, recognition and classification.
CMSC427
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461).
Restriction: Permission of CMNS-Computer Science department.
An introduction to 3D computer graphics, focusing on the underlying building blocks and algorithms for applications such as 3D computer games, and augmented and virtual reality (AR/VR). Covers the basics of 3D image generation and 3D modeling, with an emphasis on interactive applications. Discusses the representation of 3D geometry, 3D transformations, projections, rasterization, basics of color spaces, texturing and lighting models, as well as programming of modern Graphics Processing Units (GPUs). Includes programming projects where students build their own 3D rendering engine step-by-step.
CMSC430
(Perm Req)
Introduction to Compilers
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Topics include lexical analysis, parsing, intermediate representations, program analysis, optimization, and code generation.
CMSC433
(Perm Req)
Programming Language Technologies and Paradigms
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330; or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Restriction: Permission of CMNS-Computer Science department.
Programming language technologies (e.g., object-oriented programming), their implementations and use in software design and implementation.
CMSC434
(Perm Req)
Introduction to Human-Computer Interaction
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Assess usability by quantitative and qualitative methods. Conduct task analyses, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging. Apply design processes and guidelines to develop professional quality user interfaces. Build low-fidelity paper mockups, and a high-fidelity prototype using contemporary tools such as graphic editors and a graphical programming environment (eg: Visual Basic, Java).
CMSC435
(Perm Req)
Software Engineering
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course with a minimum grade of C- from (CMSC412, CMSC417, CMSC420, CMSC430, CMSC433, ENEE447); and permission of CMNS-Computer Science department.
State-of-the-art techniques in software design and development. Laboratory experience in applying the techniques covered. Structured design, structured programming, top-down design and development, segmentation and modularization techniques, iterative enhancement, design and code inspection techniques, correctness, and chief-programmer teams. The development of a large software project.
CMSC436
(Perm Req)
Programming Handheld Systems
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351; or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Restriction: Permission of CMNS-Computer Science department.
Fundamental principles and concepts that underlie the programming of handheld systems, such as mobile phones, personal digital assistants, and tablet computers. Particular emphasis will be placed on concepts such as limited display size, power, memory and CPU speed; and new input modalities, where handheld systems differ substantially from non-handheld systems, and thus require special programming tools and approaches. Students will apply these concepts and principles in the context of an existing handset programming platform.
CMSC451
(Perm Req)
Design and Analysis of Computer Algorithms
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity. General topics include graph algorithms, basic algorithm design paradigms (such as greedy algorithms, divide-and-conquer, and dynamic programming), network flows, NP-completeness, and other selected topics in algorithms.
CMSC452
(Perm Req)
Elementary Theory of Computation
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC351; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Techniques are developed to determine the difficulty of a problem relative to a model of computation. Topics include Finite Automata, P, NP, decidability, undecidability, and communication complexity.
CMSC454
(Perm Req)
Algorithms for Data Science
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330 and CMSC351.
Restriction: Permission of CMSC-Computer Science department.
Fundamental methods for processing a high volume of data. Methods include stream processing, locally sensitive hashing, web search methods, page rank computation, network and link analysis, dynamic graph algorithms as well as methods to handle high dimensional data/dimensionality reduction.
CMSC456
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: (CMSC106, CMSC131, or ENEE150; or equivalent programming experience); and (2 courses from (CMSC330, CMSC351, ENEE324, or ENEE380); or any one of these courses and a 400-level MATH course, or two 400-level MATH courses); and Permission of CMNS-Mathematics department or permission of instructor .
Cross-listed with: MATH456, ENEE456.
Credit only granted for: MATH456, CMSC456 or ENEE456.
The theory, application, and implementation of mathematical techniques used to secure modern communications. Topics include symmetric and public-key encryption, message integrity, hash functions, block-cipher design and analysis, number theory, and digital signatures.
CMSC457
(Perm Req)
Introduction to Quantum Computing
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461, PHYS274); and 1 course with a minimum grade of C- from (CMSC351, PHYS373).
Restriction: Permission of CMNS-Computer Science department.
Additional information: No previous background in quantum mechanics is required.
An introduction to the concept of a quantum computer, including algorithms that outperform classical computation and methods for performing quantum computation reliably in the presence of noise. As this is a multidisciplinary subject, the course will cover basic concepts in theoretical computer science and physics in addition to introducing core quantum computing topics.
Cross-listed with PHYS457. Credit only granted for CMSC457 or PHYS457.
CMSC460
(Perm Req)
Computational Methods
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461); and 1 course with a minimum grade of C- from (MATH241, MATH340); and 1 course with a minimum grade of C- from (CMSC106, CMSC131); and minimum grade of C- in MATH246.
Cross-listed with: AMSC460.
Credit only granted for: AMSC460, AMSC466, CMSC460, or CMSC466.
Basic computational methods for interpolation, least squares, approximation, numerical quadrature, numerical solution of polynomial and transcendental equations, systems of linear equations and initial value problems for ordinary differential equations. Emphasis on methods and their computational properties rather than their analytic aspects. Intended primarily for students in the physical and engineering sciences.
CMSC466
(Perm Req)
Introduction to Numerical Analysis I
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461); and 1 course with a minimum grade of C- from (MATH241, MATH340); and 1 course with a minimum grade of C- from (CMSC106, CMSC131); and minimum grade of C- in MATH410.
Cross-listed with: AMSC466.
Credit only granted for: AMSC460, CMSC460, AMSC466, or CMSC466.
Floating point computations, direct methods for linear systems, interpolation, solution of nonlinear equations.
CMSC470
(Perm Req)
Introduction to Natural Language Processing
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC320, CMSC330, and CMSC351; and 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461).
Restriction: Permission of CMNS-Computer Science department.
Introduction to fundamental techniques for automatically processing and generating natural language with computers. Machine learning techniques, models, and algorithms that enable computers to deal with the ambiguity and implicit structure of natural language. Application of these techniques in a series of assignments designed to address a core application such as question answering or machine translation.
CMSC472
(Perm Req)
Introduction to Deep Learning
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- or higher in CMSC330 and CMSC351; and 1 course with a minimum grade of C- or higher from (MATH240, MATH461).
Restriction: Permission of the CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's) program.
Credit only granted for: CMSC498L or CMSC472.
Formerly: CMSC498L.
An introduction to deep learning, a machine learning technique, as well as its applications to a variety of domains. Provides a broad overview of deep learning concepts including neural networks, convolutional neural networks, recurrent neural networks, generative models, and deep reinforcement learning, and an intuitive introduction to basics of machine learning such as simple models, learning paradigms, optimization, overfitting, importance of data, and training caveats.
CMSC475
(Perm Req)
Combinatorics and Graph Theory
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course with a minimum grade of C- from (MATH240, MATH341, MATH461); and 1 course with a minimum grade of C- from (MATH241, MATH340). And permission of CMNS-Computer Science department; or permission of CMNS-Mathematics department.
Cross-listed with MATH475 .
General enumeration methods, difference equations, generating functions. Elements of graph theory, matrix representations of graphs, applications of graph theory to transport networks, matching theory and graphical algorithms.
CMSC477
(Perm Req)
Robotics Perception and Planning
Credits: 3
Grad Meth: Reg
Prerequisite: 1 course from (MATH240, MATH341, MATH461); and (ENEE467 or CMSC420).
Restriction: Must be in the Robotics and Autonomous Systems minor; and permission of Computer Science department.
A hands-on introduction to perception and planning for robotics, including rigid body transformations and rotations, dynamics and control of mobile robots/drones, graph based and sampling based planning algorithms, Bayseian and Kalman filtering, camera models and calibration, projective geometry, visual features, optical flow, pose estimation, RANSAC and Hough transform, structure from motion, visual odometry, machine learning basics, visual recognition and learning.
CMSC498A
(Perm Req)
Selected Topics in Computer Science
Credits: 1 - 3
Grad Meth: Reg
An individualized course designed to allow a student or students to pursue a selected topic not taught as a part of the regular course offerings under the supervision of a Computer Science faculty member. Credit according to work completed.
Contact department for information to register for this course.
CMSC498C
(Perm Req)
Selected Topics in Computer Science; Blockchains, Applied Cryptography, and Cryptocurrency
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330, CMSC351, and CMSC414 or CMSC456 Topics include blockchains ranging from fundamentals like consensus, to privacy-preserving payments, smart contracts, and decentralized finance(DeFi). The course will also cover recent developments in appliedcryptography that are in increasing industrial usage such as zero-knowledge proofs and a small amount on multi-party computation and fully homomorphic encryption. It will look at what it takes to take these technologies from academic theory to real-world usage.
CMSC498F
(Perm Req)
Selected Topics in Computer Science; Advances in XR
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC330, CMSC351, and CMSC425 or CMSC427. Credit only granted for CMSC498F, CMSC838C, or ENEE759N.

AR, VR, and MR, collectively referred to as XR, are becoming ubiquitous for human-computer interaction with limitless applications and potentialuse. This course examines advances on real-time multi-modal XR systems in which the user is 'immersed' in and interacts with a simulated 3D environment. The topics will include display, modeling, 3D graphics, haptics, audio, locomotion, animation, applications, immersionand presence. Prerequisite: Minimum grade of C- in CMSC330, CMSC351, and CMSC425 or CMSC427.
CMSC498Y
(Perm Req)
Selected Topics in Computer Science; Statistical Inference and Machine Learning Methods for Genomics Data
Credits: 3
Grad Meth: Reg
Prerequisites: Minimum grade of C- in CMSC351 and minimum grade of C- in any STAT400-level course; or DATA400; or ENEE324.

Covers statistical inference and machine learning methods for analyzing genomic data. Examples of topics covered will include maximum likelihood(including composite and pseudo-likelihood functions), expectation-maximization, clustering algorithms, hidden markov models, statistical testing, MCMC and variational inference. Our focus will be on how these techniques are utilized to solve biological problems and the practical challenges that arise when analyzing large genomic data sets.
CMSC499A
(Perm Req)
Independent Undergraduate Research
Credits: 1 - 3
Grad Meth: Reg
Students are provided with an opportunity to participate in a computer science research project under the guidance of a faculty advisor. Format varies. Students and supervising faculty member will agree to a research plan which must be approved by the department. As part of each research plan, students should produce a final paper delineating their contribution to the field.
Contact department for information to register for this course.
CMSC616
Foundations of Parallel Computing
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC411 and CMSC412; or permission of instructor.
Restriction: Must be in the Computer Science or Applied Mathematics and Scientific Computation master's or doctoral programs.
Credit only granted for: CMSC616 or CMSC818X.
Formerly: CMSC818X.
Covers the foundations of parallel computing. Topics include programming for shared memory and distributed memory parallel architectures, and fundamental issues in design, development and analysis of parallel programs.
CMSC624
Database System Architecture and Implementation
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC424; or students who have taken courses with comparable content may contact the department.
Credit only granted for: CMSC624 or CMSC828N.
Formerly: CMSC828N.
In-depth overview of database architectures--both the mainstream traditional architecture and more modern architectures that are especially prevalent in cloud implementations. Topics include different architectural choices for different application spaces and the tradeoffs inherent in choices and building different parts of database systems.
CMSC651
Analysis of Algorithms
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC451.
Efficiency of algorithms, orders of magnitude, recurrence relations, lower-bound techniques, time and space resources, NP-complete problems, polynomial hierarchies, and approximation algorithms. Sorting, searching, set manipulation, graph theory, matrix multiplication, fast Fourier transform, pattern matching, and integer and polynomial arithmetic.
CMSC661
(Perm Req)
Scientific Computing II
Credits: 3
Grad Meth: Reg
Prerequisite: Must have knowledge of Matlab or Python. Must have basic knowledge of ordinary and partial differential equations (MATH246 and MATH462 or equivalent, or permission of instructor).
Cross-listed with: AMSC661.
Credit only granted for: AMSC661 or CMSC661.
Numerical methods for solving ordinary and partial differential equations (elliptic, parabolic, hyperbolic, and dispersive): motivation, analysis, and implementation. Finite difference methods, finite element methods, Fourier and Chebyshev spectral methods, and meshless methods.
CMSC701
Computational Genomics
Credits: 3
Grad Meth: Reg, Aud
An introduction to the algorithms and heuristics used in the analysis of biological sequences. Includes an introduction to string matching and alignment algorithms, phylogenetic analysis, string reconstruction (genome assembly), and sequence pattern recognition (gene and motif finding). A particular emphasis will be placed on the design of efficient algorithms and on techniques for analyzing the time and space complexity of these algorithms. Computational concepts will be presented in the context of current biological applications. No prior knowledge of biology necessary.
CMSC711
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC412; or students who have taken courses with comparable content may contact the department.
Priciples, design, and performance evaluation of computer networks. Network architectures including the ISO model and local area networks (LANs). Communication protocols and network topology.
CMSC720
Foundations of Deep Learning
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC422 or equivalent; or permission of instructor.
Restriction: Must be in the Computer Science, Electrical and Computer Engineering, or Mathematics master's or doctoral programs; or permission of instructor.
Credit only granted for: CMSC720 or CMSC828W.
Formerly: CMSC828W.
Explore empirically-relevant theoretical foundations of deep learning (DL). Topics include DL optimization, DL generalization, Neural Tangent Kernels, Deep Generative Models (GANs, Diffusion, LLMs), DL Robustness, DL Interpretability, Domain Adaptation and Generalization, Self-Supervised Learning, Deep Reinforcement Learning.
CMSC733
Computer Processing of Pictorial Information
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC420.
Input, output, and storage of pictorial information. Pictures as information sources, efficient encoding, sampling, quantization, approximation. Position-invariant operations on pictures, digital and optical implementations, the pax language, applications to matched and spatial frequency filtering. Picture quality, image enhancement and image restoration. Picture properties and pictorial pattern recognition. Processing of complex pictures; figure extraction, properties of figures. Data structures for pictures description and manipulation; picture languages. Graphics systems for alphanumeric and other symbols, line drawings of two- and three-dimensional objects, cartoons and movies.
CMSC764
Advanced Numerical Optimization
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: MATH410 or equivalent; or permission of instructor.
Credit only granted for: AMSC607, AMSC764, or CMSC764.
Modern numerical methods for solving unconstrained and constrained nonlinear optimization problems in finite dimensions. Design of computational algorithms and the analysis of their properties.
CMSC798
(Perm Req)
Master's Non-Thesis Research
Credits: 1 - 3
Grad Meth: Reg
Contact department for information to register for this course.
CMSC799
(Perm Req)
Master's Thesis Research
Credits: 1 - 6
Grad Meth: S-F
Contact department for information to register for this course.
CMSC800
How to Conduct Great Research
Credits: 1
Grad Meth: S-F, Aud
Restriction: Must be in the Computer Science doctoral program.
Credit only granted for: CMSC798F or CMSC800.
Formerly: CMSC798F.
Develop research skills so as to promote high quality and high impact.
CMSC818G
Advanced Topics in Computer Systems; Information-Centric Design of Systems
Credits: 3
Grad Meth: Reg, Aud
CMSC818R
Advanced Topics in Computer Systems
Credits: 3
Grad Meth: Reg, Aud
CMSC828A
Advanced Topics in Information Processing; Fantastic Machine Learning Paradigms and Where to use Them
Credits: 3
Grad Meth: Reg, Aud
There exist so many machine learning paradigms, like isolated villages hidden in a jungle. But how do they differ from each other? How can we relate them? What are their fundamental assumptions, formulations, and motivations? Where to use them? How to formulate your problem into one of them, or, when and how to create your own learning paradigms? In this course, we will take an in-depth tour in the jungle of machine learning paradigms.
CMSC828J
Advanced Topics in Information Processing; Common-sense Reasoning and Natural Language Understanding
Credits: 3
Grad Meth: Reg, Aud
CMSC838C
Advanced Topics in Programming Languages; Advances in XR
Credits: 3
Grad Meth: Reg, Aud
Cross-listed with ENEE759N. Credit only granted for CMSC838C, CMSC498F, or ENEE759N.

AR, VR, and MR, collectively referred to as XR, are becoming ubiquitous for human-computer interaction with limitless applications and potentialuse. This course examines advances on real-time multi-modal XR systems in which the user is 'immersed' in and interacts with a simulated 3D environment. The topics will include display, modeling, 3D graphics, haptics, audio, locomotion, animation, applications, immersionand presence.
CMSC838L
Advanced Topics in Programming Languages; Programming Languages and Computer Architecture
Credits: 3
Grad Meth: Reg, Aud
Prerequisites: Successful completion of a compiler course (CMSC430 or equivalent) and a computer organization/architecture (CMSC 411 or equivalent) is strongly recommended. Exploration of the interplay between computer architecture and programming languages, with a focus on applying PL formalisms and techniques to emerging computer architecture research. The course is structured into three parts: 1) Topics in various non-traditional computer architectures and computing paradigms (including dataflow processing, intermittent computing, persistent memory, reconfigurable architectures,etc.); 2) Programming languages *for* computer architecture (including design of hardware description languages and high-level synthesis languages, etc.); 3) Problems of end-to-end correctness guarantees (including verified and secure compilation, full-stack correctness proofs, etc.)
CMSC839A
Advanced Topics in Human-Computer Interaction; Embodied Media Design
Credits: 3
Grad Meth: Reg, Aud
Exploration of the potential of human augmentation technologies, such as wearable computing, haptics, virtual reality, and more, to enhance human physical, psychological, and cognitive capabilities. Students willread relevant literature from the fields of Psychology and Human-Computer Interaction. Additionally, students will create low-fidelity paper mockups and a prototype using contemporary tools, such as an open-sourcehardware platform and a programming environment.
CMSC848B
Selected Topics in Information Processing; Computational Imaging
Credits: 3
Grad Meth: Reg, Aud
CMSC848G
Selected Topics in Information Processing; Selected Topics in Machine Learning
Credits: 3
Grad Meth: Reg, Aud
CMSC848J
Selected Topics in Information Processing; Cognitive Robotics
Credits: 3
Grad Meth: Reg, Aud
Prerequisites: Successful completion (minimum grade of C-) in CMSC351, CMSC420, and CMSC330, as well as one course from (MATH240, MATH341, MATH461); and permission of the CMNS-Computer Science department. This course is open to Master's or Doctoral students in Computer Science, Electrical and Computer Engineering, or Mechanical Engineering programs.

Cognitive Robotics explores the application of human cognitive intelligence to the design and development of intelligent robots. The course delves into the fundamental principles of human cognitive intelligence and its integration with robotics and machine learning. Students will learn to develop cognitive robot learning architectures and implement them using simulators like Pybullet, NVIDA Issac-Gym, and Meta Habitat 2.0. Through engaging class projects, students will apply their newly acquired knowledge to solve novel, challenging and practically useful problems, enabling them to make meaningful contributions to the field. This unique opportunity to bridge the gap between cognitive science and robot learning that empowers students to develop smarter andand more capable robotic systems.
CMSC858G
Advanced Topics in Theory of Computing; Quantum Error Correction and Fault-Tolerance
Credits: 3
Grad Meth: Reg, Aud
CMSC858N
Advanced Topics in Theory of Computing; Scalable Parallel Algorithms and Data Structures
Credits: 3
Grad Meth: Reg, Aud
CMSC858O
Advanced Topics in Theory of Computing; The Foundation of End-to-End Quantum Applications
Credits: 3
Grad Meth: Reg, Aud
CMSC898
Pre-Candidacy Research
Credits: 1 - 8
Grad Meth: Reg
Contact department for information to register for this course.
CMSC899
(Perm Req)
Doctoral Dissertation Research
Credits: 6
Grad Meth: S-F
Contact department for information to register for this course.