Students earning a master's degree in computer science can choose to select areas
from the following list. These are unofficial area categorizations meant to provide
guidance to students in selection of courses that align with their interests and career
goals.
Data Science and Information Systems
-
CS 515 - Social Media Data Sci Pipeline
The focus of this course is on applying data science techniques to large-scale
social media. The topics covered include large-scale data collection, cleaning, and
management, exploratory analysis and measurement techniques, hypothesis testing and
statistical modeling, and predictive, real time analytics. Students will build an
end-to-end analysis pipeline and use it to answer questions about online events as
they occur. The goal of the class is to provide students with a methodological toolbox,
the technical skills to make use of these tools, and the experience of using them
on real world data. Prerequisite: Undergraduate Operating Systems, Undergraduate Algorithms,
Probability with Stat Methods or equivalent. Term offered varies. 3 credits
Levels: Graduate
-
CS 532 - Database Systems
Associations between data elements and data models: entity-relationship, relational
and object-oriented. Relational database design techniques. Formal and commercial
query languages. Introduction to query processing, transaction management and concurrency
control. Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 533 - Information Retrieval
Indexing and data structures for storing and searching the index. Boolean, statistical,
inference nets and knowledge-based models. Thesaurus construction. Query expansion.
Natural language and linguistic techniques. Evaluation. Distributed information retrieval.
Information integration and fusion. Dissemination of information. Summaries, themes
and reading tours. Hypertext. Internet tools. Intelligent agents. Digital libraries.
Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 535 - Introduction To Data Mining
Basic topics of data mining, including data preprocessing, mining association rules,
classification rules, clustering rules, post processing, and mining in unstructured
data. Prerequisite: Undergraduate Algorithms and Probability & Statistics or equivalent.
Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 536 - Intro to Machine Learning
This course provides a broad introduction to machine learning and
its applications. Major topics include: supervised learning (generative/discriminative
learning, parametric/non-parametric learning, support vector machines); computational
learning theory (bias/variance tradeoffs, VC theory, large margins); unsupervised
learning; semi-supervised learning; reinforcement learning. The course will give students
the basic ideas and intuition behind different techniques as well as a more formal
understanding of how and why they work. The course will also discuss recent applications
of machine learning, such as to data mining, bioinformatics, and information retrieval.
Prerequisites: Undergraduate Algorithms, Probability with Statistical Methods. Term
offered varies. 3 credits..
Levels: Graduate, Undergraduate
-
CS 555 - Intro to Visual Info Processin
The course focuses on fundamental topics, including visual information acquisition,
representation, description, enhancement, restoration, transformations and compressions,
and reconstruction from projections. The second focus is on Computer Science applications,
including algorithms developed in applications such as statistical and syntactic pattern
recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics.
Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 580E - Special Topics
Special Topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
-
CS 580P - Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate, Undergraduate
Systems
-
CS 528 - Computer Networks
Communication protocols and layering, hardware-software infrastructures for networking,
MAC protocols, data link protocols, switching, inter- and intra-domain routing, the
TCP/IP protocol suite, transport protocols, application layer protocols, local and
system area networks, wireless and sensor networks, overlay and virtual networks,
client-server and peer-to-peer models, network programming with sockets, protocol
design and implementation issues, network security. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 551 - Systems Programming
A detailed study of the application program interface of a modern operating system.
File operations, concurrency, processes, threads, inter-process communication, synchronization,
client-server programming, multi-tier programming. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 552 - Intro to Cloud Computing
This course will provide students with topics in cloud computing with coverage
of core cloud components such as virtualization techniques, distributed systems, cloud
service models, and representative cloud computing systems. It will not only include
the in-depth study of the fundamental enabling techniques such as server, network,
and data storage virtualization, but also provide the demonstration of how these techniques
work inside today’s widely-used cloud-based systems such as MapReduce, key-value
stores, and Openstack. The course will include weekly assignments in the form of homework,
labs, and projects. Prerequisite: Undergraduate Operating Systems. Term offered varies.
3 credits.
Levels: Graduate, Undergraduate
-
CS 555 - Intro to Visual Info Processin
The course focuses on fundamental topics, including visual information acquisition,
representation, description, enhancement, restoration, transformations and compressions,
and reconstruction from projections. The second focus is on Computer Science applications,
including algorithms developed in applications such as statistical and syntactic pattern
recognition, robotic vision, multimedia indexing, visual data mining, and bio-informatics.
Prerequisite: Undergraduate Algorithms. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 557 - Intro To Distributed Systems
Fundamental issues in distributed systems. Distributed synchronization and concurrency
control. Distributed process management (scheduling, remote invocation, task forces,
load balancing). Protection and security. Robust distributed systems. Case studies.
Prerequisite: Undergraduate Operating Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 680V - Advanced Special Topics
Special topics in Computer Science. 3 credits. Semester offered varies.
Levels: Graduate
Wireless Sensors, Mobile Computing and IoT
-
CS 524 - Intelligent Mobile Robotics
The focus of this course is on intelligent mobile robots that can autonomously
operate in indoor environments with limited human guidance. The topics covered in
this course include mapping, localization, navigation, planning, reasoning, and human-robot
interaction (language-based and vision-based). The students will learn to develop
software in Robot Operating System (ROS) on real mobile robots. The goal of this course
is to help students learn entry-level algorithms and programming skills that are required
to conduct research in the area of intelligent mobile robotics. Prerequisite: Undergraduate
Operating Systems and Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 526 - Internet of Things
This course covers the applied area of Internet of Things (IoT). IoT are pervasive
computing systems consisting of smart sensors embedded in physical environments with
many promising applications. IoT challenge many classical approaches to computing
and networking. Students will learn about key techniques in IoT through this course.
A substantial part of the material will cover wireless sensor networks, embedded operating
systems, and network protocols. A variety of different IoT applications will be introduced,
including clinical monitoring, structural health monitoring, and industrial process automation.
In this course, students will also have an opportunity to obtain hands-on experience
on programming embedded devices to sense and communicate. Prerequisite: Either Undergraduate
Operating Systems or Advanced Computer Architecture. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 528 - Computer Networks
Communication protocols and layering, hardware-software infrastructures for networking,
MAC protocols, data link protocols, switching, inter- and intra-domain routing, the
TCP/IP protocol suite, transport protocols, application layer protocols, local and
system area networks, wireless and sensor networks, overlay and virtual networks,
client-server and peer-to-peer models, network programming with sockets, protocol
design and implementation issues, network security. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 541 - Game Dev For Mobile Platforms
This course focuses software development for mobile computing platforms, such as
smartphones and tablets, with an emphasis on games. Students will develop interactive
applications and utilize the wide variety of sensors and networking features available on the platform, along with basic elements of graphics
programming and animation. The course also covers the mechanics of distributing software
for mobile computing platforms. Both iOS and Android operating systems will be covered.
The course will feature a mix of individual and team projects.
Prerequisite: Programming with Objects & Data Structures, Java Programming, Undergraduate
Algorithms or equivalents. Term offered varies. 3 Credits
Levels: Graduate, Undergraduate
-
CS 551 - Systems Programming
A detailed study of the application program interface of a modern operating system.
File operations, concurrency, processes, threads, inter-process communication, synchronization,
client-server programming, multi-tier programming. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
Advanced Programming and Software Design
-
CS 540 - Adv Topics - Obj Oriented Prog
Object-oriented programming and its concomitant design patterns provide rich abstractions
for program development. These programs will eventually execute on real hardware,
however. This course will investigate advanced object-oriented techniques and how
they interact with hardware and operating system issues. We will ground our topics
in C++, but the goal of the course will be to develop understanding that can be applied
across languages. We will examine different design techniques for things such as memory
management, and explore how and why they differ in performance and robustness. We
will also cover idioms such as "Resource Acquisition Is Initialization"
(RAII) and how they can be used to provide robust resource management for exceptions
(exception safety). We will also devote time to covering generic programming and related
topics such as expression templates. This is a growing area that seeks to decouple
algorithms and data structures through the use of templates and other meta-programming
techniques. These techniques exploit the fact that the C++ template mechanism is a
language-within-a-language that is executed at compile-time rather than run-time.
Additional topics include dynamic linking for techniques such as "plug-ins",
template instantiation mechanisms, template specialization, idioms for memory management,
thread-safety issues, thread-safety, C++ reflection. Prerequisites: Undergraduate
Operating Systems. Term offered varies. 3 credits.
Levels: Graduate
-
CS 541 - Game Dev For Mobile Platforms
This course focuses software development for mobile computing platforms, such as
smartphones and tablets, with an emphasis on games. Students will develop interactive
applications and utilize the wide variety of sensors and networking features available
on the platform, along with basic elements of graphics programming and animation.
The course also covers the mechanics of distributing software for mobile computing
platforms. Both iOS and Android operating systems will be covered. The course will
feature a mix of individual and team projects.
Prerequisite: Programming with Objects & Data Structures, Java Programming, Undergraduate
Algorithms or equivalents. Term offered varies. 3 Credits
Levels: Graduate, Undergraduate
-
CS 524 - Intelligent Mobile Robotics
The focus of this course is on intelligent mobile robots that can autonomously
operate in indoor environments with limited human guidance. The topics covered in
this course include mapping, localization, navigation, planning, reasoning, and human-robot
interaction (language-based and vision-based). The students will learn to develop
software in Robot Operating System (ROS) on real mobile robots. The goal of this course
is to help students learn entry-level algorithms and programming skills that are required
to conduct research in the area of intelligent mobile robotics. Prerequisite: Undergraduate Operating Systems and Algorithms. Term offered varies. 3 credits.
Levels: Graduate, Undergraduate
-
CS 545 - Software Engineering
Software engineering practice applied to the life cycle of large software applications
and engineering projects. Software project planning and management: risk management,
estimation, scheduling, trade studies, CM and SQA. Software development: process model
selection, domain analysis, requirements gathering, analysis and design modeling,
user interface design, architectural and detailed design, documentation, testing strategies/methods,
test plan generation, and reuse. Advanced topics include formal methods and cleanroom
software engineering. Requires a major team project. Prerequisite: Undergraduate
Algorithms Term offered varies. 3 credits
Levels: Graduate, Undergraduate
Restrictions:
Must be enrolled in one of the following Levels:
Permission of Department
-
CS 552 - Intro to Cloud Computing
This course will provide students with topics in cloud computing with coverage
of core cloud components such as virtualization techniques, distributed systems, cloud
service models, and representative cloud computing systems. It will not only include
the in-depth study of the fundamental enabling techniques such as server, network, and
data storage virtualization, but also provide the demonstration of how these techniques
work inside today’s widely-used cloud-based systems such as MapReduce, key-value
stores, and Openstack. The course will include weekly assignments in the form of homework,
labs, and projects. Prerequisite: Undergraduate Operating Systems. Term offered varies.
3 credits.
Levels: Graduate, Undergraduate
-
CS 572 - Compiler Design
Fundamentals of programming language translation. Compiler design concepts. General
aspects of lexical analysis and parsing of context-free languages. Grammars and parsing
techniques. Syntax-directed translation. Declarations and symbol management. Semantic
processing and code generation. Principles, methods and examples of code optimization.
Prerequisite: Programming Languages. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 576 - Program Models Emerg Platforms
The landscape of computation platforms has changed dramatically in recent years.
Computing devices such as Unmanned Aerial Vehicles (UAVs) are on the horizon. Big
data processing becomes an indispensable part of numerous applications. Multi-core
CPUs are commonly deployed in computer systems. Programming on these emerging platforms remains a challenging
task. This course introduces a number of state-of-the-art programming models on these
platforms, and further explores the frontier of next-generation programming language
design that may potentially impact the future programming practice for emerging platforms.
In particular, the course investigates UAV programming, Big Data programming, and
multi-core programming, with additional presentations on other platforms on the rise.
Applications of these programming models range from high-performance computing, cyber-physical
systems, databases, to energy-conscious systems. Prerequisites: Java programming,
Computer Architecture or Undergraduate Operating Systems. Term offered varies. 3
credits
Levels: Graduate, Undergraduate
-
CS 560 - Computer Graphics
Concepts, structure, techniques, algorithms for use of modern interactive computer
graphics systems. Graphics hardware, software system structure. Techniques and algorithms
for basic graphics input-output functions. Matrix techniques for transformations and
projections. Techniques for two- and three-dimensional modeling, rendering, animation
and visualization. Prerequisites: Undergraduate Algorithms and Linear Algebra. Term
offered varies. 3 credits
Levels: Graduate, Undergraduate
Core track
-
CS 551 - Systems Programming
A detailed study of the application program interface of a modern operating system.
File operations, concurrency, processes, threads, inter-process communication, synchronization,
client-server programming, multi-tier programming. Prerequisite: Undergraduate Operating
Systems. Term offered varies. 3 credits
Levels: Graduate, Undergraduate
-
CS 571 - Programming Languages
Selected topics in programming languages and alternative programming paradigms.
Functional and imperative languages. Logic programming and object-oriented programming
paradigms. Languages for concurrent computation. Semantics of programming languages.
Prerequisite: Undergraduate Algorithims. Offered every semester when possible. 3
credits
Levels: Graduate, Undergraduate
-
CS 575 - Design & Analysis Comp Algorit
Analysis of programs and review of design techniques. Lower bound theory and NP-completeness. Heuristic, approximation, probabilistic and parallel algorithms. Prerequisites:
Undergraduate Algorithms. Offered every semester when possible. 3 credits
Levels: Graduate, Undergraduate