I have been teaching at the college level since 2000. Over the years, I have taught numerous courses at several institutions. Below are courses and descriptions for courses I have taught at Bellarmine and SMCM.  For other institutions I have listed only the course number and title.

Bellarmine University

CS 100. Introduction to Computing

Introduction to basic concepts in computing including, but not limited to, the history of computing, basic hardware and software, command-line interfaces, version control, shell-scripting, programming languages, and the social impact of computing on society 3 credit hours.

CS 130. Programming Fundamentals

Introduction to fundamental concepts of procedural programming; data types, control structures, functions, arrays, and files; the mechanics of running, testing, and debugging; problem solving techniques; multiple operating system environments; basic web page development; introduction to the historical and social context of computing and an overview of computer science as a discipline. 4 credit hours. Prerequisites: none.

CS131. The Object-Oriented Paradigm

Introduction to the concepts of object-oriented programming; definition and use of classes along with the fundamentals of object-oriented design; inheritance and polymorphism; overview of programming language principles; simple analysis of algorithms; basic search and sorting techniques, and an introduction to software engineering issues; introduction to generic programming. 3 credit hours. Prerequisites: CS 130.

CS150. Computer Programming for the Liberal Arts

Introduction to computer programming for students interested in learning the practical aspects of programming for solving problems in a wide variety of disciplines outside of computer science and engineering. The course covers basic programming constructs including statements, expressions, variables, conditionals, iteration, functions, and simple data visualization and data manipulation techniques. This course will not count for credit in either the Computer Science or Computer Engineering programs. 3 credit hours. Prerequisites: none..

CS215. Data Structures

Algorithmic notation; algorithm design; elementary data structures and their storage representations; linear data structures and their sequential and linked representations; nonlinear data structures and their storage representations; memory management; file processing; sorting and searching algorithms. 3 credit hours. Prerequisites: CS 131, Math 120.

CS300. Database Management Systems

Organization; independence of and relationships among database concepts; logical and data structure representation of hierarchical, network and relational data models; data normalizations; description languages, query facilities; file organization and security; index organization. 3 credit hours. Prerequisites: CS 215.

CS311. Application Development in Visual Languages

Design of an effective application interface in visual environment; procedures, variables, and operations; projects, forms, and modules; data structures and control structures; data files and database management; input and output techniques; objects and classes; ActiveX components, and web connections. 3 credit hours. Prerequisites: CS 215.

CS322. Compiler Construction

The purpose of compilers and translators; different types of compilers and translators; formal language concepts including syntax and basic characteristics of analysis and parsing techniques; interpretive languages. 3 credit hours. Prerequisites: CS 215.

CS400. Software Design and Development

Design techniques; formal models of structured programming; organization and management; estimating program libraries; documentation; organization of a large-scale project by students. 3 credit hours. Prerequisites: CS 215.

CS415. Data Communications and Computer Networks

Traditional star networks vs. various distributed designs; access methods and protocols; data communications hardware; software and transmission media; systems design considerations; implementation and upgrading, including common carrier options; computer networks. 3 credit hours. Prerequisites: CS 215.

CS430. Machine Learning in the Cloud

This course introduces you to various machine learning models. You will learn the fundamental concepts behind these models as well as a formal understanding of how, why, and when they work. Along the way, you will learn about data visualization, data preparation, model implementation (supervised and unsupervised), and model evaluation. 3 credit hours. Prerequisite: CS 215 or instructor permission.

CS440. Computer Science Seminar – Cybersecurity – Fall 2020

A seminar on topics that are common to all computer science programs. Topics chosen to be studied will be determined in advance by the instructor with the consent of the chairperson of the department. (Prerequisite: senior standing in a computer science program.)

CS450. Capstone

A capstone course for majors in computer engineering and computer science. Satisfactory completion of a major design and development project with both a written report and an oral presentation are required. Includes a comprehensive exam in computer engineering or computer science as appropriate. 3 credit hours. Prerequisites: CS 215.

DS160. Introduction to Data Science

This course introduces the fundamental concepts of performing exploratory data analysis. Students will be exposed to several Python data analysis tools including Pandas, SciKit, Matplotlib, and Seaborn as well as brief coverage of the R programming language and Structured Query Language (SQL). 3 credit hours. Prerequisite: CS 150.

St. Mary’s College of Maryland

COSC 120. Introduction to Computer Science I

This course surveys computer science and introduces object-oriented programming. A survey of the pivotal fields of computer science, including software engineering, computer networks, programming languages, algorithms, computer architecture, models of computation and operating systems. Students begin to solve simple problems using object-oriented programming. The emphasis is on implementing object-oriented designs. This course is suitable for non-majors who want an overview of computer science and to learn to solve problems with programs. COSC 120 satisfies the Core Curriculum requirement in Mathematics.

COSC 130. Introduction to Computer Science II

This course examines object-oriented design and programming in greater detail. An examination of the use of the data structures provided by language-specific libraries, and some common simple algorithms. Students learn to design and implement simple applications. The emphasis of this course is on learning good design. This course is suitable for non-majors who want to improve their ability to solve problems using programs. Prerequisite: COSC 120.

COSC201. Algorithms and Data Structures

This course examines the representation (data structures) and manipulation (algorithms) of information. The emphasis is on choosing the most memory and/or time efficient implementation for a particular application. Topics: common implementation of lists, sets, maps, stacks, queues, trees and graphs, and a survey of some common algorithms for processing these data structures. Students will compare implementations of the data structures commonly provided by language-specific libraries. Prerequisite: COSC 130.

COSC 335. Operating Systems.

This course studies the structure, function of and algorithms used in operating systems. Topics include scheduling, processes and threads, inter-process communication, memory management, file systems, protection and security and input-output management. The course will compare the features and implementation of two current operating systems. Prerequisite: COSC 230.

COSC 420. Distributed and Parallel Computing

This course studies the methods for using several computers connected by a network to solve a single problem. Topics include networking services, middleware (CORBA, DCOM, SOAP, RMI and RPC), two- and three-tier client-server systems, algorithms for parallel computing, performance evaluation and hardware architectures (clusters, grids, surfaces). Prerequisite: COSC 201 or permission of the instructor.

COSC 450: Theory of Database Management Systems

This course examines the concepts of databases. Topics include flat, hierarchical and relational database models, entity attribute relationship modeling, relational calculus, data normalization, functional dependence, data integrity, transactions and rollback, data security, distributed databases, information and knowledge management, object-relational mapping and object-oriented databases. Prerequisite: COSC 201; and MATH 200 or MATH 281.

COSC 480: Machine Learning

This course introduces the process of developing effective static and interactive visualizations for scientific and other datasets. Topics include human perception, cognitive load theory, interactive graphics programming, and visualizing specific types of data (e.g. multivariate data, text, geospatial, and networks/graphs). Students will learn to use assorted tools for generating visualizations including Excel, Python, R, ggplot2, D3, and others.

COSC 480: Data Visualization

This course provides a broad introduction to algorithms for machine learning and statistical inference. These algorithms are the heart of numerous applications including, but not limited to, optical character recognition, speech recognition, text mining, document classification, pattern recognition, and computer intrusion detection. The course will provide the student the basic ideas and intuition behind modern machine learning methods as well as a formal understanding of how, why, and when they work. Topics include: supervised learning and unsupervised learning approaches, perceptrons, neural networks, support vector machines, genetic algorithms, reinforcement learning, decision trees, and Bayesian networks. Prerequisite: COSC 201.

COSC 480. Interaction Design

This course provides students an introduction to the methods and skills required for designing, prototyping, and evaluating interactive systems (specifically an interactive web application). The primary focus of this course is the user interface rather than other software engineering topics. The course will include a semester long team project in which students identify the need for a web application, gather requirements, design and implement a prototype, test the prototype and evaluate the results. No previous software engineering or artistic skills are required, however familiarity with HTML, CSS and the ability to learn JavaScript is assumed. Specific topics will include: general concepts of interaction design, cognitive aspects of interaction design, gathering and analyzing data and requirements, prototyping, and evaluating/improving an application from the user interface perspective. Prerequsite: COSC 201.

University of Louisville

  • EM 694 Information Technology Management (Instructor, Course Developer)
  • CECS 617 Mobile Computing (Instructor)

Sullivan University

  • CSC 105 Introduction to Programming (Instructor, Course Developer)
  • CSC 205 Introduction to Networking and Telecommunications (Instructor, Course Developer)
  • CSC 210 Database Design (Instructor, Course Developer)
  • CSC 230 Internet Design (Instructor, Course Developer)
  • CSC 242 Object-Oriented Programming (Instructor, Course Developer)
  • CSC 272 Principles of System Design (Instructor, Course Developer)
  • CSC 303 Operating Systems (Instructor, Course Developer)
  • CSC 306 Systems Architecture (Instructor, Course Developer)
  • CSC 311 Fundamentals of E-Commerce (Instructor, Course Developer)
  • CSC 320 Data Structures (Instructor, Course Developer)
  • CSC 405 Advanced Networking and Telecommunications (Instructor, Course Developer)
  • CSC 410 Advanced Database Design (Instructor, Course Developer)
  • CSC 440 Artificial Intelligence (Instructor, Course Developer)
  • CSC 484 Technology Externship (Instructor, Course Developer)

McKendree College (now McKendree University)

  • CSI 101 Introduction to Word Processing
  • CSI 102 Introduction to Electronic Spreadsheets
  • CSI 104 Introduction to Presentation Graphics
  • CSI 130 Introduction to Computing I
  • CSI 230 Introduction to Computing II
  • CSI 335 Structure of Operating Systems
  • CSI 369 Social, Legal, and Ethical Issues of Computing
  • CSI 450 Computer Networking and Communications
  • CSI 490 Senior Seminar in CIS
  • BUS 410 Management Information Systems