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.

One of the innovative teaching techniques of COMP 421 is that students actively code SQL queries in their own web browser.  Positive acknowledgement is give for correct answers by turning their output green.

The second innovation is using gamification which has been shown to improve learning outcome for database programming1.  Think of the database game as a cross between an escape room and a Jeopardy game show.  Each student gets their own database and problem to solve.  As questions are answered the big board at the front of the room tallies the scores.  One game you must thwart the pending nuclear meltdown by querying the system to find how what the problem is, who is the saboteur, and how to stop the meltdown.   Since all students have their own database with their own escape room scenario, students can and do work with their friends to solve the problems.

[1] Mario Soflano, Thomas M. Connolly, and Thomas Hainey. 2015. An application of adaptive games-based learning
based on learning style to teach SQL. Comput. Edu. 86 (2015), 192–211

 

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 by green highlights.