Computer Science
Faculty
C. A. Shue, Professor and Department Head; Ph.D., Indiana, 2009. Computer networking, security, distributed systems.
M. Ahrens, Assistant Teaching Professor; Tufts University, 2022. Programming languages and CS education.
E. O. Agu, Harold L. Jurist ('61) and Heather E. Jurist Dean's Professor; Ph.D., Massachusetts, 2001. Computer graphics, wireless networking, mobile computing and mobile health.
J. E. Beck, Associate Professor; Ph.D., Massachusetts, 2001. Machine learning, educational data mining, intelligent tutoring systems, human learning and problem solving.
R. Bohrer, Assistant Professor; Ph.D., Carnegie Mellon, 2021. Theorem-proving, cyber-physical systems, programming languages.
M. L. Claypool, Professor; Ph.D., Minnesota, 1997. Distributed systems, networking, multimedia and online games.
J. Cuneo, Senior Instructor, MS, Georgia Institute of Technology, 2010. Computer graphics, computing for good, digital media, computers and space exploration, CS education, scientific computing.
J. Dai, Associate Professor; Ph.D., Pennsylvania State University, 2014. Network and distributed systems security, instrusion detection, secure programming, cyber security education.
D. J. Dougherty, Professor; Ph.D., Maryland, 1982. Logic in computer science, with a focus on security.
M. Engling, Assistant Teaching Professor. Stevens Institute of Technology. 2017. Combinatorics, algorithmic complexity, formal languages
T. Guo, Associate Professor; Ph.D., University of Massachusetts Amherst, 2016. Distributed systems, cloud computing, data-intensive systems.
L. Harrison, Associate Professor; Ph.D., University of North Carolina at Charlotte, 2013. Information visualization, visual analytics, perception-based computation for visualization.
N. T. Heffernan, The William Smith Dean's Professor; Ph.D., Carnegie Mellon, 2001. Intelligent tutoring agents, artificial intelligence, cognitive modeling, machine learning.
G. T. Heineman, Associate Professor; Ph.D., Columbia, 1996. Component-based software engineering, formal approaches to compositional design, design of algorithms.
X. Kong, Associate Professor, Ph.D., University of Illinois, Chicago, IL 2014. Data mining, social networks, machine learning, big data analytics.
D. Korkin, Harold L. Jurist ('61) and Heather E. Jurist Dean's Professor, Ph.D., University of New Brunswick, Canada, 2003. Bioinformatics of disease, big data in biomedicine, computational genomics, systems biology, data mining, machine learning.
K. Lee, Associate Professor; Ph.D., Texas A&M, 2013, Big data analytics and mining, social computing, and cybersecurity over large-scale networked information systems such as the Web, social media and crowd-based systems.
Y. Li, Associate Professor, Ph.D., University of Minnesota, 2003. Big data from complex networks, large-scale network data measurement, online social behavior modeling, spectral graph theory.
X. Liu, Associate Professor; PhD., Syracuse, 2011. Natural language processing, deep learning, information retrieval, data science, and computational social sciences.
J. Mortensen, Assistant Teaching Professor; Ph.D., Yale University, 2018. Computational biology and bioinformatics.
F. Murai, Assistant Professor; Ph.D., University of Massachusetts, Amherst, 2016. Application of mathematical modeling, statistics and machine learning to computer, informational and social networks
R. Neamtu, Professor of Teaching. PhD WPI, 2017. Data retrieval and management, data mining, machine learning, big data analytics and visualization, brain computer interaction, data-driven materials science, human-robot interaction.
D. Reichman, Assistant Professor; Ph.D., Weizmann Institute, 2014. Algorithms, Machine Learning, Artificial Intelligence.
C. Roberts, Assistant Professor; Ph.D., University of California at Santa Barbara, 2014. Interactive programming, audiovisual performance, music programming languages, human-centered computing.
C. Ruiz, Harold L. Jurist ('61) and Heather E. Jurist Dean's Professor and Associate Dean; Ph.D., Maryland, 1996. Data mining, knowledge discovery in databases, machine learning.
E. A. Rundensteiner, The William Smith Dean's Professor; Ph.D., University of California, Irvine, 1992. Big data systems, big data analytics, visual analytics, machine learning/deep learning, health analytics, AI and fairness.
G. N. Sarkozy, Professor; Ph.D., Rutgers, 1994. Graph theory, combinatorics, algorithms.
G. Smith, Associate Professor; Ph.D., UC Santa Cruz, 2012. Computational creativity, game design, computer science education, computational craft.
E. T. Solovey, Associate Professor; Ph.D., Tufts University, 2012. Human-computer interaction, user interface design, novel interaction modalities, human-autonomy collaboration, machine learning.
X. Sun, Associate Professor; Ph.D., Pennsylvania State University, 2016. Cyber security, enterprise-level network security, cloud security, IoT security.
S. Taneja, Assistant Teaching Professor. Ph.D. Auburn University, 2018. Distributed computing, high-performance computing, big data systems.
R. J. Walls, Associate Professor; Ph.D., University of Massachusetts Amherst, 2014. Systems security and privacy, digital forensics and online crime, large-scale internet measurement.
C. E. Wills, Professor; Ph.D., Purdue, 1988. Distributed systems, networking, user interfaces.
J. Weinstock, Senior Instructor. Temple University. 1997.
J. R. Whitehill, Associate Professor; Ph.D., University of California, San Diego, 2012. Machine learning, crowdsourcing, automated teaching, human behavior recognition.
W. Wong, Associate Teaching Professor; Ph.D., Bentley University, 2013. Healthcare information systems, Virtual Reality and Augmented Reality medical devices, software engineering methodologies, pedagogical software project innovations, computer architecture, and social networks.
A. Yousefi, Assistant Professor; Ph.D., University of Southern California, 2014. Developing methodological solutions to problems concerning neuroscience data analysis
Research Interests
The current departmental activities include, among other areas, analysis of algorithms, applied logic, artificial intelligence, big data, computer vision, computer graphics, database and information systems, data mining, distributed systems, graph theory and computational complexity, intelligent tutoring systems, machine learning, network performance evaluation, programming languages, robotics, security, software engineering, user interfaces, virtual reality, visualization, and Web-based systems. Research groups meet weekly and focus on topics related to the above areas. Students are encouraged to participate in the meetings related to their area(s) of interest. Research and development projects and theses are available in these areas. Computer Science students may also participate in computer applications research work being conducted in a number of other departments including electrical and computer engineering, mechanical engineering, biomedical and fire protection engineering. Students are also encouraged to undertake projects and theses in cooperation with neighboring computer manufacturers or commercial organizations.
Programs of Study
Graduate programs in Computer Science provide opportunities for advanced coursework and research for highly qualified students. Graduate Certificates, recognizing completion of a cohesive set of advanced courses, are offered in several areas of Computer Science. The Master of Computer Science degree is for students with an undergraduate degree outside of Computer Science who wish to enter the field. The Master of Computer Science includes bridge courses and a capstone experience. The Master of Science degree is more comprehensive; with thesis and non-thesis (coursework-only) options, it is the degree of choice for many full-time students and working professionals. The Doctor of Philosophy degree emphasizes deeper study and discovery in preparation for a career in research or education.
Graduate programs may be undertaken on a full-time or part-time basis. For all students, challenging courses and demanding research projects, with high expectations of accomplishment, are the standard.
Admission Requirements
Applicants are expected to demonstrate sufficient background in core Computer Science for graduate-level work. Background in both theoretical and applied Computer Science, with significant programming experience and some college-level mathematics, is required for the M.S. and Ph.D. programs. A bachelor’s degree in Computer Science or a closely related field should be adequate preparation. Students from other backgrounds are welcome to apply if they can demonstrate their readiness through other means, such as the Computer Science GRE Subject exam. Work experience will be considered if it covers a broad spectrum of Computer Science at a technical or mathematical level. For the Master of Computer Science degree, students need a strong undergraduate preparation in a field other than Computer Science.
A student may apply to the Ph.D. program upon completion of either a bachelor’s (in which case the master’s degree must first be completed as part of the Ph.D. studies) or master’s degree in Computer Science, or with an equivalent background.
Non-matriculated students may enroll in up to two courses prior to applying for admission to a Computer Science Graduate Program.
Certificate Programs
WPI’s Graduate Certificate Program provides an opportunity for students holding undergraduate degrees to continue their study in an advanced area. A B.S. or B.A. degree is the general requirement. Certificate programs require a student to complete 4-5 thematically related courses in their area of interest. Each student’s program of study must be approved by the academic advisor. Academic advisors are assigned upon admission to the program but may be changed in accordance with departmental policies.
Details about the certificates available in the Department of Computer Science can be found online at
https://www.wpi.edu/academics/study/computer-science-certificate
Facilities
WPI boasts excellent computing resources and network connectivity through the university’s Computing & Communications Center and the CS Department’s own systems. A wide range of machines provides web, mail, file, high-performance computation, and security services. An extensive software library is available free of charge to all campus users. Other specialized resources include multiple high performance and parallel-computing clusters. WPI is a member of the Internet2 consortium and WPI’s campus network consists of a 10 Gigabit (on campus) backbone with multiple connections to the global internet.
Off-Campus Research Opportunities
Computer science graduate students have opportunities for research and development in cooperation with several neighboring organizations, both for the master’s thesis and Ph.D. dissertation. These and other opportunities provide real-world problems and experiences consistent with WPI’s policy of extending learning beyond the classroom.
-
Certificate in Computer Science, Certificate -
M.S. in Computer Science, Master of Science -
M.S. in Computer Science specializing in Computer Security, Master of Science -
M.S. in Cyber Security, Master of Science -
Master of Computer Science, Master of Computer Science -
Ph.D. in Computer Science, Ph.D.
Classes
BCB 502/CS 582: Biovisualization
This course uses interactive visualization to explore and analyze data, structures, and processes. Topics include the fundamental principles, concepts, and techniques of visualization and how visualization can be used to analyze and communicate data in domains such as biology. Students will be expected to design and implement visualizations to experiment with different visual mappings and data types, and will complete a research oriented project.
experience with programming (especially JavaScript), databases, and data structures. Students may not receive credit for both BCB 502 and BCB 4002.
BCB 503/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.
Strong programming skills, an undergraduate or graduate course in algorithms, an undergraduate course in statistics, and one or more undergraduate biology courses
CS/DS 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 multilayer 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.
Machine Learning (CS 539), and knowledge of Linear Algebra (such as MA 2071) and Algorithms (such as CS 2223)
CS/DS 547: Information Retrieval
This course introduces the theory, design, and implementation of text-based and Web-based information retrieval systems. Students learn the key concepts and models relevant to information retrieval and natural language processing on large-scale corpus such as the Web and social systems. Topics include vector space model, crawling, indexing, web search, ranking, recommender systems, embedding and language model.
statistical learning at the level of DS 502/MA 543 and programming skills at the level of CS 5007.
CS/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.
Knowledge of probability
CS/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.
CS 534 Artificial Intelligence or permission of the instructor
CS/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 & Game Development, and Learning Sciences and Technologies, it is appropriate for any student with programming experience who is doing empirical research.
MA 511 Applied Statistics for Engineers and Scientists or permission of instructor
CS/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.
CS 534 Artificial Intelligence or permission of the instructor
CS 502: Operating Systems
knowledge of computer organization and elementary data structures, and a strong programming background
CS 503: Foundations of Computer Science
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
CS 5084 or equivalent
CS 509: Design of Software Systems
knowledge of a recursive high-level language and data structures. An undergraduate course in software engineering is desirable.
CS 513: Computer Networks
knowledge of the C programming language is assumed. CS 504 or equivalent background in CS 5084 or CS 584
CS 514/ECE 572: Advanced Systems Architecture
CS 521: Logic in Computer Science
CS 503, or equivalent background in basic models of computation
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.
vary with topic
CS 526/RBE 526: Human-Robot Interaction
This course focuses on human-robot interaction and social robot learning, exploring the leading research, design principles and technical challenges we face in developing robots capable of operating in real-world human environments. The course will cover a range of multidisciplinary topics, including physical embodiment, mixed-initiative interaction, multi-modal interfaces, human-robot teamwork, learning algorithms, aspects of social cognition, and long-term interaction. These topics will be pursued through independent reading, class discussion, and a final project.
Mature programming skills and at least undergraduate level knowledge of Artificial Intelligence, such as CS 4341. No hardware experience is required
CS 528: Mobile and Ubiquitous Computing
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
CS 502 and CS 513 or the equivalent and strong programming skills
CS 533/ECE 581: Modeling and Performance Evaluation of Network and Computer Systems
CS 5084 or CS 504 or equivalent background in probability and some background in statistics
CS 534: Artificial Intelligence
familiarity with data structures and a high-level programming language
CS 535: Advanced Topics in Operating Systems
CS 502 and either CS 5084, CS 504, CS 584, or equivalent background in probability
CS 536: Programming Language Design
student is expected to know a recursive programming language and to have an undergraduate course in data structures
CS 538: Knowledge-Based Systems
CS 534 or equivalent or permission of the instructor
CS 539: Machine Learning
CS 534 or equivalent, or permission of the instructor
CS 540: Artificial Intelligence in Design
knowledge of artificial intelligence is required. This can only be waived with permission of the instructor
CS 542: Database Management Systems
CS 5084 would be helpful
CS 543: Computer Graphics
familiarity with data structures, a recursive high-level language and linear algebra. CS 509 would be helpful
CS 544: Compiler Construction
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
working knowledge of undergraduate level signal analysis and linear algebra; familiarity with probability theory is helpful but not necessary
CS 546: Human-Computer Interaction
students are expected to have mature programming skills. Knowledge of software engineering would be an advantage
CS 548: Knowledge Discovery and Data Mining
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/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.
CS 534, CS 543, CS 545, or the equivalent of one of these courses
CS 557: Software Security Design and Analysis
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
a strong background in computer networking and systems, either at the undergraduate or graduate level, and moderate programming experience
CS 559: Advanced Topics in Theoretical Computer Science
CS 561: Advanced Topics in Database Systems
CS 542 or equivalent. Expected background includes a knowledge of relational database systems
CS 562: Advanced Topics in Software Engineering
CS 563: Advanced Topics in Computer Graphics
CS 564: Advanced Topics in Computer Security
a graduate level security course or equivalent experience.
CS 571: Case Studies in Computer Security
A prior course or equivalent experience in technical aspects of computer security, at either the software or systems level
CS 573: Data Visualization
a graduate or undergraduate course in computer graphics
CS 577/ECE 537: Advanced Computer and Communications Networks
CS 533/ECE 581 and either CS 513 or ECE 506
CS 578/ECE 578: Cryptography and Data Security
CS 582/BCB 502: Biovisualization
experience with programming (especially JavaScript), databases, and data structures. Students may not receive credit for both CS 582 and CS 4802.
CS 583/BCB 503: Biological and Biomedical Database Mining
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
CS 585/DS 503: Big Data Management
A beginning course in databases at the level of CS 4432 or equivalent knowledge, and programming experience.
CS 586/DS 504: Big Data Analytics
A beginning course in databases and a beginning course in data mining, or equivalent knowledge, and programming experience.
CS 587/ECE 588: Cyber Security Capstone Experience
To reduce cyber security theory to practice, the capstone project has students apply security concepts to real-world problems. The capstone represents a substantial evaluation of the student’s cyber security experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Since cyber security is a collaborative discipline, students are encouraged to work in teams.
This course is a degree requirement for the Professional Master’s in Cyber Security (PM-SEC) and may not be taken before completion of 21 credits in the program. Given its particular role, 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. Students outside the PM-SEC program must get the instructor’s approval before taking this course for credit.
CS 588: Computer Science Capstone Experience
The capstone represents a substantial evaluation of the student’s computer science experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Students are encouraged to work in teams.
This course is a degree requirement for the Master of Computer Science (MCS) and may not be taken before completion of 21 credits in the program. Given its particular role, this course may not be used to satisfy degree requirements for a BS, MS, or PhD degree in Computer Science or a minor in Computer Science. It may not be taken by students in other degree programs.
CS 598: Directed Research
CS 599: Master's Thesis
CS 673/ECE 673: Advanced Cryptography
This course provides deeper insight into areas of cryptography which are of great practical and theoretical importance. The three areas treated are detailed analysis and the implementation of cryptoalgorithms, advanced protocols, and modern attacks against cryptographic schemes. The first part of the lecture focuses on public key algorithms, in particular ElGamal, elliptic curves and Diffie-Hellman key exchange. The underlying theory of Galois fields will be introduced. Implementation of performance security aspects of the algorithms will be looked at. The second part of the course deals with advanced protocols. New schemes for authentication, identification and zero-knowledge proof will be introduced. Some complex protocols for real-world application— such as key distribution in networks and for smart cards—will be introduced and analyzed. The third part will look into state-of-the-art cryptoanalysis (i.e., ways to break cryptosystems). Brute force attacks based on special purpose machines, the baby-step giant-step and the Pohlig-Hellman algorithms will be discussed.
CS 578/ ECE 578 or equivalent background
CS 699: Ph.D. Dissertation
CS 5003: Foundations of Computer Science: an Introduction
an undergraduate course in discrete mathematics
CS 5007: Introduction to Applications of Computer Science with Data Structures and Algorithms
Experience with at least one high-level programming language such as obtained in an undergraduate programming course
CS 5008: Introduction to Systems and Network Programming
This course is focused on significant programming projects and provides an overview of the principles of computer networks and a general-purpose operating system. The course provides the student with an understanding of the basic components of an operating system, including processes, synchronization and memory management. The course exposes students to the Internet protocol suite networking layers while providing an introduction into topics such as wireless networking and Internet traffic considerations. The objective is to focus on an understanding of fundamental concepts of operating systems and computer network architecture from a design and performance perspective.
Students will be expected to design and implement a variety of programming projects to gain an appreciation of the design of operating systems and network technologies. 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.
Experience with at least one high-level programming language such as obtained in CS 5007.
CS 5084: Introduction to Algorithms: Design and Analysis
an undergraduate knowledge of discrete mathematics and data structures.
DS/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 multilayer 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.
Machine Learning (CS 539), and knowledge of Linear Algebra (such as MA 2071) and Algorithms (such as CS 2223
DS/CS 547: Information Retrieval
This course introduces the theory, design, and implementation of text-based and Web-based information retrieval systems. Students learn the key concepts and models relevant to information retrieval and natural language processing on large-scale corpus such as the Web and social systems. Topics include vector space model, crawling, indexing, web search, ranking, recommender systems, embedding and language model.
statistical learning at the level of DS 502/MA 543 and programming skills at the level of CS 5007.
ECE 588/CS 587: Cyber Security Capstone Experience
To reduce cyber security theory to practice, the capstone project has students apply security concepts to real-world problems. The capstone represents a substantial evaluation of the student’s cyber security experience. Students are encouraged to select projects with practical experience relevant to their career goals and personal development. In the capstone, students will propose a project idea in writing with concrete milestones, receive feedback, and pursue the proposal objectives. Since cyber security is a collaborative discipline, students are encouraged to work in teams.
This course is a degree requirement for the Professional Master’s in Cyber Security (PM-SEC) and may not be taken before completion of 21 credits in the program. Given its particular role, 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. Students outside the PM-SEC program must get the instructor’s approval before taking this course for credit.
ECE 673/CS 673: Advanced Cryptography
This course provides deeper insight into areas of cryptography which are of great practical and theoretical importance. The three areas treated are detailed analysis and the implementation of cryptoalgorithms, advanced protocols, and modern attacks against cryptographic schemes. The first part of the lecture focuses on public key algorithms, in particular ElGamal, elliptic curves and Diffie-Hellman key exchange. The underlying theory of Galois fields will be introduced. Implementation of performance security aspects of the algorithms will be looked at. The second part of the course deals with advanced protocols. New schemes for authentication, identification and zero-knowledge proof will be introduced. Some complex protocols for real-world application— such as key distribution in networks and for smart cards—will be introduced and analyzed. The third part will look into state-of-the-art cryptoanalysis (i.e., ways to break cryptosystems). Brute force attacks based on special purpose machines, the baby-step giant-step and the Pohlig-Hellman algorithms will be discussed.
CS 578/ ECE 578 or equivalent background
RBE 549/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.
CS 534, CS 543, CS 545, or the equivalent of one of these courses
SEME/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.
Knowledge of probability
SEME/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.
CS 334 Artificial Intelligence or permission of the instructor
SEME/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 & Game Development, and Learning Sciences and Technologies, it is appropriate for any student with programming experience who is doing empirical research.
MA 311 Applied Statistics for Engineers and Scientists or permission of instructor
SEME/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.
CS 534 Artificial Intelligence or permission of the instructor