18065 
CMSC 141 Object
Oriented Programming 
KerriAnn Norton 
M W 10:10 am11:30 am 
HEG 102 
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