About

I teach both upper-level undergraduate and graduate courses for the Computer Science Department. At WPI, undergrad courses are 7-week while graduate courses are 14-week. I like project-based learning and all my course offerings are designed/redesigned to bring theory and practice together. I find it very challenging to keep up with the mobile technology and often spend perhaps way too much time in revamping the course projects. 😆 If you have suggestions and tips, I'd love to hear from you! Just drop me an email.

📱 Mobile & Ubiquitous Computing (CS4518, Undergrad)

The goal of this course is to acquaint students with fundamental concepts and state-of-the-art computer science literature in mobile and ubiquitous computing. Topics to be covered include mobile systems issues, human activity and emotion sensing, location sensing, mobile human-computer interaction, mobile social networking, mobile health, power saving techniques, energy and mobile performance measurement studies, and mobile security. The course will introduce the programming of mobile devices such as smartphones running the Android operating system. Recommended background: Proficiency in programming in Java, including classes, inheritance, exceptions, interfaces, and polymorphism (CS 2102 or equivalent). Students may not earn credit for both CS 403X and CS 4518.


🚀 Distributed Systems (CS4513, Undergrad)

This course will introduce the design challenges in providing data persistence and building distributed systems. Topics to be expected include I/O devices, file systems, time synchronization, distributed coordination, scheduling, consistency issues, and fault tolerance algorithms. The course will cover basic mechanisms and policies for achieving data persistence and fundamental distributed system concepts. Students are expected to engage in course projects that require using Linux command lines, C, and Go programming language.


💽 Operating Systems (CS502, Grad)

This course is designed to help students learn more about operating systems, allowing students to know how to write applications that leverage operating system resources or for those that wish to develop operating systems themselves. The course will cover both the low-level mechanisms and high-level policies for achieving CPU and memory virtualization, concurrency, and data persistence. Students are expected to engage in course projects that require using the C programming language.


🌤️ Special Topic: Cloud Computing (CS525, Grad)

This is a seminar course with a heavy focus of understanding state-of-the-art cloud research via reading technical papers and engaging in a semester-long group project. To make the course accessible to students who do not have existing background in cloud computing, the course is divided into two parts. The first few weeks, the instructor will present materials that introduce students to important cloud-related techniques. The latter weeks, students are expected to lead and actively participate in paper discussions.


🖥️ Advanced Operating Systems (CS535, Grad)