Created by Magical Gnomes!


...begin by assuming a perfect sphere...

The primary reason that I enrolled in the graduate program here at Purdue University is my love for teaching. I owe a great debt of gratitude to Dr. Mark Johnson for hiring me as an undergraduate TA for ECE 364 many years ago.

CS 25200 - Systems Programming (3 credit hours)

Low-level programming; review of addresses, pointers, memory layout, and data representation; text, data, and bss segments; debugging and hex dumps; concurrent execution with threads and processes; address spaces; file names; descriptors and file pointers; inheritance; system calls and library functions; standard I/O and string libraries; simplified socket programming; building tools to help programmers; make and make files; shell scripts and quoting; unix tools including sed, echo, test, and find; scripting languages such as awk; version control; object and executable files (.o and a.out); symbol tables; pointers to functions; hierarchical directories; and DNS hierarchy; programming embedded systems.

Spring 2018: Instructor (114 students) - Syllabus

CS 30700 - Software Engineering I (3 credit hours)

An introduction to the methods and tools of software engineering; software life cycle; specification and design of software, software testing, cost and effort estimation; laboratory exercises with design, testing, and other tools.

Spring 2018: Instructor (149 students) - Syllabus
Fall 2017: Instructor (178 students)
Spring 2017: Instructor (166 students)

CS 18000 - Problem Solving and Object-Oriented Programming (4 credit hours)

Problem solving and algorithms, implementation of algorithms in a high level programming language, conditionals, the iterative approach and debugging, collections of data, searching and sorting, solving problems by decomposition, the object-oriented approach, subclasses of existing classes, handling exceptions that occur when the program is running, graphical user interfaces (GUIs), data stored in files, abstract data types, a glimpse at topics from other CS courses.

Fall 2017: Instructor (185 students) - Syllabus

CS 50011 - Introduction to Systems for Information Security II (3 credit hours)

The course covers computer systems principles relevant to information security and it serves as a prerequisite for the later courses in the MS in IS program. The material includes features in the C/C++ programming languages for understanding security-critical software vulnerabilities, basic knowledge in computer architecture and assembly languages, knowledge of the compiling process, operating systems, networking, databases, and web applications relevant to information security.

Summer 2017: Instructor (2 students) - Syllabus

CS 25000 - Computer Architecture (4 credit hours)

Covers the function of basic hardware, including fundamentals of digital logic, processors, memory, and I/O.

Summer 2017: Instructor (43 students) - Syllabus

ECE 469 - Operating Systems Engineering (4 credit hours)

The design and construction of operating systems for both individual computers and distributed (networked) systems. Basic concepts and methods for managing processor, main memory, block-structured storage, and network resources are covered. Detailed examples are taken from a number of operating systems, emphasizing the techniques used in networked versions of UNIX. These techniques are applied to design improvements of portions of a simplified, networked, UNIX-based operating system; the improvements are implemented and their performance is evaluated in laboratory experiments.

Spring 2008: Instructor (35 students) - Syllabus

ECE 264 - Advanced C Programming (2 credit hours)

Continuation of a first programming course. Topics include files, structures, pointers, and the proper use of dynamic data structures. A basic knowledge of the UNIX operating system and an introductory C programming course is expected; C programming knowledge should include basic syntax, control structures, and file I/O, as well as experience in declaring and using functions.

Fall 2005: Instructor (92 students) * - Syllabus

ECE 364 - Software Engineering Tools Laboratory (1 credit hour)

To acquaint the students with a variety of current software engineering tools, scripting languages, and application programming languages. Students are expected to use their previous programming experience to design and test software programs using the techniques learned in this course.

Fall 2007: Instructor (38 students) - Syllabus
Spring 2007: Instructor (54 students)
Fall 2006: Instructor (30 students)
Spring 2006: Instructor (55 students) *

Spring 2005: Graduate Teaching Assistant (TA)
Fall 2004: Graduate Teaching Assistant (TA)

Spring 2004: Undergraduate Teaching Assistant (UTA)
Fall 2003: Undergraduate Teaching Assistant (UTA)
Spring 2003: Undergraduate Teaching Assistant (UTA)

Fall 2002: Undergraduate Laboratory Assistant (ULA)

* During the 2005-2006 academic year I was the recipient of the Charles C. Chappelle Fellowship