Skip to main content

Below is a list of UNC classes I have taught with a small overview of what the course involved.  (I do not list the classes taught as an adjunct professor at another university.)


COMP 116: Introduction to Scientific Programming

This is a introductory course in Python using Anaconda notebooks.   Classes are active in that students “code” in the copy of the slides they have “fetched” to their machine.   Positive feedback is given for correct answers right in the notebook.

The class covers basic programming concepts and then applies them to scientific questions.   In the past, scientific questions involved river data during an active hurricane season, COVID data in the spring of 2020, and green house gases, rainfall analysis, and games of chance.

The exams also provide a checker which does analysis of the graphs or other answers that give an a positive indication of their answers.   Of course, the grader adds additional test cases to validate the answer.

COMP 222: ACM Programming Competition Practice

This class is offered as a practice to the International Collegiate Programming Contest, ICPC, competition.   The class is a one credit course that goes over various programming algorithmic strategies.  Students are challenged to solve problems from previous ICPC competitions on the Kattis web site,  to present their solution to the class, and to critique other solutions in terms of speed, memory, and language considerations.

If it’s after August, 2021 ask me how our UNC_Alternate team did in the ICPC North American Championship.  I’m so proud of our team.   My biggest hope is that I can stay out of the team’s way, that we represent the university well, and that they have fun.   Going to the ICPC World Finals would just be icing on the cake.

COMP 421: Files & Databases

This class covers data storage, file organization,  and database history, practice, models, structure and design.

Databases are an indispensable tool for managing information, and a course on the principles and practice of database systems is now an integral part of any computer science curricula. This course covers the fundamentals of modern database management systems, in particular relational database systems.

The material covered in COMP 421 can be broken into three areas of emphasis. The first area includes database foundation material such as the relational model, and normal forms. The second area of emphasis is database application programming and includes among others the topics of Structured Query Language (SQL), integrating databases into programs, and web-based database usage. The third area of emphasis is the systems side of databases, which includes database indexing, efficient query evaluation, the transaction-based model, and concurrency.

This course is suitable for computer science majors at both undergraduate and graduate levels. Students who wish to take this course should have some programming experience in a modern language (we will be using Python) and knowledge of data structures. Course grades will be based on in-class exercises, five problem sets, two mid-terms, and a final exam.

COMP 550: Algorithms and Analysis

This class is the classic class on algorithms and their analysis using Cormen, Leiserson, Rivest, and Stein, Introduction to Algorithms textbook.  The course covers the mathematical, asymptotic analysis of algorithms, surveys several dynamic programming, divide and conquer, linear programming, and networking algorithms (varies by semester).

The class taught actively with worksheets that students individually and in groups follow along during lecture.   Homeworks reinforce classroom activities.  And exams are presented in a holistic browser format that supports mathematical analysis, pseudocode programming, multiple choice, and table answers.    In classroom worksheets and exams, immediate positive feedback is given.