Kai Presler-Marshall

Kai's teaching and research interests

Teaching at Bowdoin College:

Fall 2023

  • CSCI 1101 (Introduction to Computer Science): A Python-based introduction to computer science. This course covers fundamentals in computer science, including problem solving & decomposition, conditionals, loops, core data structures, object-oriented programming and recursion.

  • CSCI 2101 (Data Structures): An intensive, Java-based introduction to the data structures used by computer scientists. This course teaches how to build commonly-used linear and non-linear data structures (lists, stacks, queues, maps, trees) and how to use them to solve interesting and non-trivial problems.

Spring 2023

  • CSCI 1101 (Introduction to Computer Science): A Python-based introduction to computer science. This course covers fundamentals in computer science, including problem solving & decomposition, conditionals, loops, core data structures, object-oriented programming and recursion.

  • CSCI 2335 (Software Engineering): An overhauled version of CSCI 2335 from Fall 2022, better aligned with the liberal arts curriculum, and with many newly-created in-class workshops to support project tasks.

Fall 2022

  • CSCI 1103 (Programming with Data): A Python-based accelerated introduction to computer science, teaching students about the fundamentals of computer science, and how to use computers to analyse data.

  • CSCI 2335 (Software Engineering): A new course, serving as a Java-based introduction to software engineering. Covers the practises and processes of professional software engineering, and how we can deliver high-quality software, every single time.

Prior teaching experience during grad school at NC State:

  • CSC 216 (Software Development Fundamentals) Teaching Assistant: Summer 2016; I assisted students with assignments, held office hours, and graded assignments.

  • CSC 326 (Software Engineering) Teaching Assistant: Fall 2016 to Fall 2021: Assisting students as above; additionally, teaching labs twice a week. I wrote and maintain the course project (see research for more information) and write most homework assignments. I teach lecture as necessary to fill gaps in instructor schedules. I’ve won NC State’s “Outstanding Teaching Assistant” award twice for my performance in this class. I managed the Jenkins Continuous Integration infrastructure used for six semesters before handling a transition to Github Actions in Summer 2021.

  • CSC 246 (Operating Systems Principles) Instructor: Summer 2018: I taught Operating Systems, overseeing a TA who helped with grading. I developed lecture content, delivered lectures, wrote exams and homework assignment, and assisted students one-on-one.

  • CSC 216 (Software Development Fundamentals) Instructor: Summer 2019, Summer 2020, Summer 2021. I taught Software Development Fundamentals, writing and delivering lectures, maintaining course materials, managing our continuous integration environment, overseeing TAs, and grading assignments. I assisted students online and in person for our on-campus and distance education sections of the course. For Summer 2020, I modified the class for online delivery and delivered the course in a synchronous online format. For Summer 2021, I caught the class in a hybrid fashion, with some students attending live in person, some live via Zoom, and some watching recorded lectures on their own schedule.

  • CSC 326 (Software Engineering) Co-Instructor: Fall 2019. Working with Dr. Sarah Heckman, I co-instructed Software Engineering in Fall 2019. I wrote and delivered lectures for a large course, wrote homework assignments, assisted students, and managed our continouous integration environment.