Fall 2006: I was awarded the Outstanding Teaching Assistant of the Computer Science Department at the Illinois Institute of Technology.
Fall 2004 - Fall 2006, Department of Computer Science, Illinois Institute of Technology
Spring 2001 - Fall 2002, Department of Computer Science, Univ. of Sci. and Tech. of China
Course Description
CS3375 Computer Architecture (undergraduate core)
Introduction to the functional components of computer systems; their hardware implementation and management at different levels; their interaction, characteristics, and performance as well as their practical implications for computer programming. Topics include: 1) address fundamental concepts and abstractions in computer architecture; 2) review typical performance evaluation techniques, data representations and basic computer arithmetic; 3) study of pipelined processors and issues related to instruction level parallelism (ILP); 4) examine memory hierarchical organizations, cache and virtual memory implementations; 5) I/O techniques; and 6) introduce basics on multiprocessor systems and parallelism.
CS4352 Operating Systems (undergraduate core)
Operating system is a core software component of a computer system and manages various resources of a computer, such as processors, main memory, disks, displays, network interfaces, and various input/output devices. We will cover topics including process management, scheduling and resource management, file systems, I/O, and security issues. This course will consist of class lectures, written assignments, programming projects, and exams.
CS4331 Special Topics: High Performance Computing
High performance computing (HPC) technologies have been widely used in scientific discovery and innovations, such as climate modeling and weather forecasting, molecular dynamics simulation, high-energy physics, computational biology, and geographical information systems. This course introduces the principles, systems, programming, and applications of high performance computing. Students are expected to learn the principles and gain hands-on experience in high performance computing. This course will also train students to be ready to compete in the well-known Student Cluster Competition at the International Conference for High Performance Computing, Networking, Storage and Analysis (a.k.a Supercomputing conference) and introduce students to the high performance computing community. ACKNOWLEDGMENT: The preparation of this course is partially sponsored by the National Science Foundation and IEEE Computer Society Technical Committee on Parallel Processing via the NSF-TCPP Early Adopter Status Award made to the Texas Tech University.
CS4331 Special Problems in CS: Big Data Infrastructure and Data Management (undergraduate elective)
Big data computing paradigm has emerged in recent years. It is transforming science, engineering, medicine, healthcare, finance, business, and many other domains. This course discusses the essential component of big data computing paradigm, big data infrastructure and data management. This course is for graduate level students and senior undergraduate students in the fields of computer science and computer engineering who have strong interests in big data computing paradigm. This course is designed as a research-oriented and seminar style class, with invited guest lectures, students’ presentations, and early research experiences. The course will consist of class lectures, discussions of systems and research papers, assignments and one major research-oriented course project (the deliverable includes a written report, software prototyped/experienced, and an oral presentation).
CS4379 Parallel and Concurrent Programming (undergraduate elective)
Introduction to multi-threaded programming, data parallelisms, and message passing techniques. Topics include concurrent and parallel execution environments, user-programmed parallelism, and compiler-based parallelism. Applications addressed involve numerical algorithms familiar to senior-level students.
CS5352 Advanced Operating Systems Design (graduate core)
Computer systems are undergoing a revolution. The developments of powerful microprocessors and high-speed computer networks have extended the traditional computer systems to wide-area distributed systems. The technology revolution has extended the traditional operating system roles and functionalities to an advanced and distributed manner as well. This course introduces the concepts, principles, and designs of advanced and distributed systems. Students are expected to learn the principles and gain hands-on experience on the state-of-the-art computing paradigm. The class discussions will cover architectures, communication, synchronization, fault tolerance, security, distributed file systems, as well as open research discussions in distributed and advanced operating systems. This course will consist of class lectures, assignments, programming projects, one research-oriented course project (with a written report and an oral presentation deliverables), and exams.
CS5379 Parallel Processing (graduate elective)
The advent of multicore processors has completely changed the landscape of computing. The serial computing era when programmers could transparently and automatically take advantage of the microprocessors’ performance improvement that follows the Moore’s law has gone. Instead, parallel processing has now become universal, from the multicore computing on chip to the large-scale cluster computing, Grid computing and Cloud computing. This course introduces the principles of parallel computing and covers general issues in parallel processing, which include systems, architectures, programming, performance evaluation, and applications. This course will consist of class lectures, written and programming assignments, quizzes, one major course project (including both a written report and an oral presentation), and final exam.
CS5331 Special Problems: Parallel I/O and Storage Architectures (graduate elective)
As modern multicore/manycore architectures put ever more pressure on the sluggish storage systems and many applications become more and more data intensive, parallel I/O and storage architectures are critical to advancing modern science in high-end/high-performance computing. This course introduces the principles, designs and systems of parallel I/O and storage architectures in high-performance scientific computing and high-end enterprise computing. This course covers both hardware and software stacks and contains the subjects on the overview of parallel computing/distributed computing/high-performance computing/Grid computing/Cloud computing, storage devices, parallel and distributed file systems, parallel I/O middleware, high-level parallel I/O libraries and data management. This course will consist of class lectures, discussions of research papers, programming assignments and one major course project (including both a written report and an oral presentation).
CS5331 Special Problems: Data Intensive Computing
Many high-performance scientific computing and high-end enterprise computing applications, such as climate modeling and weather forecasting, geographical information systems, medical image processing, web search, data mining, computer animation, and social networks managing millions of photos online, become highly data intensive than ever before. A new data intensive computing paradigm is emerging and plays a critical role in scientific discovery and innovations that change our daily lives. This course introduces the principles, designs and systems of data intensive computing paradigm. It is for graduate level students in the fields of computer science and computer engineering. This course will consist of class lectures, discussions of research papers, assignments and one major course project (including both a written report and an oral presentation). Students are expected to learn the principles and gain hands-on experience on the state-of-the-art data intensive computing paradigm.
CS5331 Special Problems in CS: Big Data Infrastructure and Data Management (graduate elective)
Big data computing paradigm has emerged in recent years. It is transforming science, engineering, medicine, healthcare, finance, business, and many other domains. This course discusses the essential component of big data computing paradigm, big data infrastructure and data management. This course is for graduate level students and senior undergraduate students in the fields of computer science and computer engineering who have strong interests in big data computing paradigm. This course is designed as a research-oriented and seminar style class, with invited guest lectures, students’ presentations, and early research experiences. The course will consist of class lectures, discussions of systems and research papers, assignments and one major research-oriented course project (the deliverable includes a written report, software prototyped/experienced, and an oral presentation).