Teaching

IIT 7024 Advanced System Architecture

Teaching assistant, Graduate course, School of Integrated Technology, Yonsei University, 2016

This course mainly introduced computer organization and design, including the following topics: i) instruction-level parallelism, including parallel processing, superscalar, VILW, static instruction scheduling dynamic scheduling and precise exception handling, ii) memory-level parallelism, iii) data-level parallelism including multi-core architecture, GPU, iv) thread-level parallelism and v) NVM-level parallelism. This course is a project-centric; I prepared five gem5 lab projects. Most projects are a step-by-step tutorial to teach students how they can do simulation-based architectural explorations and studies. It will include CPU design analysis, exploring different branch predictors, multi-threading on full-system mode evaluations, and SSD internal parallelism analysis on gem5. Considering undergraduate students, this course will also include quick review lectures, which will include, instruction set architecture, MIPS/RISC architecture, pipelining, hazard and cache architecture.

IIT 3002 Operating Systems: teaching assistant

Teaching assistant, Undergraduate course, School of Integrated Technology, Yonsei University, 2015

The purpose of this course is to teach the general concepts and principles behind operating systems. The topic we have covered through this class, including i) kernel and process abstractions and programming, ii) scheduling and synchronization, iii) memory management and address translation, iv) caching and virtual memory v) file systems, storage devices, files and reliability, vi) full and para-virtualization. In addition to these lectures, we also provided term projects, which use an operating system simulator/emulator built for an educational purpose. In these projects, we expect that the students not only can learn Linux practices but also make great strides in studies on operating systems design and implementation. This is in C/C++, rather than Java or Python. We believe that these projects can provide a more realistic experience in operating systems to students. In this course, all homeworks are treated in an individual assignment; whereas projects are considered as a group assignment. In typical, it is difficult to figure out the contributions that each member committed, the submission for these projects will be done through a git repository per group (e.g., bitbucket), and I checked all push and pull transactions to grade a team.

IIT 6036 Computer Organization and Design: teaching assistant

Teaching assistant, Graduate course, School of Integrated Technology, Yonsei University, 2015

This course is related to architecture fundamentals. Students are expected to be familiar with some hardware and computer science background. In this course, we provide two or three simple projects, one of each leveraging a different style of simulation models built for an educational purpose. The one of the goal behind these projects is that students can learn i) how to use full system simulation software and ii) how to perform simulation-based architectural studies, which in turn can be a good steppingstone for your future research. The simulation framework built on both most 32-bit and 64-bit flavors of UNIX and Windows NT-based operating systems. Although the projects will be relatively simple (compared to what an advanced computer architecture course usually deals with), we expect these projects can aid the students of the capability of freely analyzing/modifying C/C++ written software models.