Fall 2012: CS 495,
Introduction to Distributed Systems
This course covers general introductory concepts in the
design and implementation of distributed systems, covering all the
major branches such as Cloud Computing, Grid Computing, Cluster
Computing, Supercomputing, and Manycore Computing. Specific topics
include client/server architectures, remote procedure calls,
inter-process and intra-process communication, synchronization,
fault tolerance, distributed and parallel programming paradigms, and
distributed storage systems. This course is geared for undergraduate
students only. Graduate students should take CS550. Prerequsites:
CS351 or CS450.
Spring 2012: CS
553, Cloud Computing
This course is a tour through various topics and
technologies related to Cloud Computing. Topics include distributed
system models and enabling eechnologies, computer clusters for
scalable Computing, virtual machines and virtualization of clusters
and datacenters, design of cloud computing platforms, cloud
programming and software environments (Workflow Systems, MapReduce,
Google App Engine, Amazon AWS, Microsoft Azure, and emerging cloud
software stacks), grid computing and resource management, P2P
computing with overlay networks, ubiquitous computing with clouds
and the Internet of things, and dta-intensive distributed computing. The course involves
lectures, homeworks, programming assignments, and exams.
Prerequsites: CS351 or CS450.
Spring 2012: CS 695, Doctoral
Seminar
This course is required for all PhD students in computer science,
and will expose the students to presentations from senior people in
computer science from industry, government labs, and academia. The
course will involve outside invited speakers, written summaries of
presentations, and short oral presentations by the students.
Prerequsites: PhD student.
Fall 2011: CS
595, Data-Intensive Computing (renamed to CS554 starting in the
Fall 2012)
This course is a tour through various research topics in
distributed data-intensive computing, covering topics in cluster
computing, grid computing, supercomputing, and cloud computing. We
will explore solutions and learn design principles for building
large network-based computational systems to support data intensive
computing. This course is geared for junior/senior level
undergraduates and graduate students in computer science.
Prerequsites: CS495 (Intro to Distributed Systems) or CS546 or CS550
or CS553 or CS570.
Spring 2011:
CS 550, Advanced Operating Systems
This course covers fundamental
issues that are critical to distributed systems and applications.
The topics include communication (remote procedure call, remote
method invocation, and message- and stream-oriented communication),
processes and threads, naming, synchronization, consistency and
replication, fault tolerance, file systems, and security.
Approximately two third of the course will be devoted to basic
concepts and techniques, and the remaining third will be on assorted
current topics in modern operating systems and distributed systems. Prerequsites: CS450.
Spring 2011: CS 695, Doctoral
Seminar
This course is required for all PhD students in computer science,
and will expose the students to presentations from senior people in
computer science from industry, government labs, and academia. The
course will involve outside invited speakers, written summaries of
presentations, and short oral presentations by the students.
Fall 2010: CS
595, Data-Intensive Computing
This course is a tour through various research topics in
distributed data-intensive computing, covering topics in cluster
computing, grid computing, supercomputing, and cloud computing. We
will explore solutions and learn design principles for building
large network-based computational systems to support data intensive
computing. This course is geared for junior/senior level
undergraduates and graduate students in computer science.
Spring 2010:
EECS211, Fundamentals of Computer Programming 2 (Northwestern
University)
This class covers a variety of topics: object-oriented
programming, classes and data hiding, dynamic object construction
and destruction, derived classes and inheritance, virtual functions,
functions, call by value/reference, overloading, abstract data
types, standard template libraries, exception handling, introduction
to UNIX, file processing, and process management. This course is
required for computer science majors.
Winter 2010:
EECS 395 / EECS
495, Hot Topics in Distributed Systems: Data-Intensive Computing
(Northwestern University)
This course is a tour through various research topics in
distributed data-intensive computing, covering topics in cluster
computing, grid computing, supercomputing, and cloud computing. We
will explore solutions and learn design principles for building
large network-based computational systems to support data intensive
computing. This course is geared for junior/senior level
undergraduates and graduate students in computer science.