Ioan Raicu

Illinois Institute of Technology

Argonne National Laboratory

Teaching

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.