Teaching
This page highlights my teaching experience, including courses I have served as a teaching assistant for at Purdue University and previous institutions.
CS 307: Software Engineering I (Undergraduate) [Fall 2023, Fall 2022] [Syllabus]
This course introduces students to the issues in software development and the software life cycle, including models such as waterfall and spiral. It covers requirements and design specification, data flow diagrams, entity-relationship diagrams, finite state machines, and Petri-nets. Students learn about software testing (functional and structural), cost and effort estimation, and selected advanced topics such as reliability estimation, parallel program design, and verification methods. The course emphasizes the social implications of software quality and the relationship of software engineering to other disciplines.
This course introduces students to the issues in software development and the software life cycle, including models such as waterfall and spiral. It covers requirements and design specification, data flow diagrams, entity-relationship diagrams, finite state machines, and Petri-nets. Students learn about software testing (functional and structural), cost and effort estimation, and selected advanced topics such as reliability estimation, parallel program design, and verification methods. The course emphasizes the social implications of software quality and the relationship of software engineering to other disciplines.
CS 251: Data Structures (Undergraduate) [Spring 2022, Fall 2021] [Syllabus]
This course covers the analysis and implementation of fundamental data structures and algorithms. Topics include running time analysis, abstract data types, arrays, linked lists, stacks, queues, trees, binary trees, searching and sorting algorithms, heaps, binary search trees, balanced search trees, hashing, union-find structures, spatial data structures, tries, string algorithms, and an introduction to graphs and graph algorithms. Students gain experience with both theoretical and practical aspects of data structures, preparing them for advanced coursework and software development.
This course covers the analysis and implementation of fundamental data structures and algorithms. Topics include running time analysis, abstract data types, arrays, linked lists, stacks, queues, trees, binary trees, searching and sorting algorithms, heaps, binary search trees, balanced search trees, hashing, union-find structures, spatial data structures, tries, string algorithms, and an introduction to graphs and graph algorithms. Students gain experience with both theoretical and practical aspects of data structures, preparing them for advanced coursework and software development.
In addition to my teaching experience at Purdue, I have also served as a teaching assistant for the following courses at my previous institutions.
CEng492: Computer Engineering Design II [Catalog]
This capstone course focuses on the analysis, requirement specification, design, implementation, and testing phases of a computer system. Students work on real-life hardware/software projects, applying engineering methods to deliver professional-quality solutions.
This capstone course focuses on the analysis, requirement specification, design, implementation, and testing phases of a computer system. Students work on real-life hardware/software projects, applying engineering methods to deliver professional-quality solutions.
CEng489: Introduction to Computer Security [Catalog]
Covers core concepts of computer security, including cryptography, authentication, access control, software and network security, intrusion detection, and legal/organizational aspects. Students gain foundational knowledge in both theory and practice of securing computer systems.
Covers core concepts of computer security, including cryptography, authentication, access control, software and network security, intrusion detection, and legal/organizational aspects. Students gain foundational knowledge in both theory and practice of securing computer systems.
CEng350: Software Engineering [Catalog]
Introduces software project management, requirements analysis, design techniques, quality assurance, testing, and maintenance. Emphasizes practical skills in planning, implementing, and managing software projects.
Introduces software project management, requirements analysis, design techniques, quality assurance, testing, and maintenance. Emphasizes practical skills in planning, implementing, and managing software projects.
CEng331: Computer Organization [Catalog]
Explores microprogramming, I/O devices and interfaces, memory hierarchy, fast arithmetic, and RISC architectures. Students learn the fundamentals of how computers are organized and how hardware components interact.
Explores microprogramming, I/O devices and interfaces, memory hierarchy, fast arithmetic, and RISC architectures. Students learn the fundamentals of how computers are organized and how hardware components interact.