Teaching

In alignment with my robust research interests, my teaching portfolio encompasses a diverse array of courses spanning algorithms and data structures, discrete mathematics, data compression/coding, text algorithms, text mining, applied algorithms, advanced algorithms, and algorithmic bioinformatics at both undergraduate and graduate levels. An exceptional point of emphasis has been my delivery of courses centered on algorithm engineering, a discipline designed to fuse theoretical foundations with practical software development. Furthermore, my background in cryptography stemming from over a decade of professional engineering experience has enabled me to offer specialized courses catering to introductory levels of this field. Additionally, I have actively participated in special programs aimed at professionals, delivering content tailored to the algorithmic needs expressed by industry partners as well as government & military personnel. The courses that had been actively taught by myself is given in the following chart.

In addition to the courses previously mentioned, I possess the capability to deliver a wide array of undergraduate courses in both computer science and computer engineering, e.g., introduction to computer science, digital design, computer organization and architecture, operating systems, software engineering, finite state automata, theory of computation, and etc.

My expertise extends to the creation and delivery of graduate-level courses tailored to my research interests, ensuring the incorporation of cutting-edge insights into the curriculum. Some examples are as follows:

Advanced Data Structures: A graduate-level exploration of complex data structures and their applications. Topics include advanced tree structures, graph algorithms, spatial data structures, and techniques for efficient data manipulation and retrieval.

Machine Learning for Text Data: Leveraging my expertise in text algorithms, this course focuses on applying machine learning techniques to textual data. Students learn about natural language processing, feature extraction, text classification, and sentiment analysis.

Privacy-Preserving Data Analytics: Delving into the intersection of data analytics and privacy, this course covers techniques for analyzing sensitive data while safeguarding indi- vidual privacy. Students explore differential privacy, secure multi-party computation, and cryptographic protocols.

Algorithm Engineering and Optimization: Building upon the concept of algorithm en- gineering, this course delves into advanced algorithmic techniques for achieving optimal per- formance in real-world scenarios. Students explore algorithm analysis, optimization strategies, and the interplay between theory and practical implementation.

Advanced Topics in Bioinformatics: A graduate-level exploration of algorithmic tech- niques for processing and analyzing biological data. Students delve into topics such as sequence alignment, genome assembly, structural bioinformatics, and systems biology.

Cryptanalysis: Cryptanalysis is a specialized course designed to explore the art and science of deciphering encrypted information. In this course, students delve into the techniques and methods used to break cryptographic codes, uncover hidden messages, and assess the security of encryption systems.The course provides a comprehensive understanding of various cryptographic systems and how vulnerabilities can be exploited to reveal plaintext from ciphertext. Topics to be covered are as cryptographic primitives, classic / modern / public-key cryptanalyses, side-channel attacks, cryptographic protocols and systems, cryptanalysis tools.