Fostering the next generation of computer scientists through innovative and research-informed teaching methods that integrate theory with hands-on practice. Teaching emphasizes interactive learning environments, the effective use of educational technologies, and personalized mentorship to support student growth in artificial intelligence, software engineering, and related computing disciplines.
My teaching philosophy is rooted in the belief that education must continuously evolve to reflect the rapid advancement of artificial intelligence and its transformative role in society. Every student possesses unique potential that can be cultivated through personalized, adaptive, and technology-enhanced learning experiences that foster critical thinking, creativity, and problem-solving skills.
- Guiding Principle — “Be yourself, respect your abilities, and work hard.” This guiding message encourages students to develop confidence, resilience, and a strong sense of responsibility toward their learning. I emphasize intellectual independence and ethical awareness, ensuring that students are prepared to engage with AI technologies not only as users, but also as thoughtful designers and decision-makers.
- Research-Integrated Teaching. Teaching is closely integrated with my research in artificial intelligence, recommender systems, learning technologies, and mobile and cloud-based educational platforms.
- The Future Impact of AI on Education and Employment. A central goal of my teaching is to prepare students for the evolving demands of future employment in an AI-driven world.
A comprehensive graduate and undergraduate curriculum covering both foundational and advanced topics in computer science, ranging from theoretical models of computation to practical software and system development. The courses are designed to integrate theory with hands-on experience, equipping students with strong analytical skills, modern programming expertise, and the ability to apply computational thinking to real-world problems. Below is a selection of courses that I currently teach or have taught.
A foundational course that introduces the core principles of machine learning, covering key algorithms, modeling techniques, and data-driven approaches for building intelligent systems. The course emphasizes both theoretical understanding and practical implementation, enabling students to design, train, and evaluate learning models for real-world applications in areas such as recommendation, pattern recognition, decision support, and predictive analytics.
A foundational course introducing the theoretical principles of computation through the study of formal languages and abstract machines. The course examines finite automata, regular expressions, context-free grammars, and Turing machines, highlighting their role as the mathematical backbone of modern computing. Connections are drawn to contemporary applications in artificial intelligence, including language processing, pattern recognition, verification, and the theoretical limits of learning and automated reasoning systems.
A rigorous course covering the mathematical foundations of information theory, including entropy, information measures, coding theory, and probabilistic models of communication. The course emphasizes the role of information-theoretic principles in data representation, compression, and reliable transmission, while drawing connections to contemporary applications in artificial intelligence, machine learning, and data analytics, where concepts such as entropy and mutual information are central to learning, inference, and model evaluation.
A foundational course that explores the principles and computational techniques used to process natural and formal languages. The course covers linguistic representation, algorithmic analysis, and system-level design, while highlighting the role of language processing as a core component of modern artificial intelligence. Emphasis is placed on both rule-based and data-driven approaches, enabling students to develop practical language processing systems for real-world applications.
A comprehensive course on mobile application development for iOS devices using Swift, focusing on modern software design, user interface development, and seamless interaction with device hardware. The course emphasizes building responsive, secure, and user-centered mobile applications, while introducing practical integration of artificial intelligence services such as on-device machine learning, data-driven personalization, and intelligent user interaction in mobile environments.
A comprehensive introduction to object-oriented programming using Java, covering core programming concepts as well as advanced topics in data structures and algorithm design. The course emphasizes disciplined software development, abstraction, and modular design, providing students with a strong foundation for building scalable and maintainable systems. Practical connections are made to the implementation of intelligent and data-driven applications, including components commonly used in artificial intelligence and large-scale software systems.
An advanced graduate course that provides an in-depth study of modern artificial intelligence models, algorithms, and system-level applications. The course emphasizes both theoretical foundations and advanced methodologies underlying intelligent behavior, learning, and reasoning. Students explore state-of-the-art AI techniques while critically examining their limitations, scalability, and reliability in real-world systems, including education, decision support, and intelligent software platforms.
Graduate-level study of formal computational models that support rigorous reasoning about programs, languages, and complex systems. The course covers term rewriting systems, lambda calculus, and operational and denotational semantics, emphasizing proof techniques, correctness, and expressiveness. Connections are made to modern AI through topics such as symbolic reasoning, formal verification of learning-enabled components, and the theoretical foundations underlying automated reasoning, program synthesis, and safe intelligent systems.
An advanced graduate course covering the theoretical foundations and practical techniques of compiler construction, grounded in formal language theory. The course examines the full compilation pipeline—from lexical and syntactic analysis to semantic processing, optimization, and code generation—while emphasizing correctness, efficiency, and extensibility. Connections are made to artificial intelligence through program analysis, optimization strategies, and the role of compilers in supporting machine learning frameworks, domain-specific languages, and intelligent software systems.
An advanced graduate course that provides a rigorous theoretical treatment of automata theory, formal languages, and computational complexity. The course emphasizes mathematical analysis, proof techniques, and expressiveness of computational models, extending beyond classical results to explore modern perspectives on computation. Strong connections are made to artificial intelligence through complexity-theoretic limits of learning and reasoning, formal verification of intelligent systems, and the theoretical foundations of algorithmic decision-making.
Developing and applying innovative educational tools, intelligent systems, and pedagogical methodologies to enhance computer science education. This work emphasizes the integration of artificial intelligence, data-driven learning technologies, and interactive platforms to support deeper understanding, personalized learning experiences, and improved student engagement across diverse educational contexts.
Developed advanced virtual learning environments and interactive simulators to support the teaching of complex computational concepts. These tools are designed to make abstract theoretical ideas more accessible through visualization, experimentation, and immediate feedback, with applications in areas such as automata theory, information theory, and foundational computer science education.
Conducted research on personalized and adaptive learning approaches that respond to individual learner characteristics, cognitive preferences, and evolving performance patterns. This work focuses on leveraging data-driven models and intelligent systems to tailor learning experiences, enhance engagement, and support effective knowledge acquisition across diverse educational contexts.
Focused on the design and development of mobile applications and multimedia learning systems that support ubiquitous, flexible, and learner-centered access to educational content. This work emphasizes seamless user experience, adaptive delivery, and integration with cloud-based services, enabling effective learning across devices, locations, and connectivity conditions.
Measuring the effectiveness of teaching and learning through student achievement, academic performance, and long-term career development. These outcomes reflect a strong alignment between rigorous theoretical instruction, practical skill development, and preparation for advanced study and professional practice.
Graduates from these courses have successfully progressed to careers in software engineering, artificial intelligence, data science, and research-oriented graduate programs. The strong outcomes demonstrate the impact of research-informed teaching, personalized mentoring, and continuous alignment with evolving academic and industry requirements.