Courses, On-campus
My courses vary over the years but recently I have been teaching the following courses.- ICS 53 Principles in System Design: This course broadly covers the use of hardware and software components to build computer-based systems, large and small. The course covers a combination of different core areas in computer science including operating systems, computer architecture, networking, and compilers. It is recommended to take this during your sophomore year so that it can serve as a preview for more in-depth upper-division courses.
- ICS 31 Introduction to Programming: This course is an introduction to fundamental concepts and techniques for writing software. The Python language is taught as used to introduce basic programming concepts. Topics covered include the syntax and semantics of data types, expressions, exceptions, control structures, input/output, methods, classes, and pragmatics of programming. I teach this class during summer session.
- ECPS 207 Security and Privacy Issues in CPS: As specialized computing devices and components rapidly proliferate into many aspects of everyday life, including: automotive, avionics, household automation, and medicine. This course covers modern security and privacy issues in Embedded Systems (ES) and Cyber-Physical Systems (CPS). The main goal is for students to attain familiarity with the range of threats and countermeasures facing ES/CPS. Material includes necessary cryptography background for students without prior exposure to that topic, as well as a primer on security protocols. The core of the course will focus on recent developments in security and privacy in ES/CPS. As this is a fast-moving field with constant research advances, the exact list of topics is expected to change every few years. This is a graduate-level course.
- CS 297P Capstone Design Project: This course requires student groups to design and develop a large-scale system as a quarter-long project. The system can be built from both software and hardware components. The specific project is determined by each group in collaboration with the instructor. Each group must implement at least a working prototype and test this using relevant use cases and/or input data. This is a graduate-level course.
Courses, On-line
I teach two online course specializations through UCI Division of Continuing Education and the Coursera online educational platform.- An Introduction to Programming the Internet of Things (IOT) Specialization: This specialization covers embedded systems, the Raspberry Pi Platform, and the Arduino environment for building devices that can control the physical world. In the final Capstone Project, you’ll apply the skills you learned by designing, building, and testing a microcontroller-based embedded system, producing a unique final project suitable for showcasing to future employers.
- Programming with Google Go Specialization: This specialization introduces the Go programming language from Google and provides learners with an overview of Go's special features. Upon completing the three-course sequence, learners will have gained the knowledge and skills needed to create concise, efficient, and clean applications using Go.