Course descriptions and syllabi

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.