Approved Courses
The following list includes undergraduate courses that have been approved as of June 2010. Courses added after that date do not appear in this list. Courses eliminated after that date may still appear. Not every course is offered regularly. Students should consult the Schedule of Classes at www.testudo.umd.edu to ascertain which courses are actually offered during a given semester.
COURSE NUMBERING SYSTEM
| Number |
|
Eligibility |
| 000-099 |
|
Non-credit course |
| 100-199 |
|
Primarily freshman course |
| 200-299 |
|
Primarily sophomore course |
| 300-399 |
|
Junior, senior course not acceptable for credit toward graduate degrees |
| 386-387 |
|
Campus-wide internship courses; refer to information describing Experiential Learning |
| 400-499 |
|
Junior, senior course acceptable for credit toward some graduate degree |
| 500-599 |
|
Professional School course (Dentistry, Architecture, Law, Medicine) or post-baccalaureate course |
| 600-899 |
|
Course restricted to graduate students |
| 799 |
|
Master Thesis credit |
| 899 |
|
Doctoral Dissertation credit |
Use the search box below to view the approved courses.
Courses in "CMSC-Computer Science"
CMSC - Computer Science
CMSC 100 Bits and Bytes of Computer Science (1)
Restriction: For first time freshmen and first time transfer computer
science majors.
Students are introduced to the field (and disciplines) of computer
science within a small classroom setting. They will learn to make a
successful transition from high school to the university, while
exploring study skills, student success plans and research
opportunities.
CMSC 102 Introduction to Information Technology (3)
Restriction: Must not be in Computer Science program; and must not have
completed CMSC122 or CMSC131; and Not recommended for BMGT students.
Credit only granted for: CMSC102, CMSC132 or CMSC214 unless CMSC102 is
taken first, then credit will be granted for both.
A historical and practical introduction to computer and network
terminology, applications and concepts. Students will have hands-on
experience with a variety of tools available to find and access
information on the Internet, to exchange information between computers,
and to perform basic web design. Students will explore applications
(such as browsers and spreadsheets) as well as different computing
environments (such as Windows and UNIX). There will be discussions of
social, legal, and ethical issues related to technology.
CMSC 106 Introduction to C Programming (4)
Three hours of lecture and two hours of laboratory per week.
Prerequisite: MATH115. Restriction: Must not be in Computer Science
program; and must not have completed any courses from CMSC131-499 course
range.
Design and analysis of programs in C. An introduction to computing using
structured programming concepts. Intended for students with no or
minimal programming experience.
CMSC 122 Introduction to Computer Programming via the Web (3)
Restriction: Must not have completed any courses from CMSC131-499 course
range. Credit only granted for: CMSC122 or CMSC198N. Formerly: CMSC198N.
Introduction to computer programming in the context of developing full
featured dynamic web sites. Uses a problem solving approach to teach
basics of program design and implementation using JavaScript; relates
these skills to creation of dynamic web sites; then explores both the
potential and limits of web-based information sources for use in
research. Intended to help relate a student's major to these emerging
technologies.
CMSC 131 Object-Oriented Programming I (4)
Three hours of lecture and two hours of discussion/recitation per week.
Corequisite: Concurrently enrolled in MATH140; and permission of
CMNS-Computer Science department.
Introduction to programming and computer science. Emphasizes
understanding and implementation of applications using object-oriented
techniques. Develops skills such as program design and testing as well
as implementation of programs using a graphical IDE. Programming done in
Java.
CMSC 132 Object-Oriented Programming II (4)
Three hours of lecture and two hours of discussion/recitation per week.
Prerequisite: Minimum grade of C- in CMSC131; or Must have earned a
score of 5 on the A Java AP exam. Or Permission of the department based
on satisfactory performance on the department placement exam; and
minimum grade of C- in MATH140; and permission of CMNS-Computer Science
department.
Introduction to use of computers to solve problems using software
engineering principles. Design, build, test, and debug medium -size
software systems and learn to use relevant tools. Use object-oriented
methods to create effective and efficient problem solutions. Use and
implement application programming interfaces (APIs). Programming done in
Java.
CMSC 198 Special Topics in Computer Science for Non-Majors (1-4)
Restriction: Must not be in Computer Science program. Repeatable to 6
credits if content differs.
A course designed to allow non-computer science majors and non-computer
engineering majors to pursue a specialized topic or project.
CMSC 216 Introduction to Computer Systems (4)
Prerequisite: Minimum grade of C- in CMSC132; and minimum grade of C- in
MATH141. Corequisite: Concurrently enrolled in CMSC250. Credit only
granted for: CMSC212, (CMSC213 and CMSC313), or CMSC216.
Machine representation of data including intergers and floating point.
Modern computer architectural features and their interaction with
software (registers, caches). Interaction between user programs and the
OS: system class, process, and thread management. Optimizing software to
improve runtime performance using both compilers and hand turning.
CMSC 250 Discrete Structures (4)
Three hours of lecture and two hours of discussion/recitation per week.
Prerequisite: Minimum grade of C- in CMSC131; and MATH141; and
permission of CMNS-Computer Science department. Formerly: CMSC150.
Fundamental mathematical concepts related to computer science, including
finite and infinite sets, relations, functions, and propositional logic.
Introduction to other techniques, modeling and solving problems in
computer science. Introduction to permutations, combinations, graphs,
and trees with selected applications.
CMSC 297 Honors Seminar (1)
An introduction to the breadth of computer science research. Intended
for all Computer Science Honors students, especially those considering a
career in research. Will cover work from some of the key figures in the
history of computer science, as well as research being pursued at
Maryland.
CMSC 298 Special Topics in Computer Science (1-4)
Restriction: Permission of CMNS-Computer Science department. Repeatable
to 6 credits if content differs.
A course designed to allow a lower level student to pursue a specialized
topic or project.
CMSC 311 Computer Organization (3)
Prerequisite: Minimum grade of C- in CMSC250; and permission of
CMNS-Computer Science department.
Introduction to assembly language. Design of digital logic circuits.
Organization of central processors, including instruction sets,
register transfer operations, control microprogramming, data
representation, and arithmetic algorithms. Memory and input/output
organization.
CMSC 330 Organization of Programming Languages (3)
Two hours of lecture and two hours of laboratory per week. Prerequisite:
Minimum grade of C- in CMSC250 and CMSC216; and permission of
CMNS-Computer Science department.
The semantics of programming languages and their run-time organization.
Several different models of languages are discussed, including
procedural (e.g., C, Pascal), functional (e.g., ML, LISP), rule-based
(e.g., Prolog), and object-oriented (e.g., C++, Smalltalk). Run-time
structures, including dynamic versus static scope rules, storage for
strings, arrays, records, and object inheritance are explored.
CMSC 351 Algorithms (3)
Prerequisite: Minimum grade of C- in CMSC250 and CMSC216; and permission
of CMNS-Computer Science department. Credit only granted for: CMSC251 or
CMSC351. Additional information: CMSC351 may not count as one of the
required upper level CMSC courses for students who are required to have
24 upper level CMSC credits for graduation, i.e. for students who became
computer science majors prior to Fall, 2002.
A systematic study of the complexity of some elementary algorithms
related to sorting, graphs and trees, and combinatorics. Algorithms are
analyzed using mathematical techniques to solve recurrences and
summations.
CMSC 389 Special Topics in Computer Science (1-3)
Repeatable to 6 credits if content differs.
Seminar courses that allow student to pursue new and emerging areas of
Computer Science; curse may be used as electives for the undergraduate
degree and minor.
CMSC 390 Honors Paper (3)
Restriction: Must be admitted to the Computer Science Honors Program.
Special study or research directed toward preparation of honors paper.
CMSC 411 Computer Systems Architecture (3)
Prerequisite: 1 course with a minimum grade of C- from (ENEE350,
CMSC311); and minimum grade of C- in CMSC330; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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.
Prerequisite: 1 course with a minimum grade of C- from (ENEE350,
CMSC311); and minimum grade of C- in CMSC330; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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 414 Computer and Network Security (3)
Prerequisite: Minimum grade of C- in CMSC216 and CMSC330; and permission
of CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
An introduction to the topic of security in the context of computer
systems and networks. Identify, analyze, and solve network-related
security problems in computer systems. Fundamentals of number theory,
authentication, and encryption technologies, as well as the practical
problems that have to be solved in order to make those technologies
workable in a networked environment, particularly in the wide-area
Internet environment.
CMSC 417 Computer Networks (3)
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission
of CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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: Minimum grade of C- in CMSC351 and CMSC330; and permission
of CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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: Minimum grade of C- in CMSC351 and CMSC330; and permission
of CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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 Introduction to Machine Learning (3)
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330. Recommended:
STAT400.
Machine Learning studies representations and algorithms that allow
machines to improve their performance on a task from experience. This is
a broad overview of existing methods for machine learning and an
introduction to adaptive systems in general. Emphasis is given to
practical aspects of machine learning and data mining.
CMSC 423 Bioinformatic Algorithms, Databases, and Tools (3)
Prerequisite: Minimum grade of C- in CMSC351; or permission of
CMNS-Computer Science department.
An introduction to the main algorithms, databases, and tools used in
bioinformatics. Topics may include assembly and analysis of genome
sequences, reconstructing evolutionary histories, predicting protein
structure, and clustering of biological data. Use of scripting languages
to perform analysis tasks on biological data. No prior knowledge of
biology is assumed.
CMSC 424 Database Design (3)
Prerequisite: Minimum grade of C- in CMSC351 and CMSC330; and permission
of CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
Students are introduced to database systems and motivates the database
approach as a mechanism for modeling the real world. An in-depth
coverage of the relational model, logical database design, query
languages, and other database concepts including query optimization,
concurrency control; transaction management, and log based crash
recovery. Distributed and Web database architectures are also discussed.
CMSC 425 Game Programming (3)
Prerequisite: Minimum grade of C- in CMSC420. Corequisite: Concurrently
enrolled in CMSC427.
An introduction to the principles and practice of computer game
programming and design. This includes an introduction to game hardware
and systems, the principles of game design, object and terrain modeling,
game physics, artificial intelligence for games, networking for games,
rendering and animation, and aural rendering. Course topics are
reinforced through the design and implementation of a working computer
game.
CMSC 426 Image Processing (3)
Prerequisite: CMSC420; and permission of CMNS-Computer Science
department. Or Must be in the (Computer Science (Doctoral), Computer
Science (Master's)) program.
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)
Prerequisite: MATH240; and minimum grade of C- in CMSC420; and
permission of CMNS-Computer Science department. Or Must be in the
(Computer Science (Doctoral), Computer Science (Master's)) program.
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 Introduction to Compilers (3)
Prerequisite: Minimum grade of C- in CMSC330; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
Topics include lexical analysis, parsing, intermediate representations,
program analysis, optimization, and code generation.
CMSC 433 Programming Language Technologies and Paradigms (3)
Prerequisite: CMSC330; and permission of CMNS-Computer Science
department. Or Must be in the (Computer Science (Doctoral), Computer
Science (Master's)) program.
Programming language technologies (e.g., object-oriented programming),
their implementations and use in software design and implementation.
CMSC 434 Introduction to Human-Computer Interaction (3)
Prerequisite: Minimum grade of C- in CMSC330; and PSYC100; and
permission of CMNS-Computer Science department. Or Must be in the
(Computer Science (Doctoral), Computer Science (Master's)) program.
Assess usability by quantitative and qualitative methods. Conduct task
analyses, usability tests, expert reviews, and continuing assessments
of working products by interviews, surveys, and logging. Apply design
processes and guidelines to develop professional quality user
interfaces. Build low-fidelity paper mockups, and a high-fidelity
prototype using contemporary tools such as graphic editors and a
graphical programming environment (eg: Visual Basic, Java).
CMSC 435 Software Engineering (3)
Prerequisite: 1 course with a minimum grade of C- from (CMSC412,
CMSC417, CMSC420, CMSC430, CMSC433); and permission of CMNS-Computer
Science department. Or Must be in the (Computer Science (Doctoral),
Computer Science (Master's)) program.
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 436 Programming Handheld Systems (3)
Prerequisite: Minimum grade of C- in CMSC330.
Fundamental principles and concepts that underlie the programming of
handheld systems, such as mobile phones, personal digital assistants,
and tablet computers. Particular emphasis will be placed on concepts
such as limited display size, power, memory and CPU speed; and new input
modalities, where handheld systems differ substantially from
non-handheld systems, and thus require special programming tools and
approaches. Students will apply these concepts and principles in the
context of an existing handset programming platform.
CMSC 451 Design and Analysis of Computer Algorithms (3)
Prerequisite: Minimum grade of C- in CMSC351; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
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)
Prerequisite: Minimum grade of C- in CMSC351; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program.
Alternative theoretical models of computation, types of automata, and
their relations to formal grammars and languages.
CMSC 456 Cryptology (3)
Prerequisite: (Any two 400-level MATH courses; or (CMSC351 and
CMSC330)); and permission of CMNS-Computer Science department. Or Must
be a CMSC graduate student. Also offered as: MATH456. Credit only
granted for: CMSC456 or MATH456.
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) Prerequisite: CMSC106, MATH240, and MATH241; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program. Also offered as AMSC460. Credit only granted
for: AMSC460, AMSC466, CMSC460, or CMSC466. 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) Prerequisite: CMSC106, MATH240, and MATH241; and permission of
CMNS-Computer Science department. Or Must be in the (Computer Science
(Doctoral), Computer Science (Master's)) program. Also offered as AMSC466. Credit only granted
for: AMSC460, AMSC466, CMSC460, or CMSC466. Floating point computations, direct methods for linear systems,
interpolation, solution of nonlinear equations.
CMSC 474 Introduction to Computational Game Theory (3)
Prerequisite: Minimum grade of C- in CMSC351; or permission of
CMNS-Computer Science department. Credit only granted for: CMSC474,
ECON414, or GVPT399A.
Game theory deals with interactions among agents (either human or
computerized) whose objectives and preferences may differ from the
objectives and preferences of the other agents. It will also provide a
comprehensive introduction to game theory, concentrating on its
computational aspects.
CMSC 475 Combinatorics and Graph Theory (3)
Prerequisite: MATH240 and MATH241; and permission of CMNS-Computer
Science department. Or Must be in the (Computer Science (Doctoral),
Computer Science (Master's)) program. Also offered as: MATH475.
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 498 Selected Topics in Computer Science (1-3)
Restriction: Permission of CMNS-Computer Science department.
An individualized course designed to allow a student or students to
pursue a selected topic not taught as a part of the regular course
offerings under the supervision of a Computer Science faculty member. In
addition, courses dealing with topics of special interest and/or new
emerging areas of computer science will be offered with this number.
Selected topics courses will be structured very much like a regular
course with homework, project and exams. Credit according to work
completed
CMSC 499 Independent Undergraduate Research (1-3)
Restriction: Must be in one of the following programs (Computer Science;
Engineering: Computer) ; and permission of CMNS-Computer Science
department.
Students are provided with an opportunity to participate in a computer
science research project under the guidance of a faculty advisor. Format
varies. Students and supervising faculty member will agree to a research
plan which must be approved by the department. As part of each research
plan, students should produce a final paper delineating their
contribution to the field.
Return to top