Fall 2023: CS 550, Advanced Operating Systems
Spring 2023: CS554: Data-Intensive Computing
Fall 2022: CS553: Cloud Computing
Spring 2022: CS351: Systems Programming
Fall 2021: CS554: Data-Intensive Computing
Spring 2021: CS553: Cloud Computing
Fall 2020: CS351: Systems Programming
Spring 2020: 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: CS450.
Fall 2019: CS 550, Advanced Operating Systems
This course covers general issues of design and
implementation of distributed systems. The focus is on issues that
are critical to the applications of distributed systems and computer
networks, which include interprocess communication, distributed
processing, sharing and replication of data and files. 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 distributed systems. Prerequsites: CS450.
Spring 2018: 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: CS450.
Fall 2017: 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: CS450.
Fall 2017: CS554, 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. Prerequsites: CS450; however, one or more of the following courses would be highly recommended: CS451, CS546, CS550, CS553, or CS570.
Summer 2017: CS595, Special Topics in Distributed Systems
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates.
Summer 2016: CS595, Special Topics in Distributed Systems
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates.
Spring 2016: 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: CS450.
Fall 2015: CS 550, Advanced Operating Systems
This course covers general issues of design and
implementation of distributed systems. The focus is on issues that
are critical to the applications of distributed systems and computer
networks, which include interprocess communication, distributed
processing, sharing and replication of data and files. 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 distributed systems. Prerequsites: CS450.
Fall 2015: CS497/CS597/CS691, Reading and Research
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates. Undergraduate students should enroll in CS497, master students should enrol in CS597, and PhD students should enroll in CS691.
Spring 2015: CS554, 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. Prerequsites: CS450; however, one or more of the following courses would be highly recommended: CS451, CS546, CS550, CS553, or CS570.
Spring 2015: CS497/CS597/CS691, Reading and Research
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates. Undergraduate students should enroll in CS497, master students should enrol in CS597, and PhD students should enroll in CS691.
Fall 2014: 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: CS450.
Fall 2014: CS497/CS597/CS691, Reading and Research
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates. Undergraduate students should enroll in CS497, master students should enrol in CS597, and PhD students should enroll in CS691.
Spring 2014:
CS451: Intro to Parallel and Distributed Computing
This course covers general introductory concepts in the design and
implementation of parallel and distributed systems, covering all the
major branches such as Cloud Computing, Grid Computing, Cluster
Computing, Supercomputing, and Many-core Computing. The specific
topics that this course will cover are: asynchronous/synchronous
computation/communication, concurrency control, fault tolerance, GPU
architecture and programming, heterogeneity, interconnection
topologies, load balancing, memory consistency model, memory
hierarchies, Message passing interface (MPI), MIMD/SIMD,
multithreaded programming, parallel algorithms & architectures,
parallel I/O, performance analysis and tuning, power, programming
models (data parallel, task parallel, process-centric,
shared/distributed memory), scalability and performance studies,
scheduling, storage systems, and synchronization. This course
involves lectures, programming assignments, and exams. This course
was offered as
CS495 in the past. Prerequsites: CS351 or CS450.
Spring 2014: CS497/CS597/CS691, Reading and Research
This seminar course covers in-depth research projects and related research work in distributed systems, storage, scheduling, and clouds. Students are expected to work independently on various research projects, and meet weekly to discuss research papers relevant to your projects. Students are also expected to meet 1:1 with the professor on a weekly basis for progress updates. Undergraduate students should enroll in CS497, master students should enrol in CS597, and PhD students should enroll in CS691.
Fall 2013: CS554, 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. Prerequsites: CS450; however, one or more of the following courses would be recommended: 495 (Intro to Distributed Systems), CS546, CS550, CS553, or CS570.
Spring 2013: 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: CS450.
Fall 2012: CS 495,
Introduction to Distributed Computing
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 Many-core Computing. The specific
topics that this course will cover are: scheduling in
multiprocessors, memory hierarchies, synchronization, concurrency
control, fault tolerance, data parallel programming models,
scalability studies, distributed memory message passing systems,
shared memory programming models, tasks, dependence graphs and
program transformations, parallel I/O, applications, tools, SIMD,
MIMD, fundamental parallel algorithms, parallel programming
exercises, parallel algorithm design techniques, interconnection
topologies, heterogeneity, load balancing, memory consistency model,
asynchronous computation, partitioning, determinacy, Amdahl's Law,
scalability and performance studies, vectorization and
parallelization, parallel programming languages, and power. Some of
these topics are covered in more depth in the graduate courses
focusing on specific sub-domains of distributed systems, such
CS546,
CS550,
CS553,
CS554, CS570,
and CS595. While
this CS495 course is not a pre-requisite to any of the graduate
level courses in distributed systems, both undergraduate and
graduate students who wish to be better prepared for these courses
could take this CS495 course. This course involves lectures,
programming assignments, and exams. 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.
TBA