# Computer Science

## Undergraduate Courses

### CS 1004. INTRODUCTION TO PROGRAMMING FOR NON-MAJORS

Cat. I

This course introduces students to the fundamental principles of

programming in imperative and scripting languages. Topics include control

structures, iterators, functional decomposition, basic data structures (such

as records). Students will be expected to implement, test and debug

programs. Through the use of compelling applications and lab exercises,

students will learn how to interface with external data systems and control

devices.

Recommended background: none.

All Computer Science students and other students wishing to prepare for

3000-level courses in Computer Science should take CS 1101/1102

instead of CS 1004. This course provides sufficient background for CS

2301 Systems Programming for Non-Majors.

### CS 1101. INTRODUCTION TO PROGRAM DESIGN

This course introduces principles of computation and programming with an emphasis on program design. Topics include the design, implementation and testing of programs that use a variety of data structures (such as structures, lists, and trees), functions, conditionals, recursion and higher-‐order functions. Students will be expected to design simple data models, and implement and debug programs in a functional programming language.

Recommended background: none.

Either CS 1101 or CS 1102 provides sufficient background for further courses in the CS department. Undergraduate credit may not be earned for both this course and CS 1102.

### CS 1102. ACCELERATED INTRODUCTION TO PROGRAM DESIGN

In the first half of the term, this course covers the same functional programming material as CS 1101 at roughly twice the pace. The second half of the term is a preview of selected advanced Computer Science topics, such as the design and implementation of application-specific languages, macros, programming with the HTTP protocol and continuation-passing style. Students will be expected to complete an open-ended individual programming project.

Recommended background: Substantial prior programming experience (including functions, recursion, and lists, as would be covered in high-school Advanced Placement Computer Science A courses, but not necessarily AP CS Principles courses). Either CS 1101 or CS 1102 provides sufficient background for further courses in the CS department. Undergraduate credit may not be earned for both this course and CS 1101.

### CS 2011. INTRODUCTION TO MACHINE ORGANIZATION AND ASSEMBLY LANGUAGE

Cat. I

This course introduces students to the structure and behavior of modern digital

computers and the way they execute programs. Machine organization topics include the Von Neumann model of execution, functional organization of computer hardware, the memory hierarchy, caching performance, and pipelining. Assembly language topics include representations of numbers in computers, basic instruction sets, addressing modes, stacks and procedures, low-level I/O, and the functions of compilers, assemblers, linkers, and loaders. The course also presents how code and data structures of higher-level languages are mapped into the assembly language and machine representations of a modern processor. Programming projects will be carried out in the C language and the assembly language of a modern processor.

Recommended background: CS 2301 or CS 2303, or a significant knowledge of C/C++.

### CS 2022. DISCRETE MATHEMATICS

Cat. I

This course serves as an introduction to some of the more important concepts,

techniques, and structures of discrete mathematics, providing a bridge between

computer science and mathematics.

Topics include sets, functions and relations, propositional and predicate calculus, mathematical induction, properties of integers, counting techniques and graph theory.

Students will be expected to develop simple proofs for problems drawn

primarily from computer science and applied mathematics.

Recommended background: none.

### CS 2102. OBJECT-ORIENTED DESIGN CONCEPTS

Cat. I

This course introduces students to an object-oriented model of programming.

Building from the design methodology covered in CS 1101/CS 1102, this

course shows how programs can be decomposed into classes and objects. By

emphasizing design, this course shows how to implement small defect-free

programs and evaluate design decisions to select an optimal design under specific

assumptions. Topics include inheritance, exceptions, interface, design by

contract, basic design patterns, and reuse. Students will be expected to design,

implement, and debug object-oriented programs composed of multiple classes

and over a variety of data structures.

Recommended background: CS 1101 or CS 1102.

### CS 2103. ACCELERATED OBJECT-ORIENTED DESIGN CONCEPTS

This course covers the data structures and general program-design material from CS2102, but assumes that students have significant prior experience in object-oriented programming. The course covers object-oriented design principles and data structures more deeply and at a faster pace than in CS 2102. Students will be expected to design, implement, test, debug, and critique programs both for correctness and adherence to good object-oriented design principles. The course is designed to strengthen both the design skills and algorithmic thinking of students who already have a foundation in object-oriented programming. Recommended background: CS 1101 or CS 1102 and significant prior experience writing object-oriented programs from scratch. Advanced Placement Computer Science A courses should provide sufficient background; students from AP CS Principles courses or gentler introductions to Java Programming are advised to take CS2102 instead. Students may receive credit for only one of the following three courses: CS 2102, CS 210X, CS 2103.

### CS 2119. APPLICATION BUILDING WITH OBJECT-ORIENTED CONCEPTS

Cat. I

This course introduces students to an object-oriented model of programming, with an emphasis on the programming approaches useful in creating software applications. Students will be expected to design, implement, and debug object-oriented programs. Topics include inheritance, user interfaces, and database access. This course is for non-CS majors with prior programming experience and an interest in building software applications.

Recommended background: Some programming experience such as found in CS 1004, CS 1101, or CS 1102.

### CS 2223. ALGORITHMS

Cat. I

Building on a fundamental knowledge of data structures, data abstraction

techniques, and mathematical tools, a number of examples of algorithm design

and analysis, worst case and average case, will be developed.

Topics include greedy algorithms, divide-and-conquer, dynamic programming,

heuristics, and probabilistic algorithms. Problems will be drawn from areas such

as sorting, graph theory, and string processing. The influence of the computational

model on algorithm design will be discussed.

Students will be expected to perform analysis on a variety of algorithms.

Recommended background: CS 2102 and CS 2022.

### CS 2301. SYSTEMS PROGRAMMING FOR NON-MAJORS

Cat. I

This course introduces the C programming language and system programming

concepts to non-CS majors who need to program computers in their own fields.

The course assumes that students have had previous programming experience. It

quickly introduces the major concepts of the C language and covers manual

memory management, pointers and basic data structures, the machine stack,

and input/output mechanisms. Students will be expected to design, implement,

and debug programs in C.

Recommended background: CS 1101 or CS 1102 or previous experience

programming a computer.

All Computer Science students and other students

wishing to prepare for upper-level courses in Computer Science should take

CS 2303 instead of CS 2301. Students who have credit for CS 2303 may not

receive subsequent credit for CS 2301.

### CS 2303. SYSTEMS PROGRAMMING CONCEPTS

Cat. I

This course introduces students to a model of programming where the

programming language exposes details of how the hardware stores and executes

software. Building from the design concepts covered in CS 2102, this course

covers manual memory management, pointers, the machine stack, and input/

output mechanisms. The course will involve large-scale programming exercises

and will be designed to help students confront issues of safe programming with

system-level constructs. The course will cover several tools that assist programmers

in these tasks. Students will be expected to design, implement, and debug

programs in C++ and C. The course presents the material from CS 2301 at a

fast pace and also includes C++ and other advanced topics.

Recommended background: CS 2102 and/or substantial object-oriented

programming experience.

### CS 3013. OPERATING SYSTEMS

Cat. I

This course provides the student with an understanding of the basic components

of a general-purpose operating system. Topics include processes, process

management, synchronization, input/output devices and their programming,

interrupts, memory management, resource allocation, and an introduction to

file systems. Students will be expected to design and implement a large piece of

system software in the C programming language.

Undergraduate credit may not be earned both for this course and for CS 502.

Recommended background: CS 2303 or CS 2301, and CS 2011.

### CS 3041. HUMAN-COMPUTER INTERACTION

Cat. I

This course develops in the student an understanding of the nature and

importance of problems concerning the efficiency and effectiveness of human

interaction with computer-based systems.

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 will be expected to complete several projects. A project might be a

software evaluation, interface development, or an experiment.

Recommended background: CS 2102 or CS 2118.

### CS 3043. SOCIAL IMPLICATIONS OF INFORMATION PROCESSING

Cat. I

This course makes the student aware of the social, moral, ethical, and

philosophical impact of computers and computer-based systems on society, both

now and in the future.

Topics include major computer-based applications and their impact, humanmachine

relationships, and the major problems of controlling the use of

computers.

Students will be expected to contribute to classroom discussions and to

complete a number of significant writing assignments.

This course is recommended for juniors and seniors.

Undergraduate credit may not be earned both for this course and for CS 505.

Recommended background: a general knowledge of computers and computer

systems.

### CS 3133. FOUNDATIONS OF COMPUTER SCIENCE

Cat. I

This course introduces the theoretical foundations of computer science. These

form the basis for a more complete understanding of the proficiency in

computer science.

Topics include computational models, formal languages, and an introduction to

compatibility and complexity theory, including NP-completeness.

Students will be expected to complete a variety of exercises and proofs.

Undergraduate credit may not be earned both for this course and for CS 5003.

Recommended Background: Discrete mathematics (CS 2022 or equivalent) and algorithms (CS 2223 or equivalent).

Students who have credit for CS 4121 cannot receive credit for CS 3133.

### CS 3431. DATABASE SYSTEMS I

Cat. I

This course introduces the student to the design, use, and application of

database management systems.

Topics include the relational data model, relational query languages, design

theory, and conceptual data design and modeling for relational database design.

Techniques that provide for data independence, and minimal redundancy will

be discussed.

Students will be expected to design and implement database system

applications.

Undergraduate credit may not be earned both for this course and for CS 4431

or CS 542.

Recommended background: CS 2022 and either CS 2102 or CS 2118.

### CS 3516. COMPUTER NETWORKS

Cat. I

This course provides a broad view of computer networks. The course exposes students to all seven layers of OSI Reference Model while providing an introduction into newer topics such as wireless networking and Internet traffic concerns. The objective is to focus on an understanding of fundamental concepts of modern computer network architecture from a design and performance perspective. Topics covered include: physical layer considerations, network protocols, wide area networks, local area networks, wireless networks, switches and routing, congestion, Internet traffic and network security. Students will be expected to do extensive systems/network programming and will be expected to make use of simulation and measurement tools to gain an appreciation of current network design and performance issues.

This course is also highly recommended for RBE and IMGD majors.

Recommended background: CS 2301 or CS 2303, or a significant knowledge of C/C++.

### CS 3733. SOFTWARE ENGINEERING

Cat. I

This course introduces the fundamental principles of software engineering.

Modern software development techniques and life cycles are emphasized.

Topics include requirements analysis and specification, analysis and design,

architecture, implementation, testing and quality, configuration management,

and project management.

Students will be expected to complete a project that employs techniques from

the topics studied.

This course should be taken before any course requiring a large programming

project.

Undergraduate credit may not be earned both for this course and for CS 509.

Recommended background: CS 2102.

### CS 4032. NUMERICAL METHODS FOR LINEAR AND NONLINEAR SYSTEMS

Cat. I

This course provides an introduction to modern computational methods for

linear and nonlinear equations and systems and their applications.

Topics covered include: solution of nonlinear scalar equations, direct and

iterative algorithms for the solution of systems of linear equations, solution of

nonlinear systems, the eigenvalue problem for matrices. Error analysis will be

emphasized throughout.

Recommended background: MA 2071. An ability to write computer programs

in a scientific language is assumed.

### CS 4033. NUMERICAL METHODS FOR CALCULUS AND DIFFERENTIAL EQUATIONS

Cat. I

This course provides an introduction to modern computational methods for

differential and integral calculus and differental equations.

Topics covered include: interpolation and polynomial approximation,

approximation theory, numerical differentiation and integration, numerical

solutions of ordinary differential equations. Error analysis will be emphasized

throughout.

Recommended background: MA 2051. An ability to write computer programs

in a scientific language is assumed. Undergraduate credit may not be earned for

both this course and for MA 3255/CS 4031.

### CS 4100. ARTIFICIAL INTELLIGENCE FOR INTERACTIVE MEDIA AND GAMES

Cat. II

Algorithms and programming techniques from artificial intelligence (AI) are key contributors to the experience of modern computer games and interactive media, either by directly controlling a non-player character (NPC) or through more subtle manipulation of the environment. This course will focus on the practical AI programming techniques currently used in computer games for NPC navigation and decision-making, along with the design issues that arise when AI is applied in computer games, such as believability and real-time performance. The course will also briefly discuss future directions in applying AI to games and media. Students will be expected to complete significant software development projects using the studied techniques.

Recommended background: object-oriented design concepts (CS 2102), algorithms (CS 2223), and knowledge of technical game development (IMGD 3000).

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4120. ANALYSIS OF ALGORITHMS

Cat. II

This course develops the skill of analyzing the behavior of algorithms.

Topics include the analysis, with respect to average and worst case behavior

and correctness, of algorithms for internal sorting, pattern matching on strings,

graph algorithms, and methods such as recursion elimination, dynamic

programming, and program profiling.

Students will be expected to write and analyze programs.

Undergraduate credit may not be earned both for this course and for CS 5084.

Recommended background: algorithms (CS 2223 or equivalent), and some knowledge of probability.

This course will be offered in 2020-21, and in alternating years thereafter.

### CS 4123. THEORY OF COMPUTATION

Cat. II

Building on the theoretical foundations from CS 3133, this course addresses the

fundamental question of what it means to be “computable,” including different

characterization of computable sets and functions.

Topics include the halting program, the Church-Turing thesis, primitive

recursive functions, recursive sets, recursively enumerable sets, NP-completeness,

and reducibilities.

Students will be expected to complete a variety of exercises and proofs.

Recommended Background: CS 3133.

This course will be offered in 2015-16, and in alternating years thereafter.

### CS 4233. OBJECT-ORIENTED ANALYSIS AND DESIGN

Cat. II

This Software Engineering course will focus on the process of Object-Oriented

Analysis and Design. Students will be expected to complete a large number of

exercises in Domain Modeling, Use Case Analysis, and Object-Oriented Design. In addition, the course will investigate Design Patterns, which are elements of

reusable object-oriented software designs. This course will survey a set of design

patterns and consider how these patterns are described and used to solve design

problems.

Recommended Background: CS 2303 and CS 3733.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4241. WEBWARE: COMPUTATIONAL TECHNOLOGY FOR NETWORK INFORMATION SYSTEMS

Cat. I

This course explores the computational aspects of network information systems

as embodied by the World Wide Web (WWW). Topics include: languages for

document design, programming languages for executable content, scripting

languages, design of WWW based human/computer interfaces, client/server

network architecture models, high level network protocols (e.g., http), WWW

network resource discovery and network security issues.

Students in this course will be expected to complete a substantial software

project (e.g., Java based user interface, HTML/CGI based information system,

WWW search mechanisms).

Recommended background: CS 2102 and CS 3013.

### CS 4341. INTRODUCTION TO ARTIFICIAL INTELLIGENCE

Cat. I

This course studies the problem of making computers act in ways which we call

"intelligent".

Topics include major theories, tools and applications of artificial intelligence,

aspects of knowledge representation, searching and planning, and natural

language understanding.

Students will be expected to complete projects which express problems that

require search in state spaces, and to propose appropriate methods for solving

the problems.

Undergraduate credit may not be earned both for this course and for CS 534.

Recommended background: CS 2102, CS 2223, and CS 3133.

### CS 4342. MACHINE LEARNING

Cat.I

In this course, students will explore both theoretical and practical aspects of machine learning, including algorithms for regression, classification, dimensionality reduction, clustering, and density estimation. Specific topics may include neural networks and deep learning, Bayesian networks and probabilistic graphical models, principal component analysis, k-means clustering, decision trees and random forests, support vector machines, and kernel methods.

Recommended background: Multivariate Calculus (MA 1024 or MA 1034), Linear Algebra (such as MA 2071), Probability (MA 2621 or MA 2631), and Algorithms (CS 2223).

Students may not earn credit for both CS 453X and CS 4342.

Undergraduate credit may not be earned both for this course and for CS 539.

### CS 4401. SOFTWARE SECURITY ENGINEERING

Cat. I

This course provides an introduction to the pitfalls and practices of building

secure software applications. Topics will include threat modeling, secure software

development, defensive programming, web security and the interaction between

security and usability. The course focuses on the application level with minor

attention to operating-system level security; network-level security is not

covered. Assignments involve designing and implementing secure software,

evaluating designs and systems for security-related flaws, and presentations on

security issues or tools. All students will be required to sign a pledge of

responsible conduct at the start of the course.

Recommended Background: CS3013 and CS3733. The course assumes nontrivial experience with C and Unix, familiarity with operating systems,

filesystems, and databases, and experience with technologies for building web

applications (from CS4241 or personal experience).

### CS 4404. TOOLS AND TECHNIQUES IN COMPUTER NETWORK SECURITY

This course introduces students to modern network security concepts, tools, and techniques. The course covers security threats, attacks and mitigations at the operating-system and network levels (as opposed to the software level). Topics include: authentication, authorization, confidentiality, integrity, anonymity, privacy, intrusion detection and response, and cryptographic applications. Students will become familiar with modern security protocols and tools. Assignments will involve using security-testing software to uncover vulnerabilities, network packet analyzers, and existing security applications to create secure network implementations. The course requires enough programming and systems background to understand attacks and use systems tools, but does not involve significant programming projects. Assignments and projects will use a Linux base for implementation.

Recommended Background: Knowledge of operating systems (CS3013 or equivalent) and computer networks (CS3516 or equivalent). Familiarity with Linux or Unix is essential.

### CS 4432. DATABASE SYSTEMS II

Cat. II

This course concentrates on the study of the internals of database management

systems. Topics include: principles and theories of physical storage management,

advanced query languages, query processing and optimization, index structures

for relational databases, transaction processing, concurrency control, distributed

databases, and database recovery, security, client server and transaction

processing systems. Students may be expected to design and implement software

components that make up modern database systems.

Undergraduate credit may not be earned both for this course and CS 542.

Recommended background: CS 3431 and CS 3733.

This course will be offered in 2015-16, and in alternating years thereafter.

### CS 4445. DATA MINING AND KNOWLEDGE DISCOVERY IN DATABASES

Cat. II

This course provides an introduction to Knowledge Discovery in Databases

(KDD) and Data Mining. KDD deals with data integration techniques and with

the discovery, interpretation and visualization of patterns in large collections of

data. Topics covered in this course include data warehousing and mediation

techniques; data mining methods such as rule-based learning, decision trees,

association rules and sequence mining; and data visualization. The work

discussed originates in the fields of artificial intelligence, machine learning,

statistical data analysis, data visualization, databases, and information retrieval.

Several scientific and industrial applications of KDD will be studied.

Recommended background: MA 2611, CS 2223, and CS 3431, or CS 3733.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4513. DISTRIBUTED COMPUTING SYSTEMS

Cat. II

This course extends the study of the design and implementation of operating

systems begun in CS 3013 to distributed and advanced computer systems.

Topics include principles and theories of resource allocation, file systems,

protection schemes, and performance evaluation as they relate to distributed and

advanced computer systems.

Students may be expected to design and implement programs that emphasize

the concepts of file systems and distributed computing systems using current

tools and languages.

Undergraduate credit may not be earned both for this course and for CS 502.

Recommended background: CS 3013, CS 3516, and system programming

experience.

This course will be offered in 2015-16, and in alternating years thereafter.

### CS 4515. COMPUTER ARCHITECTURE

Cat. II

This course explores the architectural design of modern computer systems in

terms of instruction sets and the organization of processors, controllers,

memories, devices, and communication links. Topics include an overview of

computer architectures and system components, theoretical foundations,

instruction-level and thread-level pipelining, multifunction pipelines, multi-core

systems, caching and memory hierarchies, and multi-core and parallel computer

organization. Students may be expected to design and implement programs that

simulate significant components of modern computer architectures.

Recommended background: CS 2011 or ECE 2049, and CS 3013.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4516. ADVANCED COMPUTER NETWORKS

Cat. II

This course provides an in-depth look into computer networks. While repeating

some of the areas from CS 3516, the goal is to go deeper into computer networks topics. This in-depth treatment in topics such as routing, congestion control, wireless layer protocols and physical signaling considerations will require the use of basic queuing theory and probability to provide a more formal treatment of computer networks performance. Other topics covered include: LAN and WLAN technologies, mobile wireless networks, sensor networks, optical networks, network security, intrusion detection and network management. Students will be expected to do more sophisticated network programming than seen in CS 3516 and will conduct laboratory activities involving measuring the performance of modern networking applications running on both wired networks and infrastructure wireless networks.

Undergraduate credit may not be earned both for this course and for CS 513.

Recommended background: CS 3013, CS 3516, and knowledge of probability. The course assumes a familiarity with operating systems including Unix or Linux, and significant experience with C/C++.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4518. MOBILE & UBIQUITOUS COMPUTING

The goal of this course is to acquaint students with fundamental concepts and state-of-the-art computer science literature in mobile and ubiquitous computing. Topics to be covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile human-computer interaction, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies and mobile security.

The course will introduce the programming of mobile devices such as smartphones running the Android operating system.

Recommended background: Proficiency in programming in Java, including classes, inheritance, exceptions, interfaces, polymorphism (CS 2012 or equivalent).

Students may not earn credit for both CS 403X and CS 4518

### CS 4533. TECHNIQUES OF PROGRAMMING LANGUAGE TRANSLATION

Cat. II

This course studies the compiling process for high-level languages.

Topics include lexical analysis, syntax analysis, semantic analysis, symbol

tables, intermediate languages, optimization, code generation and run-time

systems.

Students will be expected to use compiler tools to implement the front end,

and to write a program to implement the back end, of a compiler for a recursive

programming language.

Undergraduate credit may not be earned for both this course and for CS 544.

Recommended Background: CS 2102 and CS 3133.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4536. PROGRAMMING LANGUAGES

Cat. II

This course covers the design and implementation of programming languages.

Topics include data structures for representing programming languages,

implementing control structures (such as functions, recursion, and exceptions),

garbage collection, and type systems. Students will be expected to implement

several small languages using a functional programming language.

Recommended background: CS 2303, CS 3133, and experience programming

in a functional language (as provided by CS 1101 or CS 1102).

Undergraduate credit may not be earned for both this course and CS 536.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 453X. MACHINE LEARNING

In this course, students will explore both theoretical and practical aspects of machine learning, including algorithms for regression, classification, dimensionality reduction, clustering, and density estimation. Specific topics may include: neural networks and deep learning, Bayesian networks and probabilistic graphical models, principal component analysis, k-means clustering, decision trees and random forests, support vector machines and kernel methods.

Recommended background: Knowledge of Multivariate Calculus (MA 1024 or MA 1034), Linear Algebra (such as MA 2071), Probability (MA 2621 or MA 2631), and Algorithms (CS 2223).

### CS 4731. COMPUTER GRAPHICS

Cat. I

This course studies the use of the computer to model and graphically render

two- and three-dimensional structures.

Topics include graphics devices and languages, 2- and 3-D object representations,

and various aspects of rendering realistic images.

Students will be expected to implement programs which span all stages of the

3-D graphics pipeline, including clipping, projection, arbitrary viewing, hidden

surface removal and shading.

Undergraduate credit may not be earned both for this course and for CS 543.

Recommended background: CS 2223, CS 2303 and MA 2071.

### CS 4801. INTRODUCTION TO CRYPTOGRAPHY AND COMMUNICATION SECURITY

This course provides an introduction to modern cryptography and communication security. It focuses on how cryptographic algorithms and protocols work and how to use them. The course covers the concepts of block ciphers and message authentication codes, public key encryption, digital signatures, and key establishment, as well as common examples and uses of such schemes, including the AES, RSA-OAEP, and the Digital Signature Algorithm. Basic cryptanalytic techniques and examples of practical security solutions are explored to understand how to design and evaluate modern security solutions. The course is suited for students interested in cryptography or other security related fields such as trusted computing, network and OS security, or general IT security.

Recommended background: ECE 2049 Embedded Computing in Engineering Design or CS 2301 Systems Programming for Non-Majors or equivalent

Suggested background: CS 2022/MA2201 Discrete Mathematics

### CS 4802. BIOVISUALIZATION

Cat. II

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.

Recommended background: CS 2102, CS 2223, and one or more biology

courses.

This course will be offered in 2016-17, and in alternating years thereafter.

### CS 4803. BIOLOGICAL AND BIOMEDICAL DATABASE MINING

Cat. II

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.

Recommended Background: CS 2102, CS 2223, MA 2610 or MA 2611, and

one or more biology courses.

This course will be offered in 2015-16, and in alternating years thereafter.

### CS 480X. DATA VISUALIZATION

This course exposes students to the field of data visualization, i.e., the graphical communication of data and information for the purposes of presentation, confirmation, and exploration. The course introduces the stages of the visualization pipeline. This includes data modeling, mapping data attributes to graphical attributes, visual display techniques, tools, paradigms, and perceptual issues. Students learn to evaluate the effectiveness of visualizations for specific data, task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools.

Recommended background: Knowledge of Linear Algebra (such as MA 2071), Probability theory (MA 2621), and Software Engineering (CS 3733).

## Graduate Courses

### 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 5007. INTRODUCTION TO PROGRAMMING CONCEPTS, DATA STRUCTURES AND ALGORITHMS

This is an introductory graduate course teaching core computer science topics typically found in an undergraduate Computer Science curriculum, but at a graduate-level pace. It is primarily intended for students with little formal preparation in Computer Science to gain experience with fundamental Computer Science topics.

After a review of programming concepts the focus of the course will be on data structures from the point of view of the operations performed upon the data and to apply analysis and design techniques to non-numeric algorithms that act on data structures. The data structures covered include lists, stacks, queues, trees and graphs. Projects will focus on the writing of programs to appropriately integrate data structures and algorithms for a variety of applications.

This course may not be used to satisfy degree requirements for a B.S., M.S., or Ph.D. degree in Computer Science or a minor in Computer Science. It may satisfy the requirements for other degree programs at the discretion of the program review committee for the particular degree. (Prerequisites: Experience with at least one high-level programming language such as obtained in an undergraduate programming course.)

### 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 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 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. COMPUTER 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. ADVANCED SYSTEMS ARCHITECTURE

This Course covers techniques such as caching, hierarchical memory, pipelining and parallelism, that are used to enhance the performance of computer systems. It compares and contrast different approaches to achieving high performance in machine ranging from advanced microprocessors to vector supercomputers (CRAY, CYBER). It also illustrates how these techniques are applied in massively parallel SIMD machines (DAP, Connection Machine). In each case the focus is on the combined hardware/ software performance achieved and the interaction between application demands and hardware/software capabilities. (Prerequisites: This course assumes the material covered in ECE 505. The student should also have a background in computer programming and operating systems (CS 502). Familiarity with basic probability and statistics such as ECE 502 or MA 541 is recommended.

### 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 528. MOBILE AND UBIQUITOUS COMPUTING

This course acquaints participants with the fundamental concepts and state-of-the-art computer science research in mobile and ubiquitous computing. Topics covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile HCI, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies and mobile security. The course consists of weekly presentations on current advanced literature, discussions and a term project. The term project involves

implementing research ideas on a mobile device such as a smartphone.

Prerequisite: CS 502 or an equivalent graduate level course in Operating Systems, and CS 513 or an equivalent graduate level course in Computer Networks, and proficiency in a high level programming language.

### 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 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 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 541. DEEP LEARNING

This course will offer a mathematical and practical perspective on artificial neural networks for machine learning. Students will learn about the most prominent network architectures including multi-layer feedforward neural networks, convolutional neural networks (CNNs), auto-encoders, recurrent neural networks (RNNs), and generative-adversarial networks (GANs). This course will also teach students optimization and regularization techniques used to train them -- such as back-propagation, stochastic gradient descent, dropout, pooling, and batch normalization. Connections to related machine learning techniques and algorithms, such as probabilistic graphical models, will be explored. In addition to understanding the mathematics behind deep learning, students will also engage in hands-on course projects. Students will have the opportunity to train neural networks for a wide range of applications, such as object detection, facial expression recognition, handwriting analysis, and natural language processing.

Prerequisite: Machine Learning (CS 539), and knowledge of Linear Algebra (such as MA 2071) and Algorithms (such as CS 2223).

### 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 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 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 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 573. DATA VISUALIZATION

This course exposes students to the field of data visualization, i.e., the graphical communication of data and information for the purposes of presentation, confirmation, and exploration. The course introduces the stages of the visualization pipeline. This includes data modeling, mapping data attributes to graphical attributes, visual display techniques, tools, paradigms, and perceptual issues. Students learn to evaluate the effectiveness of visualizations for specific data,

task, and user types. Students implement visualization algorithms and undertake projects involving the use of commercial and public-domain visualization tools. Students also read papers from the current visualization literature and do classroom presentations.

Prerequisite: a graduate or undergraduate course in computer graphics.

### 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 585. BIG DATA MANAGEMENT

Emerging applications in science and engineering disciplines generate and collect data at unprecedented speed, scale, and complexity that need to be managed and analyzed efficiently. This course introduces the emerging techniques and infrastructures developed for big data management including parallel and distributed database systems, map-reduce infrastructures, scalable platforms for complex data types, stream processing systems, and cloud-based computing. Query processing, optimization, access methods, storage layouts, and energy

management techniques developed on these infrastructures will be covered. Students are expected to engage in hands-on projects using one or more of these technologies. Prerequisites: A beginning course in databases at the level of CS4432 or equivalent knowledge, and programming experience.

### CS 586. BIG DATA ANALYTICS

Innovation and discoveries are no longer hindered by the ability to collect data, but the ability to summarize, analyze, and discover knowledge from the collected data in a scalable fashion. This course covers computational techniques and algorithms for analyzing and mining patterns in large-scale datasets. Techniques studied address data analysis issues related to data volume (scalable and distributed analysis), data velocity (high-speed data streams), data variety

(complex, heterogeneous, or unstructured data), and data veracity (data uncertainty). Techniques include mining and machine learning techniques for complex data types, and scaleup and scale-out strategies that leverage big data infrastructures. Real-world applications using these techniques, for instance social media analysis and scientific data mining, are selectively discussed. Students are expected to engage in hands-on projects using one or more of these technologies. Prerequisites: A beginning course in databases and a beginning course in data

mining, or equivalent knowledge, and programming experience.

### DS 501. INTRODUCTION TO DATA SCIENCE

This course provides an overview of Data Science, covering a broad selection of key challenges in and methodologies for working with big data. Topics to be covered include data collection, integration, management, modeling, analysis, visualization, prediction and informed decision making, as well as data security and data privacy. This introductory course is integrative across the core disciplines of Data Science, including databases, data warehousing, statistics, data mining, data visualization, high performance computing, cloud computing, and business

intelligence. Professional skills, such as communication, presentation, and storytelling with data, will be fostered. Students will acquire a working knowledge of data science through hands-on projects and case studies in a variety of business, engineering, social sciences, or life sciences domains. Issues of ethics, leadership, and teamwork are highlighted. Prerequisites:None beyond meeting the Data Science admission criteria.

### SEME 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.)

### SEME 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.)

### SEME 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.)

### SEME 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.)