Sean Murthy

Home  |  Biography  |  Publications  |  Engagement

Engagement: Topics

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.

Professional development

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”)

Software Engineering

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

Data Management

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

C++

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