|
CMSC -- Computer Science
CMSC 400 Introduction to Computer Systems and Software (3)
Prerequisite: MATH 141 and experience with a high-level programming
language and (graduate standing or permission of department). Assembly
language and instruction execution for Von Neumann Architectures. Records,
arrays, pointers, parameters, and recursive procedures. I/O structures
and interrupt handling. Finite state automata. Course is intended primarily
for graduate students in other disciplines. CMSC 400 may not be counted
for credit in the graduate or undergraduate program in computer science.
CMSC 411 Computer Systems Architecture (3) Prerequisites:
a grade of C or better in CMSC 311 and CMSC 330; or CMSC 400; and permission
of department; or CMSC graduate student. Input/output processors and
techniques. Intra-system communication, buses, caches. Addressing and memory
hierarchies. Microprogramming, parallelism, and pipelining.
CMSC 412 Operating Systems (4) Three hours of lecture and
two hours of laboratory per week. Prerequisites: (a grade of C or better
in (CMSC 311 or ENEE 350) and a grade of C or better in CMSC 330) or a
grade of C or better in CMSC 400; and permission of department; or CMSC
graduate student. An introduction to batch systems, spooling systems,
and third-generation multiprogramming systems. Description of the parts
of an operating system in terms of function, structure, and implementation.
Basic resource allocation policies.
CMSC 415 Systems Programming (3) Prerequisites: CMSC 412 with
a grade of C or better; and permission of department; or CMSC graduate
student. Basic algorithms of operating system software. Memory management
using linkage editors and loaders, dynamic relocation with base registers,
paging. File systems and input/output control. Processor allocation for
multiprogramming, timesharing. Emphasis on practical systems programming,
including projects such as a simple linkage editor, a stand-alone executive,
a file system, etc.
CMSC 417 Computer Networks (3) Prerequisites: CMSC 311 with
a grade of C or better and CMSC 330 with a grade of C or better. 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) Prerequisites: a grade of C or
better in CMSC 330 or CMSC 400; and permission of department; or CMSC graduate
student. 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) Prerequisites:
a grade of C or better in CMSC 251 and CMSC 330; and permission of department;
or CMSC graduate student. Recommended: 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: CMSC 420 with a
grade of C or better; and permission of department; or CMSC graduate student.
Recommended: CMSC 450. 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: CMSC 420 and permission
of department; or CMSC graduate student. 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 427 Computer Graphics (3) Prerequisites: MATH 240; and
a grade of C or better in CMSC 420. 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.
CMSC 430 Theory of Language Translation (3) Prerequisites:
a grade of C or better in CMSC 330 or CMSC 400; and permission of department;
or CMSC graduate student. Formal translation of programming languages,
program syntax and semantics. Finite state recognizers and regular grammers.
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)
Prerequisites: CMSC 330 with a grade of C or better and PSYC 100 and
STAT 400 and permission of department; or CMSC graduate student. 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 Engineering (3) Prerequisites: CMSC 420
with a grade of C or better; and permission of department; or CMSC graduate
student. 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.
CMSC 450 Logic for Computer Science (3) Prerequisites: (CMSC
251 and MATH 141) with grade of C or better and permission of department;
or CMSC graduate student. Also offered as MATH 450. Credit will be granted
for only one of the following: MATH 445 or CMSC 450/MATH 450. 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.
CMSC 451 Design and Analysis of Computer Algorithms (3) Prerequisites:
a grade of C or better in (CMSC 113 or CMSC 214) and a grade of C or better
in CMSC 251; and permission of department. 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.
CMSC 452 Elementary Theory of Computation (3) Prerequisites:
(CMSC 113 or CMSC 214) with a grade of C or better; CMSC 251 with a grade
of C or better. Alternative theoretical models of computation, types
of automata, and their relations to formal grammars and languages.
CMSC 456 Cryptology (3) Prerequisite: Two 400-level MATH courses
or two 400-level CMSC courses or permission of department. Also offered
as MATH 456. Credit will be granted for only one of the following: CMSC
456 or MATH 456. 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.
CMSC 460 Computational Methods (3) Prerequisites: {a grade
of C or better in MATH 240 and MATH 241}; and {CMSC 110 or CMSC 113}; and
permission of department; or CMSC graduate student. Also offered as MAPL
460. Credit will be granted for only one of the following: CMSC/MAPL 460
or CMSC/MAPL 466. 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.
CMSC 466 Introduction to Numerical Analysis I (3) Prerequisites:
{a grade of C or better in MATH 240 and MATH 241}; and {CMSC 110 or CMSC
113}; and permission of department; or CMSC graduate student. Also offered
as MAPL 466. Credit will be granted for only one of the following: CMSC/MAPL
460 or CMSC/MAPL 466. Floating point computations, direct methods for
linear systems, interpolation, solution of nonlinear equations.
CMSC 467 Introduction to Numerical Analysis II (3) Prerequisite:
MAPL/CMSC 466 with a grade of C or better; and permission of department;
or CMSC graduate student. Also offered as MAPL 467. Credit will be granted
for only one of the following: CMSC 467 or MAPL 467. Advanced interpolation,
linear least squares, eigenvalue problems, ordinary differential equations,
fast Fourier transforms.
CMSC 475 Combinatorics and Graph Theory (3) Prerequisites:
MATH 240 and MATH 241; and permission of department; or CMSC graduate student.
Also offered as MATH 475. 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.
CMSC 477 Optimization (3) Prerequisites: (CMSC/MAPL 460, or
CMSC/MAPL 466, or CMSC/MAPL 467) with a grade of C or better; and permission
of department; or CMSC graduate student. Also offered as MAPL 477. Credit
will be granted for only one of the following: CMSC 477 or MAPL 477.
Linear programming including the simplex algorithm and dual linear programs;
convex sets and elements of convex programming; combinatorial optimization,
integer programming.
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) Prerequisites: CMSC 411;
and CMSC 412; and STAT 400. Basic theoretical results in computer systems,
including synthetic models of system structure, analytical (probabilistic)
models of system structure, analysis of computer system mechanisms, analysis
of operating system mechanisms, and analysis of resource allocation policies.
CMSC 615 Advanced Computer Architecture (3) Prerequisites:
CMSC 411 and CMSC 412 or equivalent. 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 dependencies. Principles 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 permission of instructor. A formal presentation, based
in logic and mathematics, of some fundamental approaches developed in the
field of artificial intelligence to representing knowledge, solving complex
problems; planning and reasoning in well-defined and uncertain domains.
Three basic topics: state space search, problem reduction, and theorem
proving.
CMSC 624 Database Systems Implementation (3) Prerequisite:
CMSC 424 or permission of instructor. Study of techniques for building
traditional, relational database systems. 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 Theory of Programming Languages (3) Prerequisite:
CMSC 430. Contemporary topics in the theory of programming languages.
Formal specification and program correctness. Axiomatic proof systems (both
Floyd-Hoare and Dijkstra's predicate transformers), Mills' functional correctness
approach, abstract data types (both abstract model and algebraic specifications),
and Scott-style denotational semantics based on least fixed points.
CMSC 631 Program Analysis and Understanding (3) Prerequisite:
CMSC 430 or equivalent. 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. Advanced
treatment of abstraction mechanisms: polymorphic types, operation overloading,
inheritance, object-oriented programming and ML-like programming languages.
CMSC 650 Theory of Computing (3) Prerequisite: CMSC 452.
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.
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.
CMSC 660 Scientific Computing I (3) Prerequisite: CMSC 460
or CMSC 466, or knowledge of basic numerical analysis (linear equations,
nonlinear equations, integration, interpolation) with permission of instructor.
Also offered as MAPL 660. Credit will be granted for only one of the following:
CMSC 660 or MAPL 660. Monte Carlo simulation, fast Fourier transform
and applications, nonlinear systems and continuation method, optimization,
sparse matrices. Fundamental techniques in scientific computation with
an introduction to the theory of each topic.
CMSC 661 Scientific Computing II (3) Prerequisite: MAPL 460
or MAPL 466, or knowledge of basic numerical analysis (linear equations,
nonlinear equations, integration, interpolation) with permission of instructor.
Knowledge of Fortran. Also offered as MAPL 661. Credit will be granted
for only one of the following: CMSC 661 or MAPL 661. Finite element
methods, numerical methods for time dependent PDEs, numerical linear algebra
and libraries, parallel programming with message passing systems, data
parallel programming, parallel libraries for numerical linear algebra,
parallel programs for PDE problems. Techniques for high performance scientific
computation with a brief introduction to the theory of each topic. Course
is part of a two course sequence (660 and 661), but can be taken independently.
CMSC 666 Numerical Analysis I (3) Prerequisites: CMSC/MAPL
466; and MATH 410. Also offered as MAPL 666. Iterative methods for
linear systems, piecewise interpolation, eigenvalue problems, numerical
integration.
CMSC 667 Numerical Analysis II (3) Prerequisite: CMSC/MAPL
666. Also offered as MAPL 667. Nonlinear systems of equations, ordinary
differential equations, boundary value problems.
CMSC 710 Performance Evaluation of Computer Systems (3) Prerequisite:
CMSC 412, MATH 141, and STAT 400 or equivalent. Performance evaluation
methodologies. Methods for evaluating computer/communication systems. Analytical
modeling using queueing theoretic approach. Simulation for performance
evaluation. Applying theoretical methods by modeling computer system components.
Case studies using analytical and simulation techniques.
CMSC 711 Computer Networks (3) Prerequisite: CMSC 412 or equivalent.
Priciples, design, and performance evaluation of computer networks. Network
architectures including the ISO model and local area networks (LANs). Communication
protocols and network topology.
CMSC 712 Distributed Algorithms and Verification (3) Prerequisite:
CMSC 612 or equivalent. 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.
CMSC 720 Logic for Problem Solving (3) Prerequisite: CMSC
620. 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 Nonmonotonic Reasoning (3) Prerequisite: CMSC 620
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) Prerequisite:
CMSC 620 or permission of instructor. Automated planning of actions
to accomplish some desired goals. Basic algorithms, important systems,
and new directions in the field of artificial intelligence planning systems.
CMSC 723 Natural Language Processing (3) Prerequisite: CMSC
421 or equivalent or permission of instructor. Provides brief overview
of field, relating natural language to computation and linguistics. Examines
theories and formalisms in areas of syntax, semantics, and the lexicon.
Examines key issues in designing computer systems for understanding, generating,
and translating natural language. Studies field from engineering perspective
(i.e., the development of specific practical systems that involve natural
language) and from scientific perspective (i.e., the testing of syntactic,
semantic, and lexical theories proposed by theoretical linguists.
CMSC 724 Database Management Systems (3) Prerequisite: CMSC
624 or permission of 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 Geographical Information Systems and Spatial Databases (3)
Prerequisites: CMSC 420 and CMSC 424; or permission of instructor.
Topics in geographic information systems and spatial databases. Integrates
related results from databases, cartography, geography, computer graphics,
file access methods, computational geometry, image processing, data structures,
and programming languages. 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) Prerequisite: CMSC 421 or equivalent
or permission of instructor. Reviews and analyzes both traditional
symbol-processing methods and genetic algorithms as approaches to machine
learning. (Neural network learning methods are primarily covered in CMSC
727.) Topics include induction of decision trees and rules, version spaces,
candidate elimination algorithm, exemplar-based learning, genetic algorithms,
evolution under artificial selection of problem-solving algorithms, system
assessment, comparative studies, and related topics.
CMSC 727 Neural Modeling (3) Prerequisite: CMSC 421 or equivalent;
or permission of instructor. Undergraduate calculus, linear algebra,
and elementary probability and statistics 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 or permission of instructor. Techniques for improving the
performance of compiled code on sequential and parallel machines. Data-flow
analysis (iterative, interval, sparse). Control-flow, control-dependence,
and interprocedural program analyses. Classical optimizations (common subexpression
elimination, strength reductions, code hoisting, dead code elimination).
Program transformations for improving data locality and exploiting parallelism
(instructions, vectors, multiprocessor). Code generation techniques (instruction
selection, instruction scheduling, register allocation). Peephole optimizations.
Interface with programming environments, debuggers, and profiling tools.
CMSC 732 Compiling for High Performance Architectures (3) Compilation
techniques for exploiting parallelism on a variety of advanced multiprocessors.
Analysis of scientific programs (dependence testing, dependence graphs,
pointers). Program transformations (loop interchange, loop fusion, tiling,
renaming). Exploiting parallelism for vector, parallel, and message-passing
architectures. Memory hierarchy management (register/cache reuse, prefetching,
multithreading). Programming environments and performance debugging.
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 pictures description
and 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 Software Management and Engineering
(3) Prerequisites: CMSC 435; and STAT 400 or permission of instructor.
Introduction to the fundamental ideas for measuring and evaluating the
software development process and product. Types of models and metrics currently
in use. Paradigms for using practical measurement for managing and engineering
the software development and maintenance process; evaluating software methods
and tools; and improving productivity, quality and the effective use of
methodology.
CMSC 740 Advanced Computer Graphics (3) Prerequisites: (MATH
240 and CMSC 420) 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.
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. 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.
CMSC 752 Concrete Complexity (3) Prerequisite: CMSC 451 or
CMSC 650 or permission of instructor. Investigate upper and lower bounds
for several problems such as sorting, selection, parity, hashing, and graphs.
Consider models of computation such as decision trees, circuits, monotone
circuits, and the information model for graphs. Combinatorial tools developed
as needed. Ramsey theory will be one of those tools.
CMSC 753 Mathematical Linguistics (3) Prerequisites: CMSC
650 and STAT 400. Introductory course on applications of mathematics
to linguistics. Elementary ideas in phonology, grammar and semantics. Automata,
formal grammars and languages. Chomsky's theory of transformational grammars,
Yngve's depth hypothesis and syntactic complexity. Markov-chain models
of word and sentence generation, Shannon's information theory Carnap and
Bar-Hillel's semantic theory, lexicostatistics and stylostatistics, Zipf's
law of frequency and Mandelbrot's rank hypothesis. Mathematical models
as theoretical foundation for computational linguistics.
CMSC 754 Computational Geometry (3) Prerequisites: {CMSC 420
and CMSC 451} or permission of instructor. Introduction to algorithms
and data structures for computational problems in discrete geometry (for
points, lines, and polygons) primarily in two and three 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) Prerequisite:
CMSC/MAPL 666 or permission of instructor. Also offered as MAPL 600. Formerly
CMSC 770. 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) Prerequisites:
CMSC/MAPL 666; and CMSC/MAPL 667 or permission of instructor. Also offered
as MAPL 604. Formerly CMSC 772. 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)
CMSC 799 Master's Thesis Research (1-6)
CMSC 818 Advanced Topics in Computer Systems (1-3) Prerequisite:
permission of instructor. Repeatable for credit. Advanced topics selected
by the faculty from the literature of computer systems to suit the interest
and background of students.
CMSC 828 Advanced Topics in Information Processing (1-3) Prerequisite:
permission of instructor. Repeatable for credit. Advanced topics selected
by the faculty from the literature of information processing to suit the
interest and background of students.
CMSC 838 Advanced Topics in Programming Languages (1-3) Prerequisite:
permission of instructor. Repeatable for credit. Advanced topics selected
by faculty from the literature of programming languages to suit the interest
and background of students.
CMSC 858 Advanced Topics in Theory of Computing (1-3) Prerequisite:
permission of instructor. Repeatable for credit. Advanced topics selected
by the faculty from the literature of theory of computing to suit the interest
and background of students.
CMSC 878 Advanced Topics in Numerical Methods (1-3) Prerequisite:
permission of instructor. Repeatable for credit. Advanced topics selected
by the faculty from the literature of numerical methods to suit the interest
and background of students.
CMSC 899 Doctoral Dissertation Research (1-8)
|