CMSC 411 COMPUTER SYSTEMS ARCHITECTURE (3)
- Prerequisites:
Grades of C or better in
CMSC 311 and
CMSC 330,
or a grade of C or better in
CMSC 400.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
Input/output processors and techniques. Intra-system
communication, buses, caches. Addressing and memory
hierarchies. Microprogramming, parallelism, and pipelining.
|
CMSC 412 OPERATING SYSTEMS (3)
- Prerequisites:
Grades of C or better in
(CMSC
311 or ENEE 350) and
CMSC
330, or a grade of C or better in
CMSC
400.
Notes:
CMSC 411 recommended. Three hours
of lecture and one hour of laboratory each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in CMSC 412
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)>
- Prerequisites:
Grades of C or better in
CMSC
311 and
CMSC
330.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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:
Grades of C or better in either
(CMSC
330 and
CMSC
251) or CMSC 420.
Notes:
Three hours of lecture each
week.
Syllabus:
HTML
- Description:
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
422 PROGRAMMING ROBOTS (3)
- Prerequisites:
A grade of C or better in
CMSC
214 and permission of department.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
An examination of programming issues involved in creating
autonomous robots, which can interact with their
environments in "intelligent" ways. Topics include
traditional robotics, behavior-based robotics, sensor
processing, sensor-based control, programming robotic
behaviors. Team programming project. Note: this course
cannot be taken for credit in the computer science graduate
program.
|
CMSC
424 DATABASE DESIGN (3)
- Prerequisites:
A grade of C or better in CMSC 420.
Notes:
CMSC 450
recommended. Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in CMSC 420.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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 CMSC 420.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in
CMSC
330 or
CMSC
400.
Notes:
Programming Languages.
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in
CMSC
330; and PSYC 100 and STAT 400.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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:
A grade of C or better in
CMSC
330.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
CMSC
251 and MATH 141.
Notes:
Three hours of lecture each
week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
Grade of C or better in
CMSC
351 and permission of department, or CMSC graduate student
- Notes: Three hours of lecture each week. Syllabus:
HTML
- Description:
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:
Grades of C or better in
CMSC
214 and
CMSC
251.
Notes:
Three hours of lecture each
week.
Syllabus:
HTML
- Description:
Introduction to alternative theoretical models of
computation, types of automata, and their relations to
formal grammars and languages.
|
CMSC
456 CRYPTOLOGY (3)
- Prerequisites:
Two 400-level mathematics courses or two 400-level
computer science courses or permission of the instructor.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
Cryptology has become very important 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:
Grades of C or better in MATH 240 and MATH 241; and
CMSC
104 or
CMSC
214.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
Grades of C or better in MATH 240 and MATH 241; and
CMSC
104 or
CMSC
214.
Notes:
Three hours of lecture each
week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in
CMSC/MAPL
466.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
MATH 240 and MATH 241.
Notes:
Three hours of lecture each
week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
A grade of C or better in either CMSC/MAPL
460, CMSC/MAPL 466, or
CMSC/MAPL 467.
Notes:
Three hours of lecture each week.
Syllabus:
HTML
- Description:
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)
- Prerequisites:
Permission of department.
Notes:
Syllabus:
Not available.
- Description:
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
615 ADVANCED COMPUTER ARCHITECTURE (3)
- Prerequisites:
CMSC 411 and CMSC
412; or permission of the instructor.
Notes:
Syllabus:
HTML
- Description:
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
624 DATABASE SYSTEMS IMPLEMENTATION (3)
- Prerequisites:
CMSC 424; or permission of the
instructor.
Notes:
Syllabus:
HTML
- Description:
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)
- Prerequisites:
CMSC 430
Notes:
Syllabus:
HTML
- Description:
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)
- Prerequisites:
CMSC 430
Notes:
Syllabus:
HTML
- Description:
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
652 COMPLEXITY THEORY (3)
- Prerequisites: CMSC 451 or
CMSC 452
or permission of instructor
- Notes:
- Syllabus: 652
- Description: This course will define what it means for a problem to be hard (or easy) in a variety of ways. The emphasis will be on natural problems. Topics may include NP-completeness, Sparse Sets, Graph Isomorphism (why it is thought to nobe be NP-complete), Counting problems, and approximation problems.
|