Teaching assistant at the Computer Science department in the Politehnica University of Bucharest.
I have prepared laboratory applications and assignments for the following courses: Architecture of Computing Systems (Spring 2008 and Fall 2009), Parallel Processing Architecture (Fall 2008), The Utilization of Operating Systems (Fall 2008). My main responsibilities were to assist and instruct students in classroom and laboratory settings, provide feedback and guidance, create lab assignments and homeworks, grade the course activity and projects.
Architecture of Computing Systems
The course presents a broad overview of different architectures of modern parallel computer systems, and a survey of the issues that should be taken into consideration when programming them. The curriculum covers the basic topics related to computing architectures (processor memory switches, memory hierarchy, data locality, cache, taxonomy for computer structures for parallel processing) and also introduces more advanced concepts (Blitzen Machine, IBM Cell Broadband Engine Architecture). The laboratory's aim is to make students understand how high performance computation can be applied in a variety of specific application areas. The lab assignments cover areas starting from basic parallel programming concepts to progamming concepts for GPUs and Cell BEs.
Parallel Processing Architecture
The course discusses different paradigms used in parallel computing, including message-passing libraries and run-time libraries for parallel computing. The laboratory assignments have two parts. The first one is more theoretical, where the students can experiment small applications for shared or distributed memory machines (using MPI, openMP and POSIX threads) and then using different tools for debugging, profiling and code optimization. The second part presents complex real applications from which students learn to add multithreading and parallelism to existing programs. The aim of the second part is to present how an existing application can be redesigned to maximize performance and programmability within limits of technology and cost.
The Utilization of Operating Systems
The main aim of this course is to familiarize students with different operating systems by starting with basic concepts (commands, interfaces, processes, threads, files, network, security) and then by introducing modern operating system specifications (in Unix, Windows and Mac OS X). The lab assignments follow the same curriculum offering student applied exercises in order to get familiar with the unix console and with windows interface, understand how an operating system functions, diagnose and solve different system and network problems.
Teaching assistant at UIUC
CS425 Distributed systems Fall 2014 – 25% TA
Topics included in the class: MapReduce, distributed hash tables (peer-to-peer systems), failure detectors, synchronization, election, distributed agreement, inter-process communication, consensus, gossiping, concurrency control, replication, key-value stores, NoSQL, security, probabilistic protocols, self-stabilization, measurements.
CS 498 Hot Topic in High Performance Computing: Networks and Fault Tolerance Fall 2011
Large-scale computer systems such as Petascale or upcoming Exascale machines pose significant challenges on the system and software designers. This course addresses two very important topics in this design: HPC networking and Fault Tolerance. The network will soon be the most expensive and critical part of large machines and fault tolerance is needed to ensure correct operation under the increasing probability of failures of single elements. The course requires basic knowledge in graph theory and system architecture.
-Franck Cappello (Fault tolerance)
-Torsten Hoefler (Networking)
-Thomas, Ropars, INRIA
-Ana Gainaru, UIUC/NCSA
-Leonardo Bautista Gomez, Titech
My presentation for this course focuses on proactive measures that are used or under study in the fault tolerance field, having the center on prediction. The talk discusses the challenges of event analysis in large scale systems and presents an overview of solutions proposed in the course of the last seven years, while discussing their advantages and shortcomings.
The class I presented: Log File Analysis for Fault Tolerance in HPC - Can we predict fault errors and failures?
Graduate Student representatives for the UIUC FAA (Fellowships, Assistantships, and Admission) Committee , ”Architecture, Compilers, and Parallel Programming” group - application reviewer assisting with the 2015 admission cycle
Member of the NCSA Colloquium Committem
Serving on the Academic Integrity Appeals Committee
Serving on the Engineering Graduate Student Advisory Committee