Computer Science (CMSC)

Department of Computer Science and Electrical Engineering

KOSTAS KALPAKIS, Graduate Program Director

FININ, TIMOTHY, Ph.D., University of Illinois, Urbana-Champaign; Artificial intelligence, knowledge representation and reasoning, knowledge and database systems, natural language processing, intelligent agents
JOSHI, ANUPAM, Ph.D., Purdue University; Networked/distributed and mobile computing, data/Web mining, multi-media databases, computational intelligence and multi-agent systems, scientific computing
LOMONACO, SAMUEL, Ph.D., Princeton University; Quantum computation, algebraic coding theory, cryptography, numerical and symbolic computation, analysis of algorithms, applications of topology to physics, knot theory and 3-manifolds, algebraic and differential topology, differential geometry
NICHOLAS, CHARLES, Ph.D., Ohio State University; Electronic document processing, software engineering, intelligent information systems
NIRENBURG, SERGEI, Ph.D., Hebrew University of Jerusalem; Natural language processing, artificial intelligence, knowledge-based systems, machine translation, ontological semantics, computational linguistics
PENG, YUN, Ph.D., University of Maryland, College Park; Artificial intelligence, neural networks, medical applications, artificial life
PINKSTON, JOHN T., Ph.D., Massachusetts Institute of Technology; Coding theory, information security, quantam computing
SEGALL, ZARY, D.Sc., Technion; Validation and testing of network quality of service, wearable computers, wearable information systems, mobile wireless computing
SIDHU, DEEPINDER, Ph.D., State University of New York, Stony Brook; Computer networks, distributed systems, distributed and heterogeneous databases, parallel and distributed algorithms, computer and communication security, distributed artificial intelligence, high-performance computing
YESHA, YAACOV, Ph.D., Weizmann Institute, Israel; Parallel computing, computational complexity, algorithms, source coding, speech and image compression
YESHA, YELENA, Ph.D., The Ohio State University; Distributed systems, database systems, digital libraries, e-commerce, performance modeling, design tools for optimizing availability in replicated database systems, efficient and highly fault-tolerant mutual-exclusion algorithms, analytical performance models for distributed and parallel systems

Associate Professors
CHANG, RICHARD, Ph.D., Cornell University; Computational complexity theory, structural complexity, analysis of algorithms
DESJARDINS, MARIE, Ph.D., University of California, Berkeley; Artificial intelligence, machine learning, multi-agent systems, information management
KALPAKIS, KOSTAS, Ph.D., University of Maryland, Baltimore County; Digital libraries, e-commerce, databases, multi-media, parallel and distributed computing, combinatorial optimization
KARGUPTA, HILLOL, Ph.D., University of Illinois, Urbana-Champaign; Distributed knowledge discovery and data mining, computation in gene expression (construction of protein from DNA), genetic algorithms
OATES, TIM, Ph.D., University of Massachusetts; Artificial intelligence, machine learning, robotics, natural language processing
OLANO, MARC, Ph.D. University of North Carolina; Interactive procedural shading
PHATAK, DHANANJAY, Ph.D., University of Massachusetts, Amherst; Mobile and high-performance computer networks; computer arithmetic algorithms and their VLSI implementations; signal processing; neural networks and their applications and efficient implementations; digital and analog VLSI design and CAD
RHEINGANS, PENNY, Ph.D., University of North Carolina, Chapel Hill; Visualization of data with potential uncertainty, multi-variate visualization, dynamic interaction, computer graphics and animation, application of perceptual principles to computer graphics and visualization
SHERMAN, ALAN T., Ph.D., Massachusetts Institute of Technology; Cryptology, discrete algorithms, and voting system security
STEPHENS, BROOKE, Ph.D., University of Maryland, College Park; Numerical analysis, combinatorics, resource allocation, optimization
YOUNIS, MOHAMED, Ph.D., New Jersey Institute of Technology; Distributed real-time systems; fault tolerant computing; wireless networks; embedded computer systems; compiler-based analysis; operating systems.

Research Assistant Professor
BEALE, STEPHEN, Ph.D., Carnegie Mellon University; Natural language processing, constraint satisfaction, solution synthesis, semantics, machine translation
HALEM, MILTON, Ph.D., New York University; high performance computing and communication, large-scale simulations, climate and environmental modeling
MCSHANE, MARJORIE, Ph.D., Princeton University; Computational linguistics, natural language processing, machine translation

Degrees Offered

M.S. (thesis and non-thesis), Ph.D., Graduate Certificate in Systems Engineering

Program Description

The department offers a graduate program leading to the M.S. and Ph.D. degrees in Computer Science. This program provides advanced instruction and training and research opportunities to prepare students for careers in business, industry, academia and government agencies. The program reflects state-of-the-art knowledge in major theoretical and applied aspects of computation. Fields of specialization in computer science (CS) include:

  • Algorithms, theory and scientific computation (analysis of algorithms, algebraic coding theory, combinatorial optimization, computational complexity, cryptology, parallel computing, quantum computing, electronic voting)
  • Computer networks and systems (computer and communication security, distributed systems, networks, parallel and distributed processing, wireless and mobile networks, optical networks, sensor networks)
  • Databases, information and knowledge management (artificial intelligence, database systems, data mining, digital library, e-commerce, information retrieval, intelligent information systems, knowledge representation and reasoning, machine learning, natural language processing, neural networks, robotics, reasoning under uncertainty)
  • Graphics, animation and visualization (animation, interactive 3D graphics, physically based modeling, procedural modeling, volumetric visualization and rendering)

A brochure is available that describes the department, its graduate programs, degree requirements and the research interests of the faculty. A copy can be obtained from the graduate program specialist or can be viewed from

Research Specialties

Ongoing research in the department provides a source of project, thesis and dissertation topics for students. The previous list illustrates some of the current research areas. In addition, the department encourages inter-disciplinary research and invites students to take advantage of resources in related departments, including education, geography, information systems, mathematics and statistics, physics, visual arts and other departments within the College of Engineering and Information Technology or at the University of Maryland, Baltimore (UMB) Medical School. In addition, opportunities exist for joint research projects with local research laboratories, companies and government agencies, including the Library of Congress, the NASA Goddard Space Flight Center, the National Institutes of Health, the National Institute of Standards and Technology, the National Security Agency and the Naval Research Laboratories.

Degree Requirements

Master of Science (M.S.) Degree

Within five years of admission, students must earn a minimum of 30 credit hours with the thesis option, 33 credit hours with the non-thesis option. Students must satisfy the GPA and course requirements for their field of specialty. Each student must complete either a thesis or a scholarly paper. The thesis option requires a minimum of eight graduate-level courses (24 credit hours) and six credit hours of thesis (CMSC 799). The thesis must be defended with an oral exam and accepted with the approval of the student’s master’s thesis committee. The non-thesis option requires a minimum of 10 graduate-level courses (30 credit hours) and three credit hours of CMSC 698 research project work resulting in a scholarly paper that must be approved by the advisor and read by another faculty member.

Core Courses
Each student must take CMSC 611: Architecture, CMSC 621: Operating Systems, and CMSC 641: Algorithms. In addition, each student must take one of the following courses to complete their breadth requirement: CMSC 635: Graphics, CMSC 651: Automata Theory, CMSC 655: Numerical Computation, CMSC 661: Database,CMSC 671: Artificial Intelligence, or CMSC 681: Networks. Students must earn a “B” or better grade in the four core courses.

Additional Courses
Beyond the four breadth courses and the six credits of CMSC 799, Master’s Thesis, a minimum of 12 additional course credits is required for students who choose the thesis option. For students who choose the non-thesis option, the minimum additional course credits are 18. Each field of specialty may specify courses that can be used to satisfy this requirement. Unless approved by the graduate director, each student is allowed to take a maximum of six credits of courses outside the department. These courses must be at the graduate level and be approved by the student’s advisor and the graduate program director prior to the registration.

M.S. Thesis Option

Any CMSC graduate student may undertake a master’s thesis, supervised by a faculty member thesis advisor. Upon completion of the thesis research, the thesis must be defended in a public presentation.

Transfer Credits

No more than six credits may be transferred from another university or from UMBC as a non-degree student. Credit transfer must be approved by the graduate program director.

Doctor of Philosophy (Ph.D.) Degree

Each field of specialty sets its course requirements for doctoral students in that field. The computer science program’s minimum requirement is 11 graduate courses (33 credits) and 12 doctoral dissertation research credits (CMSC 899). The doctoral student must spend the equivalent of at least three years of full-time graduate study and research, with at least one of the years spent on the UMBC campus. The doctoral dissertation must be an original and substantive contribution to knowledge in the student’s major field. It must demonstrate the student’s ability to carry out a program of research and to report the results in accordance with standards observed in the recognized scientific journals related to that field. Doctoral students must (1) pass the comprehensive exam/portfolio within four semesters of entrance to the program (five semesters for part-time students); (2) pass the preliminary examination and be admitted to doctoral candidacy within four years of entrance to the program (within five years for part-time students); and (3) complete all Ph.D. requirements for their field of specialty within four years of admission to doctoral candidacy.

Comprehensive Portfolio
The comprehensive portfolio for CMSC doctoral students consists of the following components: core course requirements, student research statement, independently produced written report, curriculum vitae, copies of important publications and faculty letters of support. The graduate committee will make its decision about the student's continuation in the doctoral program based on evaluating these materials. The student has to submit the portfolio before the end of completing four semesters (for full-time) or five semesters (for part-time).

Course Requirements
Students must satisfy the minimum course requirements (11 graduate courses totaling 33 credit hours) excluding doctoral dissertation research credits. In addition, it is recommended that Ph.D. students achieve a minimum of three "A"s and one "B" in the three core courses (CMSC 611, 621, and 641) plus one from the following list of electives: CMSC 626, 635, 651, 655, 661, 671, 681.

Preliminary Examination (Prelim)
Each student must select a dissertation advisor and a dissertation preliminary examination committee. Student present and defend their dissertation proposal to the preliminary committee.

Ph.D. Candidacy
After passing the prelim and completing the course requirements, the graduate program committee recommends to the Graduate School that the student be admitted to doctoral candidacy.

Dissertation Research
Students conduct and report on a significant original research project under the guidance of their dissertation advisor. This research must be completed and defended within four years of admission to candidacy. Students must be admitted to candidacy at least two full sequential semesters before the date on which the doctoral degree is to be conferred.

Residency Requirements
A minimum of three years of full-time graduate study or its equivalent is required. At least one year of full-time study must be completed at UMBC.

Program Admission Requirements

When seeking admission to the graduate program, applicants must satisfy all entrance requirements of the Graduate School at UMBC. Applications are not processed until all documents and fees are received. All applicants must submit official transcripts, three letters of recommendation, statement of purpose, Graduate Record Examination (GRE General Test) scores and, for international students, scores for the TOEFL. All original application documents must be sent directly to the Graduate School, not the graduate program. Application deadlines are specified by the Graduate School. The application review process will begin by February 15 for admission in the fall semester and by October 1 for admission in the following spring semester. Early application is recommended.

In addition to the requirements of the Graduate School, an applicant to the graduate program in computer science is expected to have a strong background in computer science and mathematics courses. This includes Calculus I and II, linear algebra and at least one more advanced course in mathematics. In addition, applicants are expected to have had the equivalents of the following computer science courses at UMBC:

CMSC 203: Discrete Structures
CMSC 313: Computer Organization and Assembly Language Programming
CMSC 331: Principles of Programming Languages
CMSC 341: Data Structures
CMSC 411: Computer Architecture
CMSC 421: Principles of Operating Systems
CMSC 441: Algorithm Design and Analysis

At least one course from the following list:
CMSC 435: Computer Graphics
CMSC 451: Automata Theory and Formal Languages
CMSC 455: Numerical Computation
CMSC 461: Database Management Systems
CMSC 471: Artificial Intelligence
CMSC 481: Computer Networks

Students may apply for admission to either the M.S. or the Ph.D. program. However, admission to the Ph.D. program is highly selective, and only students with an exceptional background will be accepted. Students who plan to pursue the Ph.D. degree but who do not already have a master’s in computer science are advised to apply for admission to the M.S. program. New students will be assigned an academic advisor who can provide advice on choosing of courses, degree requirements and other important matters during the first year. By the end of the first year, students are expected to have identified a faculty member to serve as the research advisor for master’s or doctoral research. Consideration for continued financial assistance is dependent on identifying a research advisor. Admission to the M.S. and Ph.D. degree programs are separate.

Facilities and Special Resources

The department’s computing facilities include Sun and Silicon Graphics workstations, servers and high-performance graphics workstations. The Office of Information Technology has more than 400 workstations for general student use and several high-end machines. The university’s Imaging Research Center also provides high-end graphics support, including production quality input/output devices and production software (Wavefront, Softimage and Alias).

Financial Assistance

Financial aid is available on a competitive basis to a limited number of qualified graduate students in the form of graduate teaching assistantships (TAs), graduate research assistantships (RAs), work-study positions and hourly employment as graders. Graduate RAs are often available to students actively engaged in a master’s thesis or doctoral dissertation research and are awarded and renewed subject to availability of funds and satisfactory research progress. Students are encouraged to apply directly to nationally awarded fellowship programs.


CMSC 601
Research Skills for Computer Scientists [3]
In this course, students will learn basic skills that are essential to becoming a successful researcher. The objective of the course is to teach research skills in a systematic fashion early in a student’s graduate program. The core of the course is a structured, supervised research project on a topic of the student’s choice. Additional lecture topics include writing and presentation skills, research methodology, experimental design, career options, professional ethics and academic integrity, and oral and written presentation techniques.

CMSC 603
Advanced Discrete Structures [3]
Introduction to the fundamental concepts and techniques of discrete mathematics that are essential for the study of computer science. The main goal of this course is to develop mathematical skills and sophistication for proving theorems, solving problems, and counting and approximating values. Topics include sets; elementary logic; numbers; functions and relations; summations; generating functions; elementary number theory; elementary probability, statistics and combinatorics (e.g. Burnside’s Lemma); and introduction to algebraic systems, including groups and applications of these topics in computer science. Prerequisites: MATH 152, MATH 221 and at least one math course beyond linear algebra.

CMSC 611
Advanced Computer Architecture [3]
Memory-system design, advanced pipeline structures, instruction-level parallelism, compiler-assisted optimization, multi-processor architecture, interconnection network, advances storage systems. Within each topic, the emphasis is on quantitative evaluation and fundamental issues, e.g., data and control dependence, memory bandwidth, reliability, and coherence of distributed storage. Prerequisite: CMSC 411 or consent of instructor.

CMSC 615
Introduction to Systems Engineering and Systems Architecting [3]
The course provides an introduction to systems engineering and systems architecture with an emphasis on software/ communications systems. It introduces systems engineering activities, artifacts and milestones, as well as key systems engineering-related references and tools. Although the course focuses principally on requirements elaboration and analysis, design synthesis and architecture modeling (DOD architecture framework, structured analysis, UML and SysML) and requirements document development and traceability, other topics include: life cycle models, DOD acquisition process, systems engineering process, quality management systems engineering planning and team-building, configuration management, risk management, technical performance measures, analysis and simulation, design and development, verification, validation and testing. Homework and exams are designed to provide the opportunity to practice the concepts learned in class. Prerequisites: B.S. in Computer Science, Information Systems or consent of instructor.

CMSC 618
System Implementation, Integration and Test [3]
This is a second-semester, required, graduate course for the systems engineering (SE) track within the M.S.E.E. program that covers the conversion of a design into product elements, integration of these elements into a system and verification that the resulting system performs properly in its operational environment. The course will address: (1) the systems engineer’s role in the product development organization; (2) processes used to manage product teams, technical budgets, baselines and schedules during product development; (3) integration methodologies and techniques for avoiding or resolving interface issues; and (4) types and methods of product testing. The goal of this course is to acquaint the EE graduate student with an understanding of the processes by which complex aerospace, information or other industry systems are built and tested by integrating the efforts of a large product team encompassing many engineering specialties, and the methods used for technical management of this team and the resulting product. Specific processes depend on the development environment and the product customer. This course emphasizes aerospace and information systems. Prerequisites: ENEE 660 and ENEE 661 or consent of instructor.

CMSC 621
Advanced Operating Systems [3]
This course studies advanced topics in the broad field of operating systems and distributed systems, including architectures of distributed operating systems, foundations of distributed operating systems, synchronization, scheduling, deadlocks handling, consistency and replication, fault tolerance and reliability, file systems and storage management, shared memory, and security. Prerequisite: CMSC 421 or permission of the instructor.

CMSC 625
Modeling and Simulation of Computer Systems [3]
Performance evaluation methods, Markovian queuing models, open networks of queues, closed product form queuing networks, simulation and measurement of computer systems, benchmarking and workload. Prerequisite: CMSC 411, CMSC 421 or consent of instructor.

CMSC 626
Principles of Computer Security [3]
This course will provide an introduction to computer security with a specific focus on the computing aspects. Topics covered 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 628
Introduction to Mobile Computing [3]
This course will introduce students to the techniques and research issues involved with mobile computing, which deals with access to the networked information and computation resources from wirelessly connected palmtop/laptop devices. Topics covered deal with both networking (MAC protocols, ad-hoc routing and mobile IP) and data management (proxy-based systems, mobile DBMS, mobile transactions, sensor networks and stream data) issues.

CMSC 631
Principles of Programming Languages [3]
A comparison of three types of modern programming languages: assertive, functional and logic-based. Fundamental semantic methods, including operational, axiomatic and denotational semantics, and corresponding techniques for program verification, including Hoare’s logic, Dijkstra’s predicate transformers and denotational methods. Prerequisite: CMSC 331 or consent of instructor.

CMSC 634
Computer Graphics [3]
An introduction to the fundamentals of interactive computer graphics. Topics include graphics hardware, line drawing, area filling, clipping, two-dimensional and three-dimensional geometrical transforms, three-dimensional perspective viewing, hidden-surface removal, illumination, color and shading models.

CMSC 635
Advanced Computer Graphics [3]
A study of advanced topics in computer graphics emphasizing algorithms for display of 3D objects, including wireframe representation, polygon mesh models, shading algorithms, parametric representation of curves, hidden surface elimination, fractals and ray tracing. Other topics include advanced topics from the computer graphics literature, page description languages, CORE, GKS, PHIGS, CGI, the X window system, X window intrinsics, Motif and widget programming. Prerequisite: CMSC 435, CMSC 634 or consent of instructor.

CMSC 636
Data Visualization [3]
This course addresses the theoretical and practical issues in creating visual representations of large amounts of data. It covers the core topics in data visualization: data representation, visualization toolkits, scientific visualization, medical visualization, information visualization and volume rendering techniques. Additionally, the related topics of applied human perception and advanced display devices are introduced. Open to computer science students with a background in computer graphics or students in data-intensive fields and a familiarity with computers for data collection, storage or analysis. Prerequisite: CMSC 435, CMSC 634 or consent of instructor.

CMSC 641
Design and Analysis of Algorithms [3]
A study of advanced topics and techniques in discrete algorithms. Assumes student has a solid preparation in undergraduate algorithms (including asymptotic notations, recurrences, divide-and-conquer, greedy algorithms, dynamic programming, and fundamental graph algorithms). Core topics include probabilistic and amortized analysis, network flow, NP-completeness, and parallel algorithms. Selected topics might include: linear programming, computational geometry, randomized algorithms, cryptographic algorithms, and approximation algorithms. Prerequisite: CMSC-441 or equivalent or consent of instructor.

CMSC 643
Quantum Computation [3]
The course begins with a brief overview of those topics in quantum mechanics and mathematics needed to understand quantum computation. It then will focus on quantum algorithms, covering such topics as quantum superposition and quantum entanglement, quantum decoherence, quantum teleportation, quantum Turing machines, Shor’s algorithm, Grover’s algorithm, Hallgren’s algorithm, quantum information theory, quantum data compression, quantum cryptographic protocols, quantum error-correcting codes and implementation issues. Various research-level problems will be discussed. Prerequisite: CMSC 641, CMSC 651 or consent of instructor.

CMSC 644
Information Assurance [3]
Selected recent research topics in information assurance, such as social engineering, buffer overflow, malicious code, spyware, denial of service, information warfare, computer forensics, recovery and response, enterprise security, clandestine channels and emissions security, security analysis, security models and formal techniques, best practices and national policy for information assurance. This course will minimize discussion of intrusion detection, firewalls, operating systems security and mathematical cryptology, which are emphasized in other CMSC security courses. Prerequisite: CMSC 421, CMSC 441 and CMSC 481 or consent of instructor

CMSC 645
Advanced Software Engineering [3]
Modern approaches to software development: requirements analysis, system design techniques, formal description techniques, implementation, testing, debugging, metrics, human factors, quality assurance, cost estimation, maintenance and tools. Prerequisite: CMSC 445 or consent of instructor.

CMSC 651
Automata Theory and Formal Languages [3]
This course begins with a quick review of basic automata theory (regular languages and finite automata, context-free languages and pushdown automata) then moves on to an in-depth treatment of Turing machines and computability. Advanced topics might include an introduction to recursion theory and basic computational complexity theory. Prerequisite: CMSC 451 or equivalent or consent of instructor.

CMSC 652
Cryptography and Data Security [3]
Conventional and public-key cryptography. Selected cryptosystems, including DES and RSA. Digital signatures, pseudo-random number generation, cryptographic protocols and cryptanalytic techniques. Applications of cryptography to e-commerce. Prerequisites: CMSC 441 and MATH 221 or consent of instructor.

CMSC 653
Coding Theory and Applications [3]
An introduction to the theory of error-correcting codes, with an emphasis on applications and implementations. Shannon’s theorems, bounds on code weight distributions, linear codes, cyclic codes, Hamming and BCH codes, linear sequential circuits and encoding/decoding algorithms. Other topics may be drawn from Goppa, Reed Solomon, QR codes, non-linear codes and convolutional codes.

CMSC 655
Numerical Computations [3]
Numerical algorithms and computations in a parallel processing environment. The architecture of supercomputers, vectorizing compilers and numerical algorithms for parallel computers. Prerequisites: CMSC 411 and MATH 221 or consent of instructor.

CMSC 656
Symbolic and Algebraic Processing [3]
Applications and foundations of symbolic algebra. Applications and examples are studied using at least one large symbolic algebra package. Symbolic algebra combines elements of AI, analysis of algorithms and abstract algebra. Foundations include problems of representation, canonical and normal forms, polynomial simplification, Buchberger’s algorithm, G.C.D. in one and several variables, panic methods and formal methods for integration. Prerequisites: CMSC 203 and CMSC 341 or consent of instructor.

CMSC 657
Networks and Combinatorial Optimization [3]
Graph theoretic concepts, uni-modular matrices, transportation problems, minimum-cost network flows, maximal flows in networks, shortest-path algorithms, spanning three problems, multi-commodity flows and decomposition algorithms, assignment and matching problems, computational complexity of algorithms matroid theory and nonlinear network minimization. Prerequisite: CMSC 641 or consent of instructor.

CMSC 661
Principles of Database Systems [3]
Advanced topics in database management systems: data models and their underlying mathematical foundations, database manipulation and query languages, functional dependencies, physical data organization and indexing methods, concurrency control, crash recovery, database security and distributed databases. Prerequisite: CMSC 461 or consent of instructor.

CMSC 665
Introduction to Electronic Commerce [3]
This course focuses on the use of electronic means to pursue business objectives. Special emphasis is placed on students’ ability to do research into existing and emerging technology and to summarize and present their findings clearly. The first part of the course is devoted to enabling technologies, including an introduction to business models for e-commerce and basic infrastructure, an overview of networking technologies and their impact on e-commerce and discussions on database technologies and Web-database connectivity. The second part of the course concentrates on the issues that are not solely technical, such as trust management, privacy and personalization, selling information products, copy protection and the digital divide.

CMSC 666
Electronic Commerce Technology [3]
This course is designed to prepare students to be e-commerce developers. It introduces the students to the changing and competitive landscape of e-commerce technology, products and solutions. The course begins with an introduction to WWW technology, an overview of Web applications and services, discussions on networking technologies with the view toward mobile and wireless commerce, object orientation and Web programming. It also covers Java language and relational databases; database-Web connectivity; inter-process communications in a distributed environment, concentrating on Java RMI and CORBA technologies, JavaScript, dynamic HTML, XML and its applications and component programming with JavaBeans and WebServer servlet architecture. The second part of the course explores the theoretical underpinnings of decision support systems, provides an overview of Web mining and commercial decision support products for e-commerce and introduces the student to agent technology and agent-driven e-commerce.

CMSC 668
Service Oriented Computing [3]
This course addresses the revolutionary concepts of service-oriented architectures (SOA) and Cloud Computing for web service applications arising in science, engineering and commerce. Service oriented computing is a style of loosely coupled multi-tier computing that helps organizations share logic and data among multiple applications and usage modes. The basic suite of web service protocols are presented for invoking autonomic computer-to-computer interactions. A brief introduction to parallel computing principles and languages such as MPI and the Cloud Computing Map Reduce paradigm will be presented. High-end clusters will be available for student projects as well as a tiled hyperwall for visualization services. Prerequisites: CMSC 341 & CMSC 421.

CMSC 671
Principles of Artificial Intelligence [3]
A study of topics central to artificial intelligence, including logic for problem-solving, intelligent search techniques, knowledge representation, inference mechanisms, expert systems and AI programming. Prerequisite: CMSC 471 or consent of instructor.

CMSC 673
Introduction to Natural Language Processing [3]
Natural language processing (NLP) was the first non-numerical application of computing more than 50 years ago. The computers must be able to understand and generate texts. The course will introduce students to the fundamental problems, basic methods and the most important application of NLP. Prerequisites: CMSC 313, knowledge of LISP or consent of instructor.

CMSC 675
Introduction to Neural Networks [3]
A comprehensive study of fundamentals of neural networks. Topics include feed forward and recurrent networks; self-organizing networks and thermodynamic networks; supervised, unsupervised and reinforcement learning; and neural network application in function approximation, pattern analysis, optimization and associative memories.

CMSC 676
Information Retrieval [3]
This course is an introduction to the theory and implementation of software systems designated to search through large collections of text. This course will have two main thrusts. The first is to cover the fundamentals of IR: retrieval models, search algorithms and IR evaluation. The second is to give a taste of the implementation issues through the construction and use of a text search engine. Prerequisite: CMSC 341.

CMSC 677
Agent Architecture and Multi-Agent Systems [3]
Fundamental techniques for developing intelligent agents and multi-agent systems, including cognitive, logic-based, reactive, and belief-desire-intention architectures; inter-agent communication languages and protocols; distributed problem-solving, planning and constraint satisfaction methods; distributed models and rational behavior; and learning and adaptation in multi-agent systems. Prerequisite: CMSC 671 or consent of instructor.

CMSC 679
Introduction to Robotics [3]
Fundamental concepts, methodologies and algorithms related to autonomous mobile robotics, touching on mechanical, motor, sensory, perceptual and cognitive aspects of the problem of building robots that move and decide what to do on their own. Specific topics covered include legged and wheeled location, kinematic models and constraints, mobile robot maneuverability, motion control, sensors and sensing, perception, localization, belief representations, map representations, probabilistic map-based localization, autonomous map building, planning, reacting and navigation architectures.

CMSC 681
Advanced Computer Networks [3]
In-depth coverage of fundamental and advanced concepts in computer networking: protocol design, verification and testing; medium access protocols for next-generation networks; error detection and correction schemes; distributed routing algorithms concepts and mathematical analysis; switching architectures; quality-of-service architectures; admission control and scheduling algorithms; flow and congestion control; multi-cast architectures and protocols; network security; and data compression. Prerequisite: CMSC 481 or consent of instructor.

CMSC 682
Networking Technologies [3]
Topics in networking technologies, including ISDN, ATM/B-ISDN, frame relay, SMDS, routing protocols, IP security, mobile-IP, network management, IP switching, IP/ATM integration and wireless protocols. Prerequisite: CMSC 681 or consent of instructor.

CMSC 683
Computer Network Architecture [3]
Topics central to designing and developing of advanced computer communication network architectures, including distributed and failsafe routing in large and dynamic networks, gateways and interconnection of heterogeneous networks, flow control and congestion avoidance techniques, computer and communication security, communication protocol standards, Internet architecture and protocols and converged networks and architectures. Prerequisite: CMSC 481, CMSC 621 or consent of instructor.

CMSC 685
Optical Network Architectures and Protocols [3]
Optical wavelength division multiplexed (WDM) networks: basic optical devices, optical LANs and multiple-access protocols, optical switching architectures, optical WANs and wavelength-routed networks, virtual topology design, routing protocols and algorithms, wavelength conversion, protection and restoration mechanisms, grooming, testbeds and protocol performance analysis tools. Prerequisite: CMSC 681 or consent of instructor.

CMSC 687
Introduction to Network Security [3]
The objective of this course is the teach 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; electronic mail security; network layer security; transport layer and web security; packet filtering, firewalls, intrusion detection, and virtual private networks; recent topics in network security. Prerequisites: CMSC 341 and CMSC 481.

CMSC 691
Special Topics in Computer Science [1-3]
A set of CMSC 691 courses on various specialized computer science topics are typically offered each semester.

CMSC 696
Independent Study for Interns and Co-Op Students [1-3]
Independent study related to internship and co-op opportunities in computer science. Consent of instructor required.

CMSC 698
Project in Computer Science [1-3]
Individual project on a topic in computer science. The project will result in a scholarly paper, which must be approved by the student’s advisor and be read by another faculty member. Note: Required of non-thesis master’s students. May be repeated up to a maximum of three credits. Prerequisite: Completion of breadth courses or consent of the advisor.

CMSC 699
Independent Study in Computer Science [1-4]
Independent study work will consist of individualized research work with a faculty member.

CMSC 721
Theory of Processes [3]
Formal approaches to the theory of communicating systems of processes and logical systems for reasoning about them. Specific systems may include Milner’s calculus of communicating systems (CCS), Hoare’s communicating sequential processes (CSP) and Kahn’s applications of fixpoint theory to communicating processes. Prerequisite: CMSC 621, CMSC 631, CMSC 681 or consent of instructor.

CMSC 731
Semantics of Programming Languages [3]
The fundamentals of axiomatic and denotational semantics, their corresponding techniques for program specification and verification. Axiomatic methods include Hoare’s logic and Dijkstra’s predicate transformers. Denotational methods include fixpoint theory and an introduction to the lambda calculus. Denotational methods are used to prove the soundness of selected axiomatic proof rules. Prerequisite: CMSC 631 or consent of instructor.

CMSC 741
Theory of NP-Completeness [3]
An in-depth study of the classes P and NP, along with the concepts of reducibility and completeness. NP-complete problems are surveyed, and reduction techniques are examined in greater detail. An important goal is to develop skill at proving problems NP-complete. Prerequisite: CMSC 641 or consent of instructor.

CMSC 742
Parallel Algorithms and Complexity [3]
Models of parallel computation and methods for the representation of parallel algorithms are presented. Measures of parallel complexity and techniques for analyzing algorithms with respect to these new measures and parallel complexity classes, such as NC, are studied. Prerequisite: CMSC 641 or consent of instructor.

CMSC 743
Quantum Information Science [3]
This course will begin with a brief review of quantum mechanics. It then will focus on quantum communication and quantum information, covering such topics as quantum noise and decoherence and quantum process tomography. Quantum error correction, quantum entropy, the Holevo bound, quantum data compression, quantum information over quantum channels, entanglement as a physical resource and advanced quantum cryptographic protocols. Various research-level problems will be discussed. Prerequisite: CMSC 641, CMSC 643, CMSC 651, CMSC 656 or consent of instructor.

CMSC 751
Theory of Computation [3]
This course is an examination of advanced topics in recursion/computability theory and computational complexity theory. Topics in recursion theory might include: the arithmetic hierarchy, oracles, priority methods, finite injury arguments and infinite injury arguments. Topics in computational complexity theory might include: sparse sets, the Polynomial Hierarchy, probabilistic complexity classes, circuit complexity, Kolmogorov complexity, interactive proofs and derandomization. Prerequisite: CMSC 651 or consent of instructor

CMSC 761
Theory of Relational Databases [3]
An in-depth study of relational database theory. Topics include first-order logic, relational calculus and algebra, query languages, query optimization, functional and multi-valued dependencies, normal forms and concurrency control. Prerequisite: CMSC 661 or consent of instructor.

CMSC 771
Knowledge Representation and Reasoning [3]
This course covers advanced issues in representing and reasoning with knowledge. Topics include determining features for and carrying out belief description; naive and logic-oriented approaches to the formal representation of knowledge; logic-based and economic-oriented reasoning mechanisms; statistical and probabilistic representations, and algorithms for implementing reasoning, decision-making and communication, including methods for dealing with incomplete, unsound or time-sensitive knowledge and limited computational resources. Prerequisite: CMSC 671 or consent of instructor

CMSC 781
Distributed Computing [3]
Topics central to designing distributed computing systems, including distributed synchronization and resource sharing, concurrency control in distributed databases, distributed simulations, languages for distributed computing, proof techniques for distributed systems and distributed operating systems. Prerequisites: CMSC 621 and CMSC 681 or consent of instructor.

CMSC 791
Advanced Graduate Seminar [1-3]

CMSC 799
Master’s Thesis Research [1-6]
This course is for students in the CMSC master’s program engaged in master’s thesis research. Note: May be taken for repeated credits, but only a maximum of six credit hours may be applied toward master’s thesis-option requirements. Prerequisite: Open only to CMSC thesis-option students.

CMSC 800
Graduate Research [1-6]
Note: This course is for doctoral students involved in graduate-level research who do not want to register for CMSC 899. Prerequisite: Open only to CMSC graduate students who have passed the doctoral comprehensive exam.

CMSC 891
Advanced Special Topics [1-4]

CMSC 898
Pre-Candidacy Doctoral Research [3-9]
Research on doctoral dissertation conducted under the direction of a faculty advisor before candidacy.

CMSC 899
Doctoral Dissertation Research [9]
This is the dissertation research course for doctoral candidates. Note: May be taken for repeated credits (minimum of two semesters required), but only a maximum of 18 credit hours are applied toward doctoral requirements. Prerequisite: Open only to CMSC graduate students who have been admitted to doctoral candidacy.