Travis McGaha

he/him/his

I am a Lecturer in the Computer and Information Sciences department at the University of Pennsylvania. I teach undergraduate and graduate courses :)

I am currently teaching CIS 3800 and CIT 5950 for Spring 2024.


Teaching Experience

University of Pennsylvania

Lecturer
August 2021 - Present
CIS 3800: Computer Operating Systems

A course in C that covers sytem calls, processes, interrupts, memory, threads, and virtualization.

Last Taught: Spring 2024

CIT 5950: Computer Systems Programming

A C and C++ course that covers sytem calls, file I/O, threading, and networks.

Last Taught: Spring 2024

CIS 1100: Intro to Computer Programming

A CS1 course in Java. Topics include strings, arrays, loops, testing, simple OOP, and lists.

Last Taught: Spring 2023
w/ Harry Smith

CIS 2400: Intro to Computer Systems

A bottom-up course going from transistors to assembly. Ends with an introduction to C.

Last Taught: Fall 2022

University of Washington, Seattle

Lecturer & Teaching Assistant
January 2018 - June 2021
CSE 333: Systems Programming

C & C++ programming with topics on system calls, threading, and networking.

TA'd 5 times
Instructor Summer 2020
Co-instructor w/ Justin Hsia Spring 2021

CSE 452: Distributed Systems (TA)

Covers theory and design details of distributed systems. Students implement a primary/backup system then move on to implement multi-paxos and a sharded server.

Last Taught: Winter 2021

CSE 160: Data Programming (TA)

Introduction to programming. Course uses Python to solve real-world interdisciplinary tasks.

Last Taught: Fall 2020

CSE 120: Computer Science Principles (TA)

Introduces basic programming fundamentals and discusses how Computer Science affects average people.

Last Taught: Winter 2019

CSE 373: Data Structures and Algorithms (TA)

Data structures & algorithms for non CSE majors. Covers standard algorithms, dynamic programming, algortihmic analysis, and other topics.

Last Taught: Summer 2018

CSE 351: The Hardware/Software Interface (TA)

Examines key computational abstraction levels below modern high-level languages. Includes data representation, caching & memory, assembly, and other related topics.

Last Taught: Spring 2018

CSE 143: Computer Programming II (TA)

Core introductory programming course. Explores classes and data structres like maps, linked lists, stacks, and queues. Course utilizes Java.

Last Taught: Winter 2018


Education

University of Washington Seattle

Master of Science
Computer Science & Engineering
September 2019 - March 2021

University of Washington Seattle

Bachelor of Science
Computer Engineering
September 2016 - June 2019

Meeting with Me

Please feel free to meet with me! I am a busy person, but I am happy to meet with students whenever I am free.

My office is Levine 269 A, and I am happy to have students visit whenever my door is open.
If you would like to schedule a specific time to meet, please click here to schedule a 1-on-1 Meeting

Just a few things to note:

  • If you are in crisis and need someone to talk to, please reach out to me directly or use the link above to schedule a time to talk.
  • Please be as descriptive as you are comfortable about why you want to meet

Teaching Links I Like

The following is a collection of links to articles, confrence talks and video essays related to my job that I think are neat :).
None of these are made by me, I just want to put these in a convenient space where others may be able to find them.

Feel free to send me something if you think I would like it :)

Note: I do not necessarily agree with these all 100%, but I do think they are interesting and worth reading/listening

Programming

  • Stop Teaching C: Talk from CppCon 2015 by Kate Gregory. Talk is about how we should stop saying "You need to learn C before learning C++". Infact, teaching C++ this way leads to bad C++ practices.
  • Data-Oriented Design and C++: Talk from CppCon 2014 by Mike Actom. Talk is about designing your code in a way where you think about code in terms of data and how it interacts with the cache. Doing so greatly helps performance
  • 10 Core Guidelines You Need to Start Using Now: Talk from CppCon 2017 by Kate Gregory. Covers various style things new to C++ and the C++ Core Guidelines. I particularly like the discussion on optional<T> and raw pointers.
  • C++ Core Guidlines: A "style/design guide" edited by Bjarne Stroustrup and Herb Sutter about writting C++ well.
  • Can C++ be 10x Simpler & Safer?: Talk from CppCon 2022 by Herb Sutter. C++ started as just being compiled down into C code, and Herb wants to do the same w/ a new language called cppfront. I hope it succeeds :)
  • Rust Book w/ Improvements: An expereiment by Will Crichton and Shriram Krishnamurthi at Brown University. It teaches rust pretty well and with interactie quizzes. There is a talk on this soon at Rustconf 2023 :)
  • Modern C and What We Can Learn From It: Talk from ACCU 2021 by Luca Sas. Talk came out shortly before the most modern C version (C23) so there may be some things missing, but it talks about several things that can be done to make programming in C less painful and easier to do. This has heavily affected the C code that I have written for personal use. What I teach hasn't been affceted that much though since I am mostly only do surface level C, though I would talk about these things if I had more time to talk about C.
  • Comparing 'Classic C++' and 'Modern C++' Ways to Solve Programming Tasks: Talk from ACCU 2023 by Roger Orr. Excellent talk about some of the many ways things can be/have been done in C++. It compares different implementations of the same thing from various different persectives (performance, readability, saftey, etc.). I would highly recommend the first 35 minutes, the rest is still good but it requires a bit more technical depth than I think most people I would recommend this to would care to hear. Those first 35 minutes are great for covering readability and if I were to teach a class that talked more about program design, I would 100% use these examples. They are straight forward for people with even a tiny amount of C++ experience.

Grading

Critical Education, Diversity, Equity & Inclusion

Misc.


For Fun

I do have a life outside of UPenn, faculty are people too!
I like to spend my time with:

Music

I love listening to and occasionally playing music on the guitar. I listen to most genres, but lately I've been listening to a lot of Jettison - And So I Watch You From Afar and

Video Games

I typically stick to role-playing & story-driven games or logic games. Favourites include: Fallout: New Vegas, Satisfactory, Stardew Valley, and The Witness

Video Essays/Reading

Getting well structured stories/information in either auditory or visual form is pretty nice. Lately I've been reading novels by Haruki Murakami.

Walking

It is really nice to just be able to walk around the city, see/try new things, and just not be stuck in the house. Philly doesn't have as nice of a landscape as the pacific NW, but it is nice walking around.


Awards

  • Bob Bandes Memorial Student Teaching Award
    For outstanding performance as a teaching assistant. Awarded for the 2019-2020 academic year.