18065 
CMSC 141 Object
Oriented Programming 
KerriAnn Norton 
M W 10:10 am11:30 am 
HEG 204 
MC 
MATC 
Crosslisted: Experimental Humanities This course introduces
students to the methodologies of objectoriented design and programming, which
are used throughout the Computer Science curriculum. Students will learn how to
move from informal problem statement, through increasingly precise problem
specifications, to design and implementation of a solution for problems drawn
from areas such as graphics, animation, simulation.
Good programming and documentation habits are emphasized. Class
size: 36
CMSC 141 LAB OPTIONS: (register separately)
18066 
CMSC 141 LBA Object Oriented
Program Lab 
KerriAnn Norton 
Th 9:30 am –
11:30 am 
RKC 107 

MATC 
Class size: 18
18067 
CMSC 141 LBB Object
Oriented Program Lab 
KerriAnn Norton 
F 10:30 am12:30 pm 
RKC 107 

MATC 
Class size: 18
*******************************************************************************************************************************************************************************
18068 
CMSC 145 A Discrete Math 
Japheth Wood 
T Th 10:10 am11:30 pm 
HEG 106 
MC 
MATC 
Discrete
mathematics includes those areas of mathematics that are essential to computer
science, information theory, combinatorics, and genetics. This course
emphasizes creative problem solving, linking language to logic, and learning to
read and write proofs. The topics covered include propositional logic,
predicate logic, inductive proof, sets, relations, functions, introductory
combinatorics and discrete probability. Applications drawn from
computation will motivate most topics. Prerequisite: Mathematics 141 or
programming experience. Class
size: 16
18894 
CMSC 145 B Discrete Math 
Japheth Wood 
T Th 11:50 am1:10 pm 
HEG 102 
MC 
MATC 
Discrete
mathematics includes those areas of mathematics that are essential to computer
science, information theory, combinatorics, and genetics. This course
emphasizes creative problem solving, linking language to logic, and learning to
read and write proofs. The topics covered include propositional logic,
predicate logic, inductive proof, sets, relations, functions, introductory
combinatorics and discrete probability. Applications drawn from
computation will motivate most topics. Prerequisite: Mathematics 141 or
programming experience. Class
size: 16
18069 
CMSC 201 Data
Structures 
Sven Anderson LAB: 
M W 10:10 am11:30 am F 10:30 am12:30 pm 
RKC 100 RKC 100 
MC 
MATC 
Crosslisted: Mind, Brain, Behavior
This course introduces
students to essential principles of program design and analysis that underlie
applications of computation to internet
communication, digital media, and artificial intelligence.
Building on basic programming skills, we will focus on the construction
of more sophisticated and reliable computer programs that employ the most
important data structures. Data structures, common ways in which data is
organized and manipulated, are an important aspect of modern programs.
Consequently, throughout the course students will learn to create and use
the most useful data structures, including files, lists, stacks, trees, and
graphs. Students will write several
programs, ranging from short lab assignments to larger systems of their own
design. Prerequisite: CMSC 141 or 143,
or permission of the instructor. Class size: 18
18070 
CMSC 220 bioinformatics and beyond: Programming
for Biology 
KerriAnn Norton 
T Th 3:10 pm4:30 pm 
RKC 100 
MC 
MATC 
This course
introduces students with prior objectoriented programming experience to the
basics of bioinformatics and biological statistical analysis. The students will
develop the necessary tools for analyzing and aligning biological sequences,
building phylogenetic trees, and using statistical tests. By the end of this
course they will learn how to develop a hypothesis, test their hypothesis, and
statistically analyze their data.
Prerequisite: CMSC 11X, 141 or 143 (OOP), BIO 244 (BioStats),
or permission of the instructor. Class
size: 18
18071 
CMSC 230 Introduction to Automated Deduction 
Robert McGrail 
T Th 7:30 am8:50 am 
HDR 106 
MC 
MATC 
This course is an
introduction to and survey of techniques of automated deduction. Topics will include propositional, firstorder,
and secondorder logic; satisfiability, term unification; logical resolution;
and Horn clause programming. Optional
topics include term rewriting systems; lambda calculus and type theory; and
general automated theorem proving.
Prerequisite: CMSC 145 or its
equivalent. Class size: 18
18072 
CMSC 301 Algorithms 
Robert McGrail 
T Th 10:10 am11:30 am 
RKC 100 
MC 
MATC 
Crosslisted: Mind, Brain, Behavior The course discusses design and analysis of correct
and efficient computer algorithms. Topics include sorting, greedy algorithms,
divideandconquer algorithms, dynamic programming algorithms, and graph
algorithms. Advanced topics in algorithms may be selected from specialized
areas of the mathematical and empirical sciences. Prerequisites: CMSC 201: Data
Structures; MATH 141: Calculus I; and CMSC 145: Discrete Mathematics (or MATH 261: Proofs and
Fundamentals). Class size: 18
18073 
CMSC 312 Theory of
Computation 
Robert McGrail 
M W 10:10 am11:30 am 
RKC 101 
MC 
MATC 
The course will
introduce several computational models that have been developed to formalize
the notion of an algorithm. It will also discuss in detail several of the
primary topics in the theory of computation including the theory of recursive
functions, Turing machines, and several undecidable problems such as the
Halting problem. Prerequisites: CMSC
145: Discrete Mathematics
or MATH 261: Proofs and Fundamentals. Class
size: 18
18074 
CMSC 326 Operating
Systems 
Sven Anderson LAB: 
M W 3:10 pm4:30 pm F 2:30 pm4:30 pm 
RKC 107 RKC 107 
MC 
MATC 
The operating
system provides the interface that makes it possible for users and their
programs to interact with computer hardware. Whether on a mainframe or mobile
phone, the operating system is makes it possible for a computer to be shared by
many users and processes in a secure manner. This course will examine the
major components of modern operating systems with an emphasis on how processes
and memory
are managed for efficiency and security. Class participants will gain
indepth familiarity with principles of operating system design by modifying
components of a fully functional operating system. Prerequisite: CMSC 201 Data Structures Class
size: 18