Home | Biography | Publications | Engagement
The following is a shortlist of topics for presentation to CS undergraduate students and/or faculty. The topics are based on student and faculty feedback on what they find helpful. I am happy to consider other topics in which I have sufficient expertise. (I will assist in finding the right speaker if I do not have expertise in the desired topic.)
Please inquire for topics exclusive to graduate students (Masters and PhD). Many of the topics listed also work for graduate students with attention to deeper technical aspects. Some of the listed topics are actually graduate-only as noted under pre-requisites.
Pre-university engagement is rare, but I am generally able to engage on any topic the students and faculty wish.
PS: At first glance, it might seem like the prescribed undergraduate curriculum already covers some of the topics listed. However, my presentations cover modern material and discuss several finer aspects that the curriculum does not. Also, presentations include real-life examples and employ modern tools and processes. They also include thought-provoking exercises for the audience, and I even provide feedback to anyone who sends me their solutions after the event.
Rest assured I carefully select topics and am confident they add significant educational value. (I am open to public review of my material to test this assertion.) I humbly advise against brushing off the topics just because the title words are similar to those in curricular topics. At least, check with me prior to forming an opinion.
Most of these topics are open to and recommended for all disciplines; not just CS.
Topic | Pre-requisites |
---|---|
Git and GitHub | No particular requirement |
Social coding | Introductory software engineering |
Teams and ethics | Introductory software engineering |
Markdown documentation | No particular requirement |
Building static websites | Markdown, 4th semester or later |
Professional Communication | 4th semester or later, familiarity with “Office” applications |
Scholarly Communication - 1 | 6th semester or later, familiarity with “Office” applications |
Scholarly Communication - 2 | Masters and PhD students (those needing to write a “thesis”) |
Topic | Pre-requisites |
---|---|
Modern Software Engineering | 4th semester or later |
Introduction to Unified Modeling Language | Introductory OOP |
Software Testing | Introductory software engineering |
Software Test Scaffolding and Strategies | Introductory softwate testing |
Software Metrics | Introductory software design and testing |
Unit Testing | Introductory software testing |
Software Configuration Management and Version Control | Introductory software engineering |
Issue Management | Introductory version control |
Topic | Pre-requisites |
---|---|
Entity-Relationship (ER) Modeling | 5th semester or later |
Introduction to Relational Model | 4th semester or later |
Converting ER Schema to Relational Schema | Familiarity with ER and relational models |
Normalization | Familiarity with relational model |
Physical data organization | Familiarity with ER, relational models, and SQL |
Concurrency | Familiarity with relational model and SQL |
Structured Query Language (SQL) | Familiarity with relational model; basic, intermediate, and advanced levels |
Database Programming (server side) | Familiarity with relational model and SQL |
Database Programming (client side) | Familiarity with Java, relational model, and SQL |
Database Access Control (server side) | Familiarity with relational model and SQL |
Extensible Markup Language (XML) | Familiarity with relational model |
JavaScript Object Notation (JSON) | Familiarity with relational model |
Topic | Pre-requisites |
---|---|
Introduction to Modern C++ | No prior requirement; topics depend on level of familiarity with C++ |
Modern C++ for C, Java, Python Programmers | Introductory knowledge of a language other than C++ |
Operator overloading | Familiarity with C++ functions |
Template metaprogramming (TMP) | Familiarity with C++ functions |
Containers in the C++ Standard Library | Introductory C++ |
Compile-time computation | Introductory C++ and assembly language |
Working with Strings | Introductory C++ |
Rules of zero, three, and five | Familiarity with C++ classes |
Effective Memory Management | Familiarity with dynamic-memory allocation and deallocation |
Exception-handling and alternatives | Familiarity with TMP |
Type Traits | Familiarity with TMP |
Constraints and Concepts | Familiarity with C++ type traits |
Core C++ Guidelines | Introductory C++; topics depend on level of familiarity with C++ |
Intro | Process | Logistics | Topics | Term Projects | Contact