If a course has an anchor, it points to a generic syllabus for the course. Check with the professor teaching the class for his syllabi, which may differ from that given here.
In addition to the courses listed below, a large number of seminar courses are given each semester. The content of the seminars varies each semester, depending on the interests of the students and faculty.
Due to heavy demand for Computer Science courses, we strongly advise students to preregister for courses. New students may do this from the time that they are admitted until mid-August. Additional information about preregistration will be sent to new students along with the offer of admission into the graduate program. Before preregistering, students should consult their advisors for advice about what courses to take.
CMSC 411 COMPUTER SYSTEMS ARCHITECTURE (3)
Prerequisite: Grades of C or better in CMSC 311 and CMSC 330, or
a grade of C or better in CMSC 400.
Input/output processors and techniques. Intra-system communication,
buses, caches. Addressing and memory hierarchies.
Microprogramming, parallelism, and pipelining.
CMSC 412 OPERATING SYSTEMS (4)
Prerequisite: Grades of C or better in CMSC 311 and CMSC 330, or
a grade of C or better in CMSC 400. CMSC 411 recommended.
Three hours of lecture and two hours of laboratory each week.
An introduction to operating systems, including 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, memory management, dynamic linking and
loading, socket-driven, window management.
CMSC 415 CONCURRENT AND DISTRIBUTED SYSTEMS (3)
Prerequisite: A grade of C or better in CMSC 412.
Advanced topics and projects in contemporary
computer systems, including distributed operating systems,
IO subsystems, distributed shared memory, IO subsystems,
mixed media systems, load-balancing, cache coherency, object-based
operating systems and threads models.
CMSC 417 COMPUTER NETWORKS (3)
Prerequisite: Grades of C or better in CMSC 113 and CMSC 251.
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.
CMSC 420 DATA STRUCTURES (3)
Prerequisite: A grade of C or better in CMSC 330 or CMSC 400.
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.
CMSC 421 INTRODUCTION TO ARTIFICIAL INTELLIGENCE (3)
Prerequisite: Grades of C or better in CMSC 330 and either CMSC 251
or CMSC 420. 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).
CMSC 424 DATABASE DESIGN (3)
Prerequisite: A grade of C or better in CMSC 420. CMSC 450 recommended.
Motivation for the database approach as a mechanism for modeling
the real world. Review of the three popular data models:
relational, network and hierarchical. Comparison of
permissible structures, integrity constraints, storage
strategies and query facilities. Theory of database design
logic.
CMSC 426 IMAGE PROCESSING (3)
Prerequisite: A grade of C or better in CMSC 420.
An introduction to basic techniques
of analysis and manipulation of pictorial data by computer.
Image input/output devices, image processing software,
enhancement, segmentation, property measurement, Fourier
analysis. Computer encoding, processing and analysis of curves.
CMSC 428 COMPUTER GRAPHICS (3)
Prerequisite: MATH 240 and CMSC 420.
An introduction to the principles of
computer graphics. This 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.
CMSC 430 THEORY OF LANGUAGE TRANSLATION (3)
Prerequisite: A grade of C or better in CMSC 330 or CMSC 400.
Formal translation of programming languages, program
syntax and semantics. Finite state recognizers and
regular grammars. Context free parsing techniques such as
recursive descent, precedence, LL(k), and LR(k).
Code generation, improvement,
syntax directed translation schema.
CMSC 434 HUMAN FACTORS IN COMPUTER AND INFORMATION SYSTEMS (3)
Prerequisite: CMSC 330 with a grade of C or better and PSYC 100 and STAT 400.
Human factors issues in the development of
software, the use of database systems, and the design of interactive systems.
Science base (theories, models, usability studies, and controlled
experimentation), and software engineering with user interface development
environments. Issues include: programming and command languages; menus,
forms, and direct manipulation; graphical user interfaces, computer-supported
cooperative work, information search and visualization; input/output devices;
and display design.
CMSC 435 SOFTWARE DESIGN AND DEVELOPMENT (3)
Prerequisite: Grades of C or better in CMSC 420 and CMSC 430.
State of the art technique 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.
CMSC 450 LOGIC FOR COMPUTER SCIENCE (3)
Prerequisite: CMSC 251 and MATH 141.
Elementary development of propositional and first-order logic
accessible to the advanced undergraduate computer science student,
including the resolution method in propositional logic and Herbrand's
Unsatisfiability Theorem in first-order logic. Included are the concepts
of truth, interpretation, validity, provability, soundness, completeness,
incompleteness, decidability and semi-decidability.
This is the same course as MATH 450. Credit will be granted for only one
of the following: CMSC450/MATH450 or MATH445.
CMSC 451 DESIGN AND ANALYSIS OF COMPUTER ALGORITHMS (3)
Prerequisite: Grades of C or better in CMSC 113 and CMSC 251.
CMSC 420 recommended. Fundamental techniques for designing
and analyzing computer algorithms. Basic methods to be
discussed include greedy methods, divide-and-conquer
techniques, search and traversal techniques, dynamic
programming, and backtracking methods.
NP-completeness and NP-hardness are also discussed.
CMSC 452 ELEMENTARY THEORY OF COMPUTATION (3)
Prerequisite: Grades of C or better in CMSC 113 and CMSC 251.
Introduction to alternative theoretical models of computation,
types of automata, and their relations to formal
grammars and languages.
CMSC 460 COMPUTATIONAL METHODS (3)
Prerequisite: Grade of C or better in MATH 240 and MATH 241;
and CMSC 104 or CMSC 113.
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 is on the
methods and their computational properties rather than on
their analytic aspects. Listed also
as MAPL 460. Credit will not be granted for both CMSC/MAPL 460
and CMSC/MAPL 466.
CMSC 466 INTRODUCTION TO NUMERICAL ANALYSIS I (3)
Prerequisite: Grades of C or better in MATH 240 and MATH 241;
and CMSC 104 or CMSC 113.
Floating point computations, direct methods for linear systems,
interpolation, solution of nonlinear equations.
Listed also as MAPL 466.
Credit will not be granted for both CMSC/MAPL 460
and CMSC/MAPL 466.
CMSC 467 INTRODUCTION TO NUMERICAL ANALYSIS II (3)
Prerequisite: CMSC/MAPL 466 with a grade of C or better.
Advanced interpolation, linear least squares,
eigenvalue problems, ordinary differential equations, fast
Fourier transforms.
Listed also as MAPL 467.
CMSC 475 COMBINATORICS AND GRAPH THEORY (3)
Prerequisite: MATH 240 and MATH 241.
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. Listed also as MATH 475.
CMSC 477 OPTIMIZATION (3)
Prerequisite: one of CMSC/MAPL 460, CMSC/MAPL 466, or CMSC/MAPL 467
with a grade of C or better.
Linear programming including the simplex algorithm and dual linear
programs, convex sets and elements of convex programming,
combinatorial optimization, integer programming.
Listed also as MAPL 477.
CMSC 498 SPECIAL PROBLEMS IN COMPUTER SCIENCE (1-3)
Prerequisite: Permission of department.
An individualized
course designed to allow a student or students to pursue
a specialized topic or project under the supervision of the
senior staff. Credit according to work done.
CMSC 612 COMPUTER SYSTEMS THEORY (3)
Prerequisite: CMSC 411, CMSC 412, and STAT 400.
This course will cover the basic theoretical results in
computer systems, including synthetic models of system
structure, analytical (probabilistic) models of system
structure, analysis of computer system mechanism, analysis
of operating system mechanisms, and analysis of resource
allocation policies
CMSC 615 ADVANCED COMPUTER ARCHITECTURE (3)
Prerequisite: CMSC 411 and CMSC 412, or permission of the instructor.
An overview of advanced processor architectures,
I/O subsystems, multiprocessor architectures and high performance networking.
Pipelining, instruction scheduling, branch processing,
out of order execution, dealing with dependences.
Principals of memory hierarchy design including
design of multi-level caches and virtual memory systems.
Multiprocessor design issues including
managing a multiprocessor memory hierarchy: tolerating
and avoiding latency.
High Performance Networking including treatment of
multiprocessor networks, high performance local and wide area
networks.
Design and modeling of disks, disk caches,
Redundant Arrays of Inexpensive Disks (RAID) devices,
parallel I/O subsystems, parallel file systems, and
Flash memory.
CMSC 620 PROBLEM SOLVING METHODS IN ARTIFICIAL INTELLIGENCE (3)
Prerequisite: CMSC 421 or equivalent, or permission of
instructor. Underlying theoretical concepts in solving problems by
heuristically guided trial-and-error search, as well as theorem
proving and logical inference. State-space, problem reduction, and
first-order predicate calculus representations for solving problems.
Overview of AI planning techniques.
CMSC 624 DATABASE MANAGEMENT SYSTEMS (3)
Prerequisite: CMSC 424, or permission of the instructor.
Study of techniques for building traditional, relational database systems.
This course focuses on performance and reliability considerations and
highlights the interdependencies among the choices facing the system
implementor. Topics include: Database Management System Architecture,
Disk and Memory Management, Access Paths and Indexes, Concurrency Control,
Crash Recovery, Query Execution, Query Optimization, and Benchmarking.
A semester-long project involves constructing a small relational database
system that incorporates many of the techniques studied.
CMSC 630 SOFTWARE SPECIFICATION AND ANALYSIS (3)
Prerequisite: CMSC 430.
Mathematical techniques for describing software systems, proving properties
of a the system's behavior prior to its implementation, and determining if the
system has been correctly implemented. Description mechanisms for requirements
and designs (state machines, axiomatic techniques), proof systems
(natural deduction, term rewriting, model checking), static analysis
(abstract interpretation, inspections, fault-tree analysis),
dynamic analysis (test oracles, executable assertions, coverage metrics).
CMSC 631 PROGRAM ANALYSIS AND UNDERSTANDING (3)
Prerequisite: CMSC 430.
Techniques for static analysis of source code and modern programming paradigms.
Analysis techniques: data flow analysis, program dependence graphs,
program slicing, abstract interpretation. The meaning of programs:
denotational semantics, partial evaluation. Abstraction mechanisms:
polymorphic types, operation overloading, inheritance,
object-oriented programming and ML-like programming languages.
CMSC 632 SOFTWARE ENVIRONMENTS (3)
Prerequisite: CMSC 430.
Reviews life cycle, process models, and product assurance principles. For
perspective studies individual tools and tool sets used in support of software
development, then presents configuration management issues. Integrated SDEs and
CASE tools are examined. Considers environment architectures and models,
with case studies. Laboratory projects consist of comparison and assessment of
existing environments, plus design of a domain-specific integration framework.
CMSC 650 INTRODUCTION TO COMPUTABILITY (3)
Prerequisite: CMSC 452. Introduction to formal
treatment of theoretical models of computation,
computable and uncomputable functions,
unsolvable decision problems, and computational complexity.
CMSC 651 ANALYSIS OF ALGORITHMS (3)
Prerequisite: CMSC 451.
Techniques for the design and analysis of algorithms and data
structures. Study of efficient algorithms from areas
such as graph theory, networks, pattern matching, geometry,
integer and polynomial arithmetic.
Understanding of the inherent complexity of problems:
polynomial time, NP-completeness and approximation algorithms.
CMSC 666 NUMERICAL ANALYSIS I (3)
Prerequisite: CMSC/MAPL 466, and MATH 410.
Iterative methods for linear systems, piecewise interpolation,
eigenvalue problems, numerical integration.
Listed also as MAPL 666.
CMSC 667 NUMERICAL ANALYSIS II (3)
Prerequisite: CMSC/MAPL 666.
Nonlinear systems of equations, ordinary differential equations,
boundary value problems.
Listed also as MAPL 667.
CMSC 710 PERFORMANCE EVALUATION OF COMPUTER SYSTEMS (3)
Prerequisites: CMSC 411 and CMSC 412 or equivalent; or permission
of instructor. A comprehensive study of modelling distributed
systems and evaluating their performance. Topics include
stochastic processes, queueing theory, discrete-event simulation,
synthetic workload generation, measurement and analysis,
benchmarking programs.
CMSC 711 COMMUNICATONS AND NETWORKING (3)
Prerequisite: Permission of instructor required. Advanced topics in
communications and networks, including multimedia systems, routing policies,
mobile networks, internetworking, bandwidth allocation, flow-control,
and high-speed networks, design and performance issues in networks.
CMSC 712 DISTRIBUTED ALGORITHMS AND VERIFICATION (3)
Prerequisites: CMSC 411 and CMSC 412 or equivalent; or permission
of instructor. Fundamental algorithms used in distributed systems,
and practical techniques to verify their correctness. Topics
include synchronization, communication, mutual exclusion, byzantine
agreement, flow-control and termination detection. Verification
techniques include assertional reasoning and automated finite-state analysis.
CMSC 720 LOGIC FOR PROBLEM SOLVING (3)
Prerequisites: CMSC 620 or equivalent, or permission of instructor.
Logic programming and its use in problem solving, natural language
recognition and parsing, and robotics. The Prolog language. Meta-level
and parallel logic programming. Expert systems. Term project in
logic programming.
CMSC 721 NON-MONOTONIC REASONING (3)
Prerequisites: CMSC 620 or equivalent, or permission of instructor.
Survey of the major standard formalisms for nonmonotonic reasoning
(e.g., circumscription, default logic),
and examination of current research issues.
CMSC 722 ARTIFICIAL INTELLIGENCE PLANNING (3)
Prerequisites: CMSC 620 or equivalent, or permission of instructor.
Automated planning of actions to accomplish some desired goals. Basic
algorithms, important systems, and new directions in the field of AI
planning systems.
CMSC 723 NATURAL LANGUAGE PROCESSING (3)
Prerequisites: CMSC 421 or equivalent, or permission of the instructor.
Introductory course on applications of computational techniques to linguistics
and natural language processing. Research cycle of corpus selection,
pre-editing, keypunching, processing, post-editing, and evaluation.
General purpose input, processing, and output routines. Special
purpose programs for sentence parsing and generation, segmentation,
idiom recognition, paraphrasing, and stylistic and discourse analysis.
Programs for dictionary, thesaurus, and concordance compilation and
editing. Systems for automatic abstracting, translation, and question
answering
CMSC 724 DATABASE MANAGEMENT SYSTEMS (3)
Prerequisites: CMSC 424 and CMSC 624, or permission of the instructor.
Theoretical and implementation issues in advanced database systems.
Topics include distributed databases, parallel databases,
database client-server architectures, multimedia access methods,
advanced query optimization techniques, data semantics and models,
object-oriented databases, and deductive and expert database systems.
CMSC 725 GEOGRAPHIC INFORMATION SYSTEMS AND SPATIAL DATABASES (3)
Prerequisites: CMSC 420 and CMSC 424 or permission of the instructor.
Topics in geographic information systems and spatial databases. The course
integrates related results from databases, cartography, geography, computer
graphics, file access methods, computational geometry, image processing, data
structures, and programming languages. The main topics include:
cartographic modeling, principles of cartography, methods from computational
geometry, principles of spatial databases, access methods, and spatial data
structures. The architecture of some existing spatial databases and
geographic information systems will be examined in greater detail.
CMSC 726 MACHINE LEARNING (3)
Prerequisites: CMSC 620 and an undergraduate course in elementary
probability/statistics, or permission of the instructor.
Review and analysis of both traditional symbol-processing methods and
genetic algorithms as approaches to machine learning (neural network
learning methods are covered in CMSC 727). Topics include induction
of decision trees and rules, version spaces, candidate elimination algorithm,
exemplar-based learning, evolution under natural selection of
problem-solving algorithms, system assessment, and comparative studies.
CMSC 727 NEURAL MODELING (3)
Prerequisites: CMSC 421 or equivalent, or permission of instructor.
Undergraduate calculus, linear algebra, and elementary probability
theory are assumed. Fundamental methods of neural modeling.
Surveys historical development and recent research
results from both the computational and dynamical systems
perspective. Logical neurons, perceptrons, linear adaptive networks,
attractor neural networks, competitive activation methods, error
back-propagation, self-organizing maps, and related topics.
Applications in artificial intelligence, cognitive science, and neuroscience.
CMSC 731 PROGRAMMING LANGUAGE IMPLEMENTATION (3)
Prerequisite: CMSC 430.
Techniques for improving the performance of compiled code on sequential
and parallel machines. Program transformations (common subexpression
elimination, strength reductions, code hoisting loop transformations).
Exploiting parallelism at the level of instructions and on vectorizing
and multiprocessing machines. Code generation techniques (instruction selection,
instruction scheduling, register allocation). Run-time systems (garbage
collection, exception handling, data partitioning for distributed memory
machines).
CMSC 733 COMPUTER PROCESSING OF PICTORIAL INFORMATION (3)
Prerequisite: CMSC 420. 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 picture
descriptioned manipulation picture languages. Graphics
systems for alphanumeric and other symbols, line drawings
of two-and three-dimensional objects, cartoons and movies.
CMSC 735 A QUANTITATIVE APPROACH TO ENGINEERING SOFTWARE (3)
Prerequisites: CMSC 435 and STAT 400, or consent of instructor.
The engineering of software is presented via a continuous improvement paradigm
for software development, using quantitative models of the various
software processes, artifacts, and experiences, e.g., resources, defects.
Software improvement and assessment paradigms are discussed.
Experimental, modeling building, and measurement-based approaches are presented.
CMSC 750 ADVANCED THEORY OF COMPUTATION (3)
Prerequisite: CMSC 650.
Continuation of CMSC 650.
Relevant results and techniques from recursive function theory such as
priority arguments.
Current research topics in the foundation of computing, such as
inductive inference and polynomial terseness.
CMSC 751 PARALLEL ALGORITHMS (3)
Prerequisite: CMSC 451 or equivalent.
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.
CMSC 752 CONCRETE COMPLEXITY (3)
Prerequisite: CMSC 451 or CMSC 650 or equivalent.
The study of upper and lower bounds on concrete models
of computation such as decision trees and circuits.
Concrete problems such as sorting, selection, and parity
are considered.
CMSC 754 COMPUTATIONAL GEOMETRY (3)
Prerequisite: CMSC 420 and CMSC 451 or equivalent.
Introduction to algorithms and data structures for computational
problems in discrete geometry (for points, lines, and polygons)
primarily in 2 and 3 dimensions. Topics include triangulations and
planar subdivisions, geometric search and intersection, convex
hulls, Voronoi diagrams, Delaunay triangulations, line arrangements,
visibility, and motion planning.
CMSC 760 ADVANCED LINEAR NUMERICAL ANALYSIS (3)
Advanced topics in numerical linear algebra, such as dense eigenvalue
problems, sparse elimination, iterative methods, and other topics.
CMSC 762 NUMERICAL SOLUTION OF NONLINEAR EQUATIONS (3)
Numerical solution of nonlinear equations in one and several
variables. Existence questions. Minimization methods. Selected applications.
CMSC 798 GRADUATE SEMINAR IN COMPUTER SCIENCE (1-3)
Prerequisite: Permission of instructor. Seminars are
held on topics such as language design, translator theory,
data systems, organization of computer systems, and
automatic problem solving. May be taken for repeated credit.
CMSC 799 THESIS RESEARCH (1-3)
Arranged.
CMSC 818 ADVANCED TOPICS IN COMPUTER SYSTEMS (1-3)
Prerequisite: Permission of instructor. Advanced topics
selected by the faculty from the literature of computer
systems to suit the interest and background of students.
May be taken for repeated credit.
CMSC 828 ADVANCED TOPICS IN INFORMATION PROCESSING (1-3)
Prerequisite: Permission of instructor. Advanced topics
selected by the faculty from the literature of information
processing to suit the interest and background of students.
May be taken for repeated credit.
CMSC 838 ADVANCED TOPICS IN PROGRAMMING LANGUAGES (1-3)
Prerequisite: Permission of instructor. Advanced topics
selected by the faculty from the literature of Programming
Languages to suite the interest and background of students.
May be taken for repeated credit.
CMSC 858 ADVANCED TOPICS IN THEORY OF COMPUTING (1-3)
Prerequisite: Permission of instructor. Advanced
topics selected by the faulty from the literature of
Theory of Computing to suit the interest and background of
students. May be taken for repeated credit.
CMSC 878 ADVANCED TOPICS IN NUMERICAL METHODS (1-3)
Prerequisite: Permission of instructor. Advanced topics
selected by the faculty from the literature of Numerical
Methods to suit the interest and background of students.
May be taken for repeated credit.
CMSC 899 DISSERTATION RESEARCH (1-3)
Arranged.