University of Maryland
Graduate Catalog Spring 2000
Office of Research and Graduate Studies
 



 

-----University of Maryland HomepageGraduate SchoolRegistration -----

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)

--------General Information Graduate ProgramsGraduate FacultyGraduate CoursesAppendices --------
 
     
  University of Maryland Graduate Catalog Spring 2000  
    This page is maintained by the Graduate School. Contact Information.
Last modified Tuesday, 18-Nov-2003 09:19:15 EST
Copyright © 2000, University of Maryland