Hide Advanced Options
Courses - Spring 2018
CMSC
Computer Science Department Site
CMSC122
Introduction to Computer Programming via the Web
Credits: 3
Grad Meth: Reg
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: CMSC122 or CMSC198N.
Formerly: CMSC198N.
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
(Perm Req)
Object-Oriented Programming I
Credits: 4
Grad Meth: Reg
Corequisite: MATH140; and permission of CMNS-Computer Science department.
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
(Perm Req)
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 permission of the department based on satisfactory performance on the department placement exam; and minimum grade of C- in MATH140; and permission of CMNS-Computer Science department.
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.
CMSC132A
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 permission of the department based on satisfactory performance on the department placement exam; and minimum grade of C- in MATH140; and permission of CMNS-Computer Science department.
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.
CMSC132H
Object-Oriented Programming II
Credits: 4
Grad Meth: Reg, P-F, Aud
Prerequisite: Minimum grade of C- in CMSC131; or must have earned a score of 5 on the A Java AP exam. Or permission of the department based on satisfactory performance on the department placement exam; and minimum grade of C- in MATH140; and permission of CMNS-Computer Science department.
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
Prerequisite: Minimum grade of C- in CMSC132; and minimum grade of C- in MATH141.
Corequisite: CMSC250.
Credit only granted for: CMSC212, (CMSC213 and CMSC313), or CMSC216.
Machine representation of data including integers and floating point. Modern computer architectural features and their interaction with software (registers, caches). Interaction between user programs and the OS: system class, process, and thread management. Optimizing software to improve runtime performance using both compilers and hand turning.
CMSC216H
(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.
Corequisite: CMSC250.
Credit only granted for: CMSC212, (CMSC213 and CMSC313), or CMSC216.
Machine representation of data including integers and floating point. Modern computer architectural features and their interaction with software (registers, caches). Interaction between user programs and the OS: system class, process, and thread management. Optimizing software to improve runtime performance using both compilers and hand turning.
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: Permission of CMNS-Computer Science department.
Formerly: CMSC150.
Fundamental mathematical concepts related to computer science, includin 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.
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.
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; and permission of CMNS-Computer Science department.
The semantics of programming languages and their run-time organization. Several different models of languages are discussed, including procedural (e.g., C, Pascal), functional (e.g., ML, LISP), rule-based (e.g., Prolog), and object-oriented (e.g., C++, Smalltalk). Run-time structures, including dynamic versus static scope rules, storage for strings, arrays, records, and object inheritance are explored.
CMSC351
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission of CMNS-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.
CMSC389C
(Perm Req)
Special Topics in Computer Science; Bitcoin and Other Cryptocurrencies
Credits: 1
Grad Meth: Reg
Prerequisite: CMSC216 and CMSC250 with a grade of C- or better. Restriction: Permission of CMSN-Computer Science department.

This course provides a comprehensive, practical introduction to the the technology behind cryptocurrency and the economy surrounding it. This course will have a heavy emphasis on Bitcoin, but will touch on other types of cryptocurrency as well. This course is primarily intended to focus on the technological aspect of cryptocurrency, but we will also spend time discussing the economics of cryptocurrency.
CMSC389E
(Perm Req)
Special Topics in Computer Science; Digital Logic Design through Minecraft
Credits: 1
Grad Meth: Reg
Prerequisite: CMSC216 and CMSC250 with a grade of C- or better. Restriction: Permission of CMSN-Computer Science department.

This class 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.
CMSC389K
(Perm Req)
Special Topics in Computer Science; Full-stack Web Development with Node.js
Credits: 1
Grad Meth: Reg
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission of CMNS-Computer Science department.
CMSC389L
(Perm Req)
Special Topics in Computer Science; Practical Cloud Computing with AWS
Credits: 1
Grad Meth: Reg
Prerequisite: CMSC216 and CMSC330 with a grade of C- or better. Restriction: Permission of CMSN-Computer Science department.

Students are provided with a practical and project- oriented introduction to cloud computing with Amazon Web Services (AWS). They will learn how to build applications using a variety of AWS services, including S3, EC2, Lambda, and Beanstalk. Culminating with a final resume-worthy project that will be built, deployed, and demoed to the class.
CMSC389M
Special Topics in Computer Science; SLAM: Why Robots Don't Crash
Credits: 1
Grad Meth: Reg
Prerequisite: CMSC216 and CMSC250 with a grade of C- or better. Restriction: Permission of the CMNS-Computer Science Department.

Students will be provided with a practical and lightly theoretical understanding of the most popular algorithms that solve the Simultaneous Localization and Mapping (SLAM) problem to enable self driving car technology. An emphasis will be placed on the probabilistic methods that underpin the SLAM problem.
CMSC389N
(Perm Req)
Special Topics in Computer Science; Introduction to PHP & Javascript
Credits: 3
Grad Meth: Reg
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
Prerequisite: CMSC216 and CMSC250 with a grade of C- or better. Students will be provided with a comprehensive, practical introduction to technical interviews. Starting with basic topics such as Big O and String Manipulation. We will then move into more complex topics such as Bit Manipulation and Dynamic Programming. Most of the classes will be "In-Class Interviews" and take-home assignments will simulate real interview settings.
CMSC389R
(Perm Req)
Special Topics in Computer Science; Introduction to Ethical Hacking
Credits: 1
Grad Meth: Reg
Prerequisite: CMSC216 and CMSC250 with a grade of C- or better. An introduction to ethical hacking geared towards entering the competitive world of cybersecurity Capture the Flag (CTF) competitions. Applications to a career in digital forensics, penetration testing, cryptology, and secure software development.
CMSC390
(Perm Req)
Credits: 3
Grad Meth: Reg
Restriction: Must be admitted to the Computer Science Honors Program.
Special study or research directed toward preparation of honors paper.
Contact department for information to register for this course.
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.
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
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)
Operating Systems
Credits: 4
Grad Meth: Reg
CORE: CS
Prerequisite: 1 course with a minimum grade of C- from (CMSC414, CMSC417, CMSC420, CMSC430, CMSC433, CMSC435, ENEE440).
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.
CMSC417
(Perm Req)
Computer Networks
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)
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 of data structures including lists and trees. Algorithms for manipulating structures. Applications from areas such as data processing, information retrieval, symbol manipulation, 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.
Areas and issues in artificial intelligence, including search, inference, knowledge representation, learning, vision, natural languages, expert systems, robotics. Implementation and application of programming languages (e.g. LISP, PROLOG, SMALLTALK), programming techniques (e.g. pattern matching, discrimination networks) and control structures (e.g. agendas, data dependencies).
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, 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)
Database Design
Credits: 3
Grad Meth: Reg
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)
Game Programming
Credits: 3
Grad Meth: Reg
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)
Computer Vision
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.
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)
Computer Graphics
Credits: 3
Grad Meth: Reg
Prerequisite: MATH240; and minimum grade of C- in CMSC420; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
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.
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
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.
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 sorting, selection, graph algorithms, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming and greedy algorithms), lower bounds and NP-completeness.
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.
Alternative theoretical models of computation, types of automata, and their relations to formal grammars and languages.
CMSC456
(Perm Req)
Credits: 3
Grad Meth: Reg
Prerequisite: (any two 400-level MATH courses; or (CMSC351 and CMSC330)); and permission of CMNS-Computer Science department. Or must be a CMSC graduate student.
Also offered as: MATH456.
Credit only granted for: CMSC456 or MATH456.
Importance in protecting data in communications between computers. The subject lies on the border between mathematics and computer science. Mathematical topics include number theory and probability, and computer science topics include complexity theory.
CMSC457
(Perm Req)
Introduction to Quantum Computing
Credits: 3
Grad Meth: Reg
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.
Also offered as PHYS457. Credit only granted for CMSC457 or CMSC457.
CMSC460
(Perm Req)
Computational Methods
Credits: 3
Grad Meth: Reg
Prerequisite: MATH240 and MATH241; and (CMSC106 or CMSC131); and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
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
Prerequisite: MATH240 and MATH241; and (CMSC106 or CMSC131); and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Also offered as: AMSC466.
Credit only granted for: AMSC460, AMSC466, CMSC460, or CMSC466.
Floating point computations, direct methods for linear systems, interpolation, solution of nonlinear equations.
CMSC475
(Perm Req)
Combinatorics and Graph Theory
Credits: 3
Grad Meth: Reg
Prerequisite: MATH240 and MATH241; and permission of CMNS-Computer Science department. Or must be in the (Computer Science (Doctoral), Computer Science (Master's)) program.
Also offered as: 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
Contact department for information to register for this course.
CMSC498M
(Perm Req)
Selected Topics in Computer Science; Machine Learning
Credits: 3
Grad Meth: Reg
Prerequisite: ENEE324 or STAT400, Programming skills in Matlab, C+, or Python. Restriction: permission of Electrical & Computer Engineering Department. Credit only granted for CMSC422 or CMSC498M.

Students taking the course as CMSC498M must have completed CMSC330 and CMSC351 with a minimum grade of C-.

A broad introduction to machine learning and statistical pattern recognition. Topics include: Supervised learning (Bayesian learning and classifier, parametric/non-parametric learning, discriminant functions, support vector machines, neural networks, deep learning networks); Unsupervised learning (clustering, dimensionality reduction, autoencoders). The course will also discuss recent applications of machine learning, such as computer vision, data mining, autonomous navigation, and speech recognition.
CMSC498R
(Perm Req)
Selected Topics in Computer Science; Introduction to Cryptology
Credits: 3
Grad Meth: Reg
Prerequisites:Any two 400-level MATH courses; or (CMSC351 and CMSC330); or (ENEE322 and ENEE380). Credit only granted for: ENEE459E, CMSC456, CMSC489R, or MATH456. Over the past two decades, cryptography has become a highly relevant field: In addition to military and national security applications, cryptography is currently being used in critical financial, legal, and and social applications. The aim of cryptography is to construct efficient schemes that allow parties to interact to implement some functionality, even when some subset of parties are malicious and behave adversarially. In contrast to the classical approach based on heuristics and ad-hoc solutions, modern cryptography aims for specific, rigorous security guarantees based on precise mathematical definitions and provably secure protocols.
CMSC498Z
(Perm Req)
Selected Topics in Computer Science; Information-Centric Design of 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.
CMSC499A
(Perm Req)
Independent Undergraduate Research
Credits: 1 - 3
Grad Meth: Reg
Contact department for information to register for this course.
CMSC630
Foundations of Software Verification
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC330; or students who have taken courses with comparable content may contact the department; or permission of instructor.
Topics in program verification. Operational semantics of programs. Preconditions and postconditions. Axiomatic proof systems and predicate transformers. Temporal logic and model checking. Process algebra, semantic equivalences and algebraic reasoning.
CMSC642
Big Data Systems
Credits: 3
Grad Meth: Reg
Restriction: Must be in the Data Science Post-Baccalaureate Certificate of Professional Studies program; and permission of CMNS-Computer Science department.
An overview of data management systems for performing data science on large volumes of data, including relational databases, and NoSQL systems. The topics covered include: different types of data management systems, their pros and cons, how and when to use those systems, and best practices for data modeling.
CMSC644
Algorithms for Data Science
Credits: 3
Grad Meth: Reg
Restriction: Must be in the Data Science Post-Baccalaureate Certificate of Professional Studies program; and permission of CMNS-Computer Science department.
Provides an in-depth understanding of some of the key data structures and algorithms essential for advanced data science. Topics include random sampling, graph algorithms, network science, data streams, and optimization.
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
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).
Also offered as: AMSC661.
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: CMSC663.
Restriction: Permission of instructor.
Also offered as: AMSC664.
Credit only granted for: AMSC664, or CMSC664.
In the sequence CMSC 663, CMSC 664 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 code development and validation, parallel algorithms for partial differential equations, nonlinear systems, optimization.
CMSC711
Computer Networks
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.
CMSC712
Distributed Algorithms and Verification
Credits: 3
Grad Meth: Reg, Aud
Study of algorithms from the distributed and concurrent systems literature. Formal approach to specifying, verifying, and deriving such algorithms. Areas selected from mutual exclusion, resource allocation, quiescence detection, election, Byzantine agreements, routing, network protocols, and fault-tolerence. Formal approaches will handle system specification and verification of safety, liveness, and real-time properties.
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.
CMSC751
Parallel Algorithms
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: CMSC451; or students who have taken courses with comparable content may contact the department.
A presentation of the theory of parallel computers and parallel processing. Models of parallel processing and the relationships between these models. Techniques for the design and analysis of efficient parallel algorithms including parallel prefix, searching, sorting, graph problems, and algebraic problems. Theoretical limits of parallelism, inherently sequential problems, and the theory of P-completeness.
CMSC764
Advanced Numerical Optimization
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: MATH410; or permission of instructor.
Also offered as: AMSC607.
Credit only granted for: AMSC607 or CMSC764.
Formerly: CMSC878O.
Modern numerical methods for solving uncontrained and constrained nonlinear optimization problems in finite dimensions. Design of computational algorithms and the analysis of their properties.
CMSC773
Computational Linguistics II
Credits: 3
Grad Meth: Reg, Aud
Prerequisite: LING723 or CMSC723; or permission of instructor.
Also offered as: LING773.
Formerly: CMSC828R.
Additional information: May only receive PhD Comp. credit for CMSC723 or CMSC823, not both.
Natural language processing with a focus on corpus-based statistical techniques. Topics inlcude: stochastic language modeling, smoothing, noisy channel models, probabilistic grammars and parsing; lexical acquisition, similarity-based methods, word sense disambiguation, statistical methods in NLP applications; system evaluation.
Also offered as INST728C. Credit granted for CMSC773 or INST728C.
CMSC798
(Perm Req)
Graduate Seminar in Computer Science
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC798A
(Perm Req)
Graduate Seminar in Computer Science
Credits: 1 - 3
Grad Meth: Reg, Aud
CMSC majors only. Other majors require permission of department.
Contact department for information to register for this course.
CMSC798F
Graduate Seminar in Computer Science; How to Conduct Great Research
Credits: 1
Grad Meth: Reg, Aud
CMSC799
(Perm Req)
Master's Thesis Research
Credits: 1 - 6
Grad Meth: Reg, S-F
Contact department for information to register for this course.
CMSC818A
(Perm Req)
Advanced Topics in Computer Systems; Advanced Topics in Computer Systems
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC818C
Advanced Topics in Computer Systems; Blockchain and Cryptocurrency Technologies
Credits: 3
Grad Meth: Reg, Aud
Also offered as ENEE759F. Credit granted for ENEE759F or CMSC818C.

Decentralized cryptocurrencies and blockchain applications such a Bitcoin and Ethereum have emerged as a highly disruptive technology that enable, for example, monetary without the control of a central authority. They have sparked the interest of of computer scientists, economists and policymakers and promise to revolutionize the way we think about our financial infrastructure. This graduate class will cover the technical background behind decentralized cryptocurrencies protocols and will introduce students to research on the security and privacy of blockchain technologies.
CMSC818D
Advanced Topics in Computer Systems; Human Factors in Security and Privacy
Credits: 3
Grad Meth: Reg
CMSC818G
Advanced Topics in Computer Systems; Information-Centric Design of Systems
Credits: 3
Grad Meth: Reg, Aud
CMSC828A
(Perm Req)
Advanced Topics in Information Processing
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC828J
Advanced Topics in Information Processing; Deep Learning Models for Video Analysis
Credits: 3
Grad Meth: Reg, Aud
CMSC828M
Advanced Topics in Information Processing; Applied Mechanism Design for Social Good
Credits: 3
Grad Meth: Reg
CMSC838A
(Perm Req)
Advanced Topics in Programming Languages
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC858A
(Perm Req)
Advanced Topics in Theory of Computing
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC858R
Advanced Topics in Theory of Computing; Ramsey Theory
Credits: 3
Grad Meth: Reg
Also offered as MATH858R. Credit granted for CMSC858R or MATH858R.
CMSC878A
(Perm Req)
Advanced Topics in Numerical Methods
Credits: 1 - 3
Grad Meth: Reg, Aud
Contact department for information to register for this course.
CMSC898
Pre-Candidacy Research
Credits: 1 - 8
Grad Meth: Reg, S-F
Contact department for information to register for this course.
CMSC899
(Perm Req)
Doctoral Dissertation Research
Credits: 6
Grad Meth: Reg, S-F
Contact department for information to register for this course.