Past classroom teaching

  • Software Design and Modeling

    Design principles; design approaches; use of architectures and frameworks; applying design patterns; documentation standards; quality analysis and security issues.

  • Data Modeling

    Data design and modeling for transactional and analytical systems; the use of relational and object databases; database security issues; database performance issues; and data access.

  • Software Testing

    Test levels (unit, integration and system); test objectives testing techniques, measures and process (planning, test case generation and defect tracking)

  • Web Application Testing

    Web application testing with an emphasis on modern tools and approaches; unit, system, integration testing; performance and load testing; security testing; cross-browser issues; accessibility and usability.

  • Data Structures

    Data structures including binary search trees, priority queues, hash tables, and heaps. Recursion, sorting, and run-time analysis using big-O notation.

  • Object-Oriented Concepts

    Object-oriented principles including abstraction, encapsulation, and support for re-use. Object-oriented design essentials: contractual design, containment, composition, inheritance, overloading and polymorphism. Design variants, and their short vs long-term impact, emphasized.

  • Software Architecture

    Fundamentals of software architecture design, modeling, and analysis. Impact of architectural design choices on quality. Architectural styles, architectural evolution, domain specific software engineering, and software product families.

  • Princples of Software Engineering

    Requirements and specifications, architecture, design, object-oriented software engineering, software testing and quality assurance, maintenance.

  • Invited Talks

    Lectures on engineering discipline, software testing, and code review at National Yang Ming Chiao Tung University and National Taiwan University.