Teaching Awards and Experience


When I joined McGill, there were no courses in 
high-performance computer architectures and parallel 
processing systems. I introduced and developed a set of 
new courses (308-505,308-605,308-622) on computer
architectures and parallelizing compilers. These 
courses have been consolidated and improved over
the period of time, forming a core for students who are 
interested in the related subject areas. For example, 
the enrollment of 308-505 has trippled over the years. 
I have also taught a variety of new graduate
seminar courses as listed below. 

  1. outstanding teaching award nominations:
    1. nomination for the Engineering Class of 51' Award for Outstanding Teaching (1988);
    2. nomination reconsideration for the Engineering Class of 51' Award for Outstanding Teaching (1989);
    3. nomination for the Engineering Class of 51' Award for Outstanding Teaching (1990);
    4. nomination reconsideration for the Engineering Class of 51' Award for Outstanding Teaching (1991);

  2. New courses introduced:
    1. 308-505: Topics in High-Performance Computer Architecture This course examines the basic principles and modern techniques used in the design of high-performance computer architectures. The course stresses the concepts which are embodied in many high-performance computer architectures, ideas which will continue to apply in the future in spite of a rapidly changing technological environment. The primary objective of the course is to show how effective designs use technology cleverly to achieve balanced, efficient structures, well matched to the class of problems they overcome Both qualitative and quantitative approach has been covered in the course.
    2. 308-605: Topics in Parallel Computer Architecture This course studies the basic principles in parallel computer architecture and programming issues. The course stresses the concepts and principles of parallel processing, and its rela- tion with the underlying computer architecture. The fundamental issues of von Neumann style - multiprocessing are addressed. Novel architec- ture models such as dataflow as well as multi- threaded architecture models are discussed.Both theoretical and pragmatic issues in designing parallel computer architectures are covered.
    3. 308-622: Advanced Topics in Compilers One of the main challenges to future parallel computer systems is their programmability.Thus, we need to study and develop compiling methodologies which can effectively perform (1) program analysis, and (2) program mapping (decomposition, scheduling,and data structure mapping) to maximally exploit parallelism with efficiency. This course studies the contemporary work in compiler design and implementation for parallel computer systems such as vector/pipelined machines, superscalar/ superpipelined machines, and SIMD/MIMD multiprocessor systems. In addition, compiling issues for novel architectures with fine- grain parallelism are discussed.

  3. New software tools introduced or developed for teaching:
    1. the SISAL language, compiler and program profiling tools from LLNL;
    2. the Stanford AWB Architecture Workbench;
    3. the Berkeley/Stanford DLX Architecture simulation tools;
    4. the McGill Compiler and Architecture Testbed;
    5. the McGill Dataflow Architecture Testbed;
    6. an instrumented cache trace simulator;
    7. various benchmark suits for architecture/ compiler studies: SPEC, LINPACK, Whetstone, Drystone,Livermore Loops, NAS, Spice, GCC etc.;
    8. The MTA testbed
    9. The SITA tool set
    10. The EPPP tool set

  4. Graduate seminar courses taught:
    1. 308-762A: Topics in Languages and Compiler Design for High-Performance Computing (Fall 1989,1990) This course was introduced and developed in the 1989 and 1990, and is now called 308-622.
    2. 308-764A: Introduction to Supercomputer: Architectures, Programming and Applications (Fall 1988) A substantial contents of this seminar course has later been subsumed in 308-605 which began in 1989.
    3. 308-766B: Topics in Functional Programming and Architectures (Spring, 1988) In this course, the students are guided in intensive reading of a well selected set of contemporary literatures in the field of functional programming, dataflow languages, and architectures. Class debates are organized around the two fundamental issues in multi- processor computers: the memory latency and synchronization overhead. Novel architecture models are discussed which address the two fundamental issues. The programmability of these architectures are also discussed.

  5. The ACAPS laboratory I have established the Advanced Computer Architecture and Program Structures Laboratory since 1988. In addition to performing first class research, one important objective of this laboratory has been to facilitate the teaching of the computer architecture and compiler courses, and training of graduate research and teaching assistants. The new courses and software tools described above depend directly on this laboratory. The laboratory is now equipped with various workstation. We have a wide variety of research and teaching software installed, and a number of my best graduate students have actively participated and contributed to teaching.