Teaching is a great joy for me.  I take great pride in all all aspects of teaching a course including preparing engaging lectures, writing meaningful assignments, and providing appropriate and adequate support through office hours, help sessions, and TA training.  Below is a list of classes that I’ve had the opportunity to teach.  I’ve identified them more by their broad content than by the precise university course name/number.

Introduction to Engineering Design

This course is taken mostly by first-year engineering and computer science students.  It is semester-long, team-based, multidisciplinary project-based learning experience.  The students work on a design project that makes use of topics from each of the represented discipline.  Additionally, we focus significant attention on the teaming aspect of the course by partnering with the Hart Center for Engineering Leadership.  In this partnership, we are able to provide technical support as well as interpersonal and teaming support to the students.

Introduction to Computing Concepts

This course has been offered in both C++ and Java.  I’ve taught honors and non-honors versions of this course as well.  For the first several years of teaching, this was the first course for computer science majors at SMU.  It then became a non-majors course, and after that time, I no longer taught it.

Principles of Computer Science

I’ve taught this course in both Java and C++ as well as honors and non-honors versions.  During approximately 2007 – 2011, the honors section of this course participated in a multidisciplinary semester-long project with first-year electrical engineering and mechanical engineering students.

Programming Concepts

This course was introduced in as a second course focusing on C++, object oriented programming, and general programming best-practices.

Data Structures

I had the privilege of teaching this course since approximately 2008.  My philosophy of teaching leads this course to be very programming intensive while helping students to be more self-reliant software developers.  Content includes a deep dive into memory management in C++, lists, stacks, queues, trees, priority queues, hash tables, and basic graph theory.

Database Concepts

This course covers basic relational database management topics.  It also include a large semester project in conjunction with a GUI Development course, giving students the opportunity to pitch their own projects and then develop them into a software product.  The goal is to allow the students really their first experience in developing a piece of software from the ground up using a 3-tier software architecture and integrating multiple different technologies (database systems, web dev language such as php, web design languages such as HTML5 and CSS3, etc.).

Introduction to Data Management

Intro to Data Management was designed for non-CS majors.  It covered Microsoft Access and Excel.  Access topics included database design, SQL, normalization.  Excel topics included advanced functions, visualization, macros, goal seek, and pivot tables.

Special Topics Courses

Over the years, I’ve taught a few different special topics courses including Advanced Software Development in C++ and Competition Programming.  In the Advanced Software Development course, we covered memory manager implementation in c++, the Qt library, network programming, and basic multi-threaded programming.  The Competition Programming course was designed to help a small group of students prepare for the ACM International Collegiate Programming Competition (South Central Regional).