Ioan Raicu

Illinois Institute of Technology

Argonne National Laboratory

Teaching

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.

 

Next Semester

TBA