Computer Science
All courses are 3 credits unless otherwise noted.CS 502. Operating Systems
The design and theory of multiprogrammed 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 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 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 505. Social Implications of Computing
This course is concerned with the effects of computer technology on society. It will explore a wide range of topics including privacy, liability, proprietary protection, the effects of artificial intelligence on humanity’s view of itself and globalization. It will also consider the issues of professional ethics and professional responsibility, as well as discrimination in the workplace, in education and in user interfaces. Papers, presentations, discussions, extensive readings and a course project are possible components of this course. (Prerequisites: a college degree and either two computer science classes or a year’s experience in the computer industry including sales and management.)
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.
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 backdrop 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/ECE 506. 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 514/ECE 572. Advanced Systems Architecture
See ECE 572
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 iseful tools for computer science (such as temporal and intuitionalistic 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/MA 510. Numerical Methods
See MA 510 course description.
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 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 mulimedia 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 programmming intensive projects that illustrate different aspects of multimedia computing. (Prerequisites: CS 502 and CS 513 or the equivalent and strong programming skills.)
CS 530/ECE 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 531. System Simulation
The theory and design of discrete simulations are discussed. Other topics are random number generations, analysis of output and optimization. (Prerequisites: CS 504 or equivalent background in probability and some background in statistics.)
CS 533/ECE 581. 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. Several basic techniques such as search methods, formal proofs and knowledge representation are covered. Selected topics involving the applications of these tools are investigated. Such topics might include natural language understanding, scene understanding, game playing, learning and planning. (Prerequisites: familiarity with data structures and a recursive high-level language. Knowledge of LISP is an advantage.)
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 multi-processor 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 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 538. Knowledge-Based Systems
The course will review knowledge-based problem-solving systems. It will concentrate on an analysis of their architecture, knowledge and problem-solving style in order to classify and compare them. An attempt will be made to evaluate the contribution to our understanding of problems that such systems can tackle. (Prerequisite: CS 534 or equivalent or permission of the instructor.)
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 data-base 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 database 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/ECE 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/RBE 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 556. Foundational Aspects of Database Systems
This course will cover the logic-based foundations of database systems. The theory and implementation of advanced query languages such as datalog will be a central focus: typical topics include fixed-point semantics of recursive queries, checking safety of queries, implementation techniques such as fix-point and magic sets, and advanced optimization techniques such as join-minimization and decorrelation. Other topics covered will include theoretical foundations of data integration, as well as algorithms and techniques for data warehousing and view maintenance. (Prerequisites: CS 542 or equivalent.)
CS 559. Advanced Topics in Theoretical Computer Science
This course has an instructor-dependent syllabus. See the SUPPLEMENT section 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 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 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 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 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 577/ECE 537. 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/ECE 578. Cryptography and Data Security
See ECE 578 course description.
CS 584. Algorithms: Design and Analysis
This covers the same material as CS5084 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 595/ECE 595. Computer and Communications Networks Internship
6 credits
This project will provide an opportunity to put into practice the principles which have been studied in previous courses. It will generally be conducted off campus and will involve a real-world networking situation. Overall conduct of the internship will be supervised by a WPI faculty member and an on-site liaison will direct day-to-day activity. The project must include substantial analysis and/or design related to computer or communications networking and will conclude with a substantial written report. A public oral presentation must also be made, to both the host organization and a committee consisting of the supervising faculty member, the on-site liaison and one additional WPI faculty member. Successful completion of the internship will be verified by this committee. For a student from industry, an internship may be sponsored by his or her employer. (Prerequisite: completion of 12 credits of the CCN program; CS 598 Directed Research, CS 599 Master’s Thesis, or CS 699 Ph.D. Dissertation.)
