Hide Advanced Options
Courses - Spring 2021
CMSC
Computer Science Department Site
CMSC122
Introduction to Computer Programming via the Web
Credits: 3
Grad Meth: Reg, P-F, Aud
CORE: IE
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.
CMSC131
Object-Oriented Programming I
Credits: 4
Grad Meth: Reg, P-F
Corequisite: MATH140.
Credit only granted for: CMSC131 or IMDM127.
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, P-F
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.
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.
CMSC216
(Perm Req)
Introduction to Computer Systems
Credits: 4
Grad Meth: Reg, P-F
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, P-F
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, P-F
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, P-F
Prerequisite: Minimum grade of C- in CMSC216 and CMSC250.
Restriction: Permission of CMNS-Computer Science department.
Credit only granted for: STAT426 or CMSC320.
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, P-F
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.
CMSC351
(Perm Req)
Credits: 3
Grad Meth: Reg, P-F
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.
Credit only granted for: CMSC251 or CMSC351.
Additional information: CMSC351 may not count as one of the required upper level CMSC courses for students who are required to have 24 upper level CMSC credits for graduation, i.e. for students who became computer science majors prior to Fall, 2002.
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 with Python and Flask
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.

Students are introduced to building secure, full-stack web applications with Python and Flask. Different types of security vulnerabilities and best practices to patch in students own applications will be examined.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Please click here for more information.
CMSC388U
(Perm Req)
Special Topics in Computer Science; Itroduction to Ethical Hacking (Hack the Class)
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC388V
(Perm Req)
Special Topics in Computer Science; A Modular Approach to Audio Programming
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC388W
(Perm Req)
Special Topics in Computer Science; Usability of Programming Languages
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.

Programming languages are designed to help programmers and software engineers achieve their goals. In this course, we will study how to design and evaluate programming languages in a user-centered way. We will start by studying techniques for gathering insights about users, and then we will read and discuss papers investigating major questions in the area: how do types help programmers? How can we analyze a programming language or other notation for usability? This course prepares students for research projects investigating how to make programming languages that help more people write better software.
CMSC389B
(Perm Req)
Special Topics in Computer Science; A Tour of Programming Languages
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC389E
(Perm Req)
Special Topics in Computer Science; Digital Logic Design through Minecraft
Credits: 1
Grad Meth: Reg, P-F
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.

Explores the fundamentals of digital logic design using Minecraft's Redstone. Using the low-level and intuitive visualization of circuitry Redstone provides, you will create a series of projects that apply principles of digital logic design learned in class.

A student-led course through Student-Initiated Courses (STICs) @ UMD: http://stics.umd.edu/ Please click here for more information.
CMSC389N
(Perm Req)
Special Topics in Computer Science; Introduction to PHP & Javascript
Credits: 3
Grad Meth: Reg, P-F
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission of CMNS-Computer Science department.
CMSC389O
(Perm Req)
Special Topics in Computer Science; The Coding Interview
Credits: 1
Grad Meth: Reg, P-F, Aud
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC389P
(Perm Req)
Special Topics in Computer Science; Mastering the PM Interview
Credits: 1
Grad Meth: Reg, P-F, Aud
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC389V
(Perm Req)
Special Topics in Computer Science; Ethics of Artificial Intelligence and Machine Learning
Credits: 1
Grad Meth: Reg, P-F, Aud
Prerequisites: Minimum grade of C- in CMSC250 and CMSC216.
CMSC396H
(Perm Req)
Computer Science Honors Seminar
Credits: 1
Grad Meth: Reg, P-F
Prerequisite: Must have admission into Computer Science Departmental Honors Program.
Restriction: Permission of CMNS-Computer Science department.
Credit only granted for: CMSC297 or CMSC396.
Formerly: CMSC297.
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.
CMSC411
(Perm Req)
Computer Systems Architecture
Credits: 3
Grad Meth: Reg, P-F
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, P-F
CORE: CS
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, P-F
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.
CMSC417
(Perm Req)
Credits: 3
Grad Meth: Reg, P-F
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, P-F
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, P-F
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, P-F
Prerequisite: Minimum grade of C- in CMSC320, CMSC330, and CMSC351; and 1 course with a minimum grade of C- from (MATH240, 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, P-F
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, P-F
CORE: CS
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, P-F
Prerequisite: Minimum grade of C- in CMSC420.
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, P-F
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.
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.
CMSC430
(Perm Req)
Introduction to Compilers
Credits: 3
Grad Meth: Reg, P-F
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, P-F
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, P-F
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, P-F
CORE: CS
Prerequisite: 1 course with a minimum grade of C- from (CMSC412, CMSC417, CMSC420, CMSC430, CMSC433); and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
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, P-F
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.
Course will be based on the iOS platform. Students must have access to a Macintosh computer to participate in this course.
CMSC451
(Perm Req)
Design and Analysis of Computer Algorithms
Credits: 3
Grad Meth: Reg, P-F
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, P-F
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.
CMSC456
(Perm Req)
Credits: 3
Grad Meth: Reg, P-F
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). Or permission of instructor.
Also offered as: 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, P-F
Prerequisite: 1 course with a minimum grade of C- from (MATH240, 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, P-F
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.
Also offered as: 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, P-F
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.
Also offered as: 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, P-F
Prerequisite: Minimum grade of C- in CMSC320, CMSC330, and CMSC351; and 1 course with a minimum grade of C- from (MATH240, 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, P-F, Aud
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, P-F
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.
CMSC498A
(Perm Req)
Selected Topics in Computer Science
Credits: 1 - 3
Grad Meth: Reg, P-F
Contact department for information to register for this course.
CMSC498Q
(Perm Req)
Selected Topics in Computer Science; Algorithms for Geospatial Computing
Credits: 3
Grad Meth: Reg, P-F, Aud
Cross-listed with GEOG498I and GEOG788I. Credit only granted for GEOG498I, CMSC498Q, or GEOG788I.

Geometric primitives and algorithms for discrete and continuous spatial data processing. Point data representation and analysis: spatial data structures, neighbor finding and range queries, clustering algorithms. Terrain modeling: grids and triangle meshes, algorithms and data structures for building and querying triangulated terrain models. Terrain analysis: segmentation through watershed computation, algorithms for visibility computation. Applications to LiDAR data processing and analysis for terrain reconstruction, urban modeling, forest management and coastal areas modeling. Algorithms for road network analysis and reconstruction from GPS and satellite images.
CMSC499A
(Perm Req)
Independent Undergraduate Research
Credits: 1 - 3
Grad Meth: Reg, P-F
Contact department for information to register for this course.
CMSC614
Computer and Network Security
Credits: 3
Grad Meth: Reg, Aud
Recommended: Knowledge of C programming.
Restriction: Must be in the Computer Science Master's or Doctoral programs.
Credit only granted for: CMSC818O or CMSC614.
Formerly: CMSC818O.
Advanced topics in computer and network security, including: anonymity, privacy, memory safety, malware, denial of service attacks, trusted hardware, security design principles, and empirically measuring security "in the wild". This will be a largely paper-driven course (there is no textbook), preparing students for research in (or around) the broad area of security. Students will gain first-hand experience launching attacks in controlled environments. The bulk of the grade will be based on a final, semester-long group project.
CMSC661
(Perm Req)
Scientific Computing II
Credits: 3
Grad Meth: Reg
Prerequisite: Must have knowledge of C or Fortran. And CMSC466, AMSC466, AMSC460, or CMSC460; or (must have knowledge of basic numerical analysis (linear equations, nonlinear equations, integration, interpolation); and permission of instructor).
Cross-listed with AMSC66 1.
Credit only granted for: AMSC661 or CMSC661.
Fourier and wavelet transform methods, numerical methods for elliptic partial differential equations, numerical linear algebra for sparse matrices, Finite element methods, numerical methods for time dependent partial differential equations. Techniques for scientific computation with an introduction to the theory and software for each topic. Course is part of a two course sequence (660 and 661), but can be taken independently.
CMSC664
(Perm Req)
Advanced Scientific Computing II
Credits: 3
Grad Meth: Reg
Prerequisite: AMSC663 or CMSC663.
Restriction: Permission of instructor.
Cross-listed with AMSC664.
Credit only granted for: AMSC664 or CMSC664.
In the sequence Advanced Scientific Computing I & Advanced Scientific Computing II, (AMSC663/CMSC663 and AMSC664/CMSC664, respectively) students work on a year-long individual project to develop software for a scientific task in a high performance computing environment. Lectures will be given on available computational environments, code development, implementation of parallel algorithms.
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.
CMSC714
High Performance Computing Systems
Credits: 3
Grad Meth: Reg, Aud, S-F
Prerequisite: CMSC411 and CMSC412; or permission of instructor.
Slected topics in high-performance systems, including contemporary architectures, interconnection topologies, shared memory and message-passing systems, multi-threaded kernels, latency avoidance and hiding techniques, methods for data and workload partitioning performance profiling, debugging.
CMSC722
Artificial Intelligence Planning
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC421; or students who have taken courses with comparable content may contact the department; or permission of CMNS-Computer Science department.
Automated planning of actions to accomplish some desired goals. Basic algorithms, important systems, and new directions in the field of artificial intelligence planning systems.
CMSC723
Computational Linguistics I
Credits: 3
Grad Meth: Reg, Aud, S-F
Prerequisite: CMSC421 or CMSC422; or students who have taken courses with comparable content may contact the department; or permission of instructor.
Cross-listed with: INST735, LING723.
Credit only granted for: CMSC723, LING723, or INST735.
Additional information: CMSC students may only receive PhD Comp. credit for CMSC723 or CMSC823, not both.
Fundamental methods in natural language processing. Topics include: finite-state methods, context-free and extended context-free models of syntax; parsing and semantics interpretation; n-gram and Hidden Markov models, part-of-speech tagging; natural language applications such as machine translation, automatic summarization, and question answering.
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.
CMSC740
Advanced Computer Graphics
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: MATH240 and CMSC420; or permission of instructor.
An introduction to the principles of computer graphics. Includes an introduction to graphics displays and systems, introduction to the mathematics of affine and projective transformations, perspective, curve and surface modeling, algorithms for hidden-surface removal, color models, methods for modeling illumination, shading, and reflection.
CMSC764
Advanced Numerical Optimization
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: MATH410; or permission of instructor. Jointly offered wit h AMSC607.
Credit only granted for: AMSC607 or CMSC764.
Formerly: CMSC878O.
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.
CMSC798F
Master's Non-Thesis Research
Credits: 1 - 3
Grad Meth: Reg, Aud, S-F
CMSC799
(Perm Req)
Master's Thesis Research
Credits: 1 - 6
Grad Meth: S-F
Contact department for information to register for this course.
CMSC818G
Advanced Topics in Computer Systems; Information-Centric Design of Systems
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC828D
Advanced Topics in Information Processing; Introduction to Data Visualization
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC828E
Advanced Topics in Information Processing; Privacy and Ethics in Data Management Systems
Credits: 1 - 3
Grad Meth: Reg, Aud, S-F
CMSC828F
Advanced Topics in Information Processing; Computational Psycholinguistics
Credits: 3
Grad Meth: Reg, Aud
Cross-listed with LING849C and NACS728W. Credit only granted for LING849C, CMSC828F, or NACS728W.
CMSC828I
Advanced Topics in Information Processing; Multilingual Natural Language Processing
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC828L
Advanced Topics in Information Processing; AI and Existential Threats to Civilization
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC828M
Advanced Topics in Information Processing; Applied Mechanism Design for Social Good
Credits: 3
Grad Meth: Reg, Aud
CMSC828O
Advanced Topics in Information Processing; Computational and Mathematical Analysis for Networks Across Scales
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC828R
(Perm Req)
Advanced Topics in Information Processing; Deep Learning for Audio-to-Audio Processing
Credits: 1 - 3
Grad Meth: Reg, Aud, S-F
Seminar course reviewing current literature and opportunities in enhancing audio-to-audio and photo-to-photo transformations using deep learning architectures, with the goal of making the output perceptually pleasing for consumption by humans. Student must participate in all classes and lead the discussion in one class.

Those taking for 3 credits must fulfill these requirements plus a project lasting at least half the semester, where a suitable algorithm is evaluated and written up in the form of a paper.
CMSC828T
Advanced Topics in Information Processing; Sorting in Space and Words and Foundations of Multidimensional and Metric Data Structures
Credits: 1 - 3
Grad Meth: Reg, Aud, S-F
CMSC838E
Advanced Topics in Programming Languages; Compiler Construction
Credits: 3
Grad Meth: Reg, Aud
CMSC858M
Advanced Topics in Theory of Computing; Algorithmic Lower Bounds: Fun with Hardness Proofs
Credits: 3
Grad Meth: Reg, Aud, S-F
CMSC858Q
Advanced Topics in Theory of Computing; Quantum Algorithms
Credits: 3
Grad Meth: Reg, Aud, S-F
This course assumes a good working knowledge of linear algebra and abstract algebra, as well as concepts in quantum information at the level of CMSC657. You are encouraged to consult with the instructor if you are unsure whether you are prepared to take the course.
CMSC858T
Advanced Topics in Theory of Computing; Introduction to Secure Distributed Computation
Credits: 3
Grad Meth: Reg, Aud, S-F
This course is an introduction to secure distributed computation (broadly construed), primarily intended for graduate students interested in research in this or related areas. Topics will include secure computation, oblivious RAM, differential privacy, SNARKs, and consensus/blockchain protocols. The course will emphasize definitions, foundations, and formal proofs of security, though no prior background in cryptography will be assumed.
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.