Below is a detailed list of courses. Click to expand and view the table.

Course List
Course Number Title
RUSS 101 Basic Russian I
Emphasis on structure, comprehension, speaking skills and reading skills. Exposure to idiomatic Russian language, as well as an introduction to Russian culture and society.
CMSC 201 Computer Science I
Introduction to computer science through problem solving and computer programming. Covered control structures, functions, lists, strings, abstract data types, file I/O, and recursion. Programming techniques covered include modularity, abstraction, top-down design, specifications documentation, debugging and testing.
CMSC 202 Computer Science II
Introduction to object-oriented design and programming (OOP) focusing on OOP principles and techniques, including encapsulation, composition, inheritance, and polymorphism. Other OOP topics such as exception handling, containers, and generic programming are also covered.
CMSC 203 Discrete Structures
Introduction to the fundamental tools, topics and concepts of discrete mathematics needed to study computer science. Emphasizes counting methods, proof techniques and problem-solving strategies. Topics include Boolean algebra; set theory; symbolic logic; predicate calculus; number theory; the methods of direct, indirect and inductive proofs; objective functions; equivalence relations; graphs; set partitions; combinatorics; modular arithmetic; summations; and recurrences.
MATH 221 Introduction to Linear Algebra
Covered linear equations, Gauss-Jordan reduction, matrices and determinants and their properties, vector spaces and subspaces, basis and dimension, linear transformations, kernel and range, eigenvalues and eigenvectors, and matrix diagonalization.
CMSC 304 Ethical Issues in Information Technology
Survey course that reviews social issues and the ethical impact of information technology throughout the world. Examined the policy issues that relate to the use of information technology, such as persona, privacy, rights of access, security, transborder information flow and confidentiality.
CMSC 341 Data Structures
Examination of a range of advanced data structures, with an emphasis on an object-oriented approach. Topics included asymptotic analysis, various binary search trees,skip lists as alternatives to binary search trees, data structures for multidimensional data, heaps and priority queues, B-trees for external storage, hash tables, and disjoint sets. Projects focusing on implementation issues for data structures and on empirical analysis of asymptotic performance.
CMSC 313 Computer Organization & Assembly Language Programming
Introduction to the low-level abstraction of a computer system from a programmer's point of view, with an emphasis on low-level programming. Topics include data representation, assembly language programming, C programming, the process of compiling and linking, low-level memory management, exceptional control flow, and basic processor architecture.
CMSC 331 Principles of Programming Language
Examined the theory, design and implementation of programming languages. Topics include specifications of syntax and semantics, declarations, binding, allocation, data structures, data types, control structures, control and data flow, concurrency, and the implementation and execution of programs. Explored major language paradigms, including imperative, object-oriented, functional, logic programming, concurrent and others.
STAT 355 Intro to Probability & Statistics for Scientists & Engineers
Introduction to applied statistics designed for science majors. Topics included nature of statistical methods, random variables and their distribution functions, and general principles of estimation and hypothesis testing.
CMSC 441 Design & Analysis of Algorithms
Studied fundamental algorithms, strategies for designing algorithms, and mathematical tools for analyzing algorithms. Fundamental algorithms studied in this course include algorithms for sorting and searching, hashing, and graph algorithms. Mathematical tools include asymptotic notations and methods for solving recurrences. Algorithm design strategies included the greedy method, divide-and-conquer, dynamic programming, and randomization.
CMSC 421 Principles of Operating Systems
Introduction to the fundamentals of operating systems. Topics include interprocess communication, process scheduling, deadlock, memory management, virtual memory, file systems and distributed systems. Formal principles are illustrated with examples and case studies of one or more contemporary operating systems.
CMSC 426 Principles of Computer Security
Introduction to computer security, with specific focus on the computing aspects. Topics covered will include basics of computer security including an overview of threat, attack, and adversary models; social engineering; essentials of cryptography; traditional computing security models; malicious software; secure programming; operating system security in practice; trusted operating system design; public policy issues including legal, privacy, and ethical issues; network and database security overview.
CMSC 481 Computer Networks
Introduction to the fundamentals of data communication and computer networking, including circuit and packet switching, network architectures and protocols, local/metropolitan/wide-area networks, OSI and TCP/IP standards, network programming and applications, and network management.
CMSC 411 Computer Architecture
Design of complex computer systems making heavy use of the components and techniques discussed in other courses. Discussed in detail all parts of the computer system - CPU, memory and input/output. Topics include information representation, floating-point arithmetic, instructions set design issues (RISC vs. CISC), microprogrammed control, hardwired control, pipelining, memory caches, bus control and timing, input/output mechanism and issues in the construction of parallel processors.
CMSC 447 Software Engineering I
Introduction to the basic concepts of software engineering, including software life cycle, requirements analysis and software design methods. Professional ethics in computer science and the social impact of computing are discussed as an integral part of the software development process. Additional topics may include tools for software development, software testing, software metrics and software maintenance.
CMSC 449 Malware Analysis
Introduction to sophisticated malware attacks through analysis of malware with both static and dynamic methods. Provided a foundation for understanding emerging trends in malware designs, including efforts to deter analysis. Through discussion and hands-on projects, covered object file formats, and the use of tools such as debuggers, virtual machines, and disassemblers, as well as obfuscation and packing schemes and various issues related to operating systems internals.
CMSC 487 Introduction To Network Security
Covered the fundamental concepts, architectures, and protocols related to network security. Topics covered include: Overview of network security, basics of cryptography, threat models, authentication and authorization mechanisms and standards, public key infrastructure, email security, network layer lecurity, transport layer and web security, packet filtering, firewalls, intrusion detection, and virtual private networks, as well as recent topics in Network Security.
CMSC 491 Seminar in Active Cyberdefense