# Courses

### CS 502. OPERATING SYSTEMS

The design and theory of multi-programmed operating systems, concurrent processes, process communication, input/output supervisors, memory management, resource allocation and scheduling are studied. (Prerequisites: knowledge of computer organization and elementary data structures, and a strong programming background.)

### CS 503. FOUNDATIONS OF COMPUTER SCIENCE

This is the study of mathematical foundations of computing. Topics include finite automata and regular languages, pushdown automata and context-free languages, Turing machines and decidability, and an introduction to computational complexity. (Prerequisites: Knowledge of discrete mathematics and algorithms at the undergraduate level, and some facility with reading and writing mathematical proofs.)

### CS 504. ANALYSIS OF COMPUTATIONS AND SYSTEMS

The following tools for the analysis of computer programs and systems are studied: probability, combinatorics, the solution of recurrence relations and the establishment of asymptotic bounds. A number of algorithms and advanced data structures are discussed, as well as paradigms for algorithm design. (Prerequisites: CS 5084 or equivalent.)

### CS 509. DESIGN OF SOFTWARE SYSTEMS

This course introduces students to a methodology and specific design techniques for team-based development of a software system. Against the back-drop of the software engineering life-cycle, this course focuses on the object-oriented paradigm and its supporting processes and tools. Students will be exposed to industrial-accepted standards and tools, such as requirements elicitation, specification, modeling notations, design patterns, software architecture, integrated development environments and testing frameworks. Students will be expected to work together in teams in the complete specification, implementation and testing of a software application. Prerequisites: knowledge of a recursive high-level language and data structures. An undergraduate course in software engineering is desirable.

### CS 513. INTRODUCTION TO LOCAL AND WIDE AREA NETWORKS

This course provides an introduction to the theory and practice of the design of computer and communications networks, including the ISO seven-layer reference model. Analysis of network topologies and protocols, including performance analysis, is treated. Current network types including local area and wide area networks are introduced, as are evolving network technologies. The theory, design and performance of local area networks are emphasized. The course includes an introduction to queueing analysis and network programming. (Prerequisites: knowledge of the C programming language is assumed. CS 504 or ECE 502 or equivalent background in CS 5084 or CS 584.)

### CS 521. LOGIC IN COMPUTER SCIENCE

This course is an introduction to mathematical logic from a computer science perspective. Topics covered include the exploration of model theory, proof theory, and decidability for propositional and first-order classical logics, as well as various non-classical logics that provide useful tools for computer science (such as temporal and intuitionistic logics). The course stresses the application of logic to various areas of computer science such as computability, theorem proving, programming languages, specification, and verification. The specific applications included will vary by instructor. (Prerequisites: CS 503, or equivalent background in basic models of computation.)

### CS 522. NUMERICAL METHODS

This course provides an introduction to a broad range of modern numerical techniques that are widely used in computational mathematics, science, and engineering. It is suitable for both mathematics majors and students from other departments. It covers introductory-level material for subjects treated in greater depth in MA 512 and MA 514 and also topics not addressed in either of those courses. Subject areas include numerical methods for systems of linear numerical methods for systems of linear and nonlinear equations, interpolation and approximation, differentiation and integration, and differential equations. Specific topics include basic direct and iterative methods for linear systems; classical rootfinding methods; Newton?s method and related methods for non-linear systems; fixed-point iteration; polynomial, piecewise polynomial, and spline interpolation methods: least-squares approximation; orthogonal functions and approximation; basic techniques for numerical differentiation; numerical integration, including adaptive quadrature; and methods for initial-value problems for ordinary differential equations. Additional topics may be included at the instructor?s discretion as time permits. Both theory and practice are examined. Error estimates, rates of convergence, and the consequences of finite precision arithmetic are also discussed. Topics from linear algebra and elementary functional analysis will be introduced as needed. These may include norms and inner products, orthogonality and orthogonalization, operators and projections, and the concept of a function space. (Prerequisite: knowledge of undergraduate linear algebra and differential equations is assumed, as is familiarity with MATLAB or a higher-level programming language.)

### CS 525. TOPICS IN COMPUTER SCIENCE

A topic of current interest is covered in detail. Please consult the department for a current listing of selected topics in this area. (Prerequisites: vary with topic.) See the SUPPLEMENT section of the on-line catalog at www.wpi.edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 529. MULTIMEDIA NETWORKING

This course covers basic and advanced topics related to using computers to support audio and video over a network. Topics related to multimedia will be selected from areas such as compression, network protocols, routing, operating systems and human computer interaction. Students will be expected to read assigned research papers and complete several programming intensive projects that illustrate different aspects of multimedia computing. (Prerequisites: CS 502 and CS 513 or the equivalent and strong programming skills.)

### CS 530. HIGH-PERFORMANCE NETWORKS

This course is an in-depth study of the theory, design and performance of high-speed networks. Topics include specific high-performance network implementations and emerging technologies, including multimedia networks and quality of service issues. Topics associated with interconnecting networks such as bridges and routers will also be discussed. Performance analysis of networks will include basic queueing models. (Prerequisite: CS 513/ ECE 506.)

### CS 533. MODELING AND PERFORMANCE EVALUATION OF NETWORK AND COMPUTER SYSTEMS

Methods and concepts of computer and communication network modeling and system performance evaluation. Stochastic processes; measurement techniques; monitor tools; statistical analysis of performance experiments; simulation models; analytic modeling and queueing theory; M/M, Erlang, G/M, M/G, batch arrival, bulk service and priority systems; work load characterization; performance evaluation problems. (Prerequisites: CS 5084 or CS 504 or equivalent background in probability and some background in statistics.)

### CS 534. ARTIFICIAL INTELLIGENCE

This course gives a broad survey of artificial intelligence. The course will cover methods from search, probabilistic reasoning, and learning, among other topics. Selected topics involving the applications of these tools are investigated. Such topics might include natural language understanding, scene understanding, game playing, and planning. (Prerequisites: familiarity with data structures and a high-level programming language.)

### CS 535. ADVANCED TOPICS IN OPERATING SYSTEMS

This course discusses advanced topics in the theory, design and implementation of operating systems. Topics will be selected from such areas as performance of operating systems, distributed operating systems, operating systems for multiprocessor systems and operating systems research. (Prerequisites: CS 502 and either CS 5084, CS 504, CS 584, or equivalent background in probability.) See the SUPPLEMENT section of the on-line catalog at www.wpi.edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 536. PROGRAMMING LANGUAGE DESIGN

This course discusses the fundamental concepts and general principles underlying current programming languages and models. Topics include control and data abstractions, language processing and binding, indeterminacy and delayed evaluation, and languages and models for parallel and distributed processing. A variety of computational paradigms are discussed: functional programming, logic programming, object-oriented programming and data flow programming. (Prerequisites: student is expected to know a recursive programming language and to have an undergraduate course in data structures.)

### CS 539. MACHINE LEARNING

The focus of this course is machine learning for knowledge-based systems. It will include reviews of work on similarity-based learning (induction), explanation-based learning, analogical and case-based reasoning and learning, and knowledge compilation. It will also consider other approaches to automated knowledge acquisition as well as connectionist learning. (Prerequisite: CS 534 or equivalent, or permission of the instructor.)

### CS 540. ARTIFICIAL INTELLIGENCE IN DESIGN

The main goal of this course is to obtain a deeper understanding of what ?design? is, and how AI might be used to support and study it. Students will examine some of the recent AI-based work on design problem-solving. The course will be run in seminar style, with readings from the current literature and with student presentations. The domains will include electrical engineering design, mechanical engineering design, civil engineering design and software design (i.e., automatic programming). This course will be of interest to those wanting to prepare for research in design, or those wishing to increase their understanding of expert systems. Graduate students from departments other than computer science are welcome. (Prerequisite: knowledge of artificial intelligence is required. This can only be waived with permission of the instructor).

### CS 542. DATABASE MANAGEMENT SYSTEMS

An introduction to the theory and design of database management systems. Topics covered include internals of database management systems, fundamental concepts in database theory, and database application design and development. In particular, logical design and conceptual modeling, physical d atabase design strategies, relational data model and query languages, query optimization, transaction management and distributed databases. Typically there are hands-on assignments and/or a course project. Selected topics from the current database research literature may be touched upon as well. (Prerequisite: CS 5084, CS 504, or CS 584.)

### CS 543. COMPUTER GRAPHICS

This course examines typical graphics systems, both hardware and software; design of low-level software support for raster displays; 3-D surface and solids modeling; hidden line and hidden surface algorithms; and realistic image rendering including shading, shadowing, reflection, refraction and surface texturing. (Prerequisites: familiarity with data structures, a recursive high-level language and linear algebra. CS 509 would be helpful.)

### CS 544. COMPILER CONSTRUCTION

A general approach to the design of language processors is presented without regard for either the source language or target machine. All phases of compilation and interpretation are investigated in order to give the student an appreciation for the overall construction of a compiler. Typical projects may include implementation of a small compiler for a recursive or special-purpose language. (Prerequisites: knowledge of several higher-level languages and at least one assembly language. The material in CS 503 is helpful.)

### CS 545. DIGITAL IMAGE PROCESSING

This course presents fundamental concepts of digital image processing and an introduction to machine vision. Image processing topics will include visual perception, image formation, imaging geometries, image transform theory and applications, enhancement, restoration, encoding and compression. Machine vision topics will include feature extraction and representation, stereo vision, model-based recognition, motion and image flow, and pattern recognition. Students will be required to complete programming assignments in a high-level language. (Prerequisites: working knowledge of undergraduate level signal analysis and linear algebra; familiarity with probability theory is helpful but not necessary.)

### CS 546. HUMAN-COMPUTER INTERACTION

This course prepares graduate students for research in human-computer interaction. Topics include the design and evaluation of interactive computer systems, basic psychological considerations of interaction, interactive language design, interactive hardware design and special input/output techniques. Students are expected to present and review recent research results from the literature, and to complete several projects. (Prerequisites: students are expected to have mature programming skills. Knowledge of software engineering would be an advantage.)

### CS 548. KNOWLEDGE DISCOVERY AND DATA MINING

This course presents current research in Knowledge Discovery in Databases (KDD) dealing with data integration, mining, and interpretation of patterns in large collections of data. Topics include data warehousing and data preprocessing techniques; data mining techniques for classification, regression, clustering, deviation detection, and association analysis; and evaluation of patterns minded from data. Industrial and scientific applications are discussed. Recommended background: Background in artificial intelligence, databases, and statistics at the undergraduate level, or permission of the instructor. Proficiency in a high level programming language.

### CS 549. COMPUTER VISION

This course examines current issues in the computer implementation of visual perception. Topics include image formation, edge detection, segmentation, shape-from-shading, motion, stereo, texture analysis, pattern classification and object recognition. We will discuss various representations for visual information, including sketches and intrinsic images. (Prerequisites: CS 534, CS 543, CS 545, or the equivalent of one of these courses.)

### CS 557. SOFTWARE SECURITY DESIGN AND ANALYSIS

Software is responsible for enforcing many central security goals in computer systems. These goals include authenticating users and other external principals, authorizing their actions, and ensuring the integrity and confidentiality of their data. This course studies how to design, implement, and analyze mechanisms to enforce these goals in both web systems and programs in traditional languages. Topics include: identifying programming choices that lead to reliable or flawed security outcomes, successful and unsuccessful strategies for incorporating cryptography into software, and analysis techniques that identify security vulnerabilities. The course will cover both practical and theoretical aspects of secure software, and will include a substantial secure software design project. (Prerequisites: Programming and software engineering experience (commensurate with an undergraduate Computer Science major), and background in foundational models of computing systems (on par with CS 5003 or CS 503).)

### CS 558. COMPUTER NETWORK SECURITY

This course covers core security threats and mitigations at the network level. Topics include: denial-of-service, network capabilities, intrusion detection and prevention systems, worms, botnets, Web attacks, anonymity, honeypots, cybercrime (such as phishing), and legality and ethics. The course prepares students to think broadly and concretely about network security; it is not designed to teach students low-level tools for monitoring or maintaining system security. Assignments and projects will assess each student?s ability to think both conceptually and practically about network security. (Prerequisites: a strong background in computer networking and systems, either at the undergraduate or graduate level, and moderate programming experience.)

### CS 559. ADVANCED TOPICS IN THEORETICAL COMPUTER SCIENCE

This course has an instructor-dependent syllabus. See the SUPPLEMENT section of the on-line catalog at www.wpi.edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 561. ADVANCED TOPICS IN DATABASE SYSTEMS

This course covers modern database and information systems as well as research issues in the field. Topics and systems covered may include object oriented, workflow, active, deductive, spatial, temporal and multimedia databases. Also discussed will be recent advances in database systems such as data mining, on-line analytical processing, data warehousing, declarative and visual query languages, multimedia database tools, web and unstructured data sources, and client-server and heterogeneous systems. The specific subset of topics for a given course offering is selected by the instructor. Research papers from recent journals and conferences are used. Group project required. (Prerequisites: CS 542 or equivalent. Expected background includes a knowledge of relational database systems.) See the SUPPLEMENT section of the on-line catalog at www.wpi.edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 562. ADVANCED TOPICS IN SOFTWARE ENGINEERING

This course focuses on the nondesign aspects of software engineering. Topics may include requirements specification, software quality assurance, software project management and software maintenance. (Prerequisite: CS 509.) See the SUPPLEMENT section of the on-line catalog at www.wpi. edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 563. ADVANCED TOPICS IN COMPUTER GRAPHICS

This course examines one or more selected current issues in the area of image synthesis. Specific topics covered are dependent on the instructor. Potential topics include: scientific visualization, computational geometry, photo-realistic image rendering and computer animation. (Prerequisite: CS 543 or equivalent.) See the SUPPLEMENT section of the on-line catalog at www.wpi. edu/+gradcat for descriptions of courses to be offered in this academic year.

### CS 565. USER MODELING

User modeling is a cross-disciplinary research field that attempts to construct models of human behavior within a specific computer environment. Contrary to traditional artificial intelligence research, the goal is not to imitate human behavior as such, but to make the machine able to understand the expectations, goals, knowledge, information needs, and desires of a user in terms of a specific computing environment. The computer representation of this information about a user is called a user model, and systems that construct and utilize such models are called user modeling systems. A simple example of a user model would be an e-commerce site which makes use of the user?s and similar users? purchasing and browsing behavior in order to better understand the user?s preferences. In this class, the focus is on obtaining a general understanding of user modeling, and an understanding of how to apply user modeling techniques. Students will read seminal papers in the user modeling literature, as well as complete a course project where students build a system that explicitly models the user. (Prerequisites: Knowledge of probability.)

### CS 566. GRAPHICAL MODELS FOR REASONING UNDER UNCERTAINTY

This course will introduce students to graphical models, such as Bayesian networks, Hidden Markov Models, Kalman filters, particle filters, and structural equation models. Graphical models are applicable in a wide variety of work in computer science for reasoning under uncertainty such as user modeling, speech recognition, computer vision, object tracking, and determining a robot?s location. This course will cover 1) using data to estimate the parameters and structure of a model using techniques such as expectation maximization, 2) understanding techniques for performing efficient inference on new observations such as junction trees and sampling, and 3) learning about evaluation techniques to determine whether a particular model is a good one. (Prerequisites: CS 534 Artificial Intelligence or permission of the instructor.)

### CS 567. EMPIRICAL METHODS FOR HUMAN-CENTERED COMPUTING

This course introduces students to techniques for performing rigorous empirical research in computer Science. Since good empirical work depends on asking good research questions, this course will emphasize creating conceptual frameworks and using them to drive research. In addition to helping students understand what makes a good research question and why, some elementary statistics will be covered. Furthermore, students will use and implement computationally intensive techniques such as randomization, bootstrapping, and permutation tests. The course also covers experiments involving human subjects, and some of the statistical and non-statistical difficulties researchers often encounter while performing such work (e.g., IRB (Institutional Review Board), correlated trials, and small sample sizes). While this course is designed for students in Human Computer Interaction, Interactive Media and Game Development, and Learning Sciences and Technologies, it is appropriate for any student with programming experience who is doing empirical research. (Prerequisites: MA 511 Applied Statistics for Engineers and Scientists or permission of the instructor.)

### CS 568. ARTIFICIAL INTELLIGENCE FOR ADAPTIVE EDUCATIONAL TECHNOLOGY

Students will learn how to enable educational technology to adapt to the user and about typical architectures used by existing intelligent tutoring systems for adapting to users. Students will see applications of decision theoretic systems, reinforcement learning, Markov models for action selection, and Artificial Intelligence (AI) planning. Students will read papers that apply AI techniques for the purpose of adapting to users. Students will complete a project that applies these techniques to build an adaptive educational system. (Prerequisites: CS 534 Artificial Intelligence or permission of the instructor.)

### CS 569. ADV TOPICS IN COMPUTR SECURITY

This course examines one or more selected current issues in the area of computer security. Specific topics covered are dependent on the instructor. Potential topics include: modeling and analyzing security protocols, access-control, network security, and human-centered security. (Prerequisites: a graduate level security course or equivalent experience. See the SUPPLEMENT section for descriptions of courses to be offered in this academic year.)

### CS 571. CASE STUDIES IN COMPUTER SECURITY

This course examines security challenges and failures holistically, taking into account technical concerns, human behavior, and business decisions. Using a series of detailed case studies, students will explore the interplay among these dimensions in creating secure computing systems and infrastructure. Students will also apply lessons from the case studies to emerging secure-systems design problems. The course requires active participation in class discussions, presentations, and writing assignments. It does not involve programming, but assumes that students have substantial prior experience with security protocols, attacks, and mitigations at the implementation level. This course satisfies the behavioral component of the MS specialization in computer security. (Prerequisites: A prior course or equivalent experience in technical aspects of computer security, at either the software or systems level.)

### CS 577. ADVANCED COMPUTER AND COMMUNICATIONS NETWORKS

This course covers advanced topics in the theory, design and performance of computer and communications networks. Topics will be selected from such areas as local area networks, metropolitan area networks, wide area networks, queueing models of networks, routing, flow control, new technologies and protocol standards. The current literature will be used to study new networks concepts and emerging technologies. (Prerequisite: CS 513/ ECE 506 and CS 533/ ECE 581.)

### CS 578. CRYPTOGRAPHY AND DATA SECURITY

This course gives a comprehensive introduction to the field of cryptography and data security. The course begins with the introduction of the concepts of data security, where classical algorithms serve as an example. Different attacks on cryptographic systems are classified. Some pseudo-random generators are introduced. The concepts of public and private key cryptography are developed. As important representatives for secret key schemes, DES and IDEA are described. The public key schemes RSA and ElGamal, and systems based on elliptic curves are then developed. Signature algorithms, hash functions, key distribution and identification schemes are treated as advanced topics. Some advanced mathematical algorithms for attacking cryptographic schemes are discussed. Application examples will include a protocol for security in a LAN and a secure smart card system for electronic banking. Special consideration will be given to schemes which are relevant for network environments. For all schemes, implementation aspects and up-to-date security estimations will be discussed. (Prerequisites: Working knowledge of C; an interest in discrete mathematics and algorithms is highly desirable. Students interested in a further study of the underlying mathematics may register for MA 4891 [B term], where topics in modern algebra relevant to cryptography will be treated.)

### CS 582. BIOVISUALIZATION

This course will use interactive visualization to model and analyze biological information, structures, and processes. Topics will include the fundamental principles, concepts, and techniques of visualization (both scientific and information visualization) and how visualization can be used to study bioinformatics data at the genomic, cellular, molecular, organism, and population levels. Students will be expected to write small to moderate programs to experiment with different visual mappings and data types. (Prerequisite: strong programming skills, an undergraduate or graduate course in algorithms, and one or more undergraduate biology courses.) Students may not receive credit for both CS 582 and CS 4802.

### CS 583. BIOLOGICAL AND BIOMEDICAL DATABASE MINING

This course will investigate computational techniques for discovering patterns in and across complex biological and biomedical sources including genomic and proteomic databases, clinical databases, digital libraries of scientific articles, and ontologies. Techniques covered will be drawn from several areas including sequence mining, statistical natural language processing and text mining, and data mining. (Prerequisite: strong programming skills, an undergraduate or graduate course in algorithms, an undergraduate course in statistics, and one or more undergraduate biology courses.) Students may not receive credit for both CS 583 and CS 4803.

### CS 584. ALGORITHMS: DESIGN AND ANALYSIS

This covers the same material as CS 5084 though at a more advanced level. As background, students should have experience writing programs in a recursive, high-level language and should have the background in mathematics that could be expected from a BS in Computer Science.

### CS 5003. FOUNDATIONS OF COMPUTER SCIENCE: AN INTRODUCTION

This is the study of mathematical foundations of computing, at a slower pace than that of CS 503 and with correspondingly fewer background assumptions. Topics include finite automata and regular languages, pushdown automata and context-free languages, Turing machines and decidability, and an introduction to computational complexity. (Prerequisite: an undergraduate course in discrete mathematics.)

### CS 5084. INTRODUCTION TO ALGORITHMS: DESIGN AND ANALYSIS

This course is an introduction to the design, analysis and proofs of correctness of algorithms. Examples are drawn from algorithms for many areas. Analysis techniques include asymptotic worst case and average case, as well as amortized analysis. Average case analysis includes the development of a probability model. Techniques for proving lower bounds on complexity are discussed, along with NP-completeness. Prerequisites: an undergraduate knowledge of discrete mathematics and data structures. Note: students with a strong background in design and analysis of computer systems, at the level equal to a BS in computer science, should not take CS 5084 and should consider taking CS 504 or CS 584.