### Ran Libeskind-Hadas's Teaching

### Introductory Courses

Our department's introductory course is CS 5 and it comes in three color-coded flavors: CS 5 Gold is for students with no prior experience, CS 5 Black is for students with some programming experience (e.g., a high school CS course or self-taught), and CS 5 Green is a biologically-themed version for students with no prior background but an interest in the connection between computing and another discipline. I teach CS 5 Green regularly and CS 5 Black periodically.

CS 5 Gold/Black has a free online interactive textbook called CS For All. This course and the book are now used at a number of other colleges and universities. The book was written by Christine Alvarado, Zach Dodds, Geoff Kuenning, and Ran Libeskind-Hadas.

CS 5 Green has a textbook called Computing for Biologists written by Ran Libeskind-Hadas and Eliot Bush and published by Cambridge University Press.

### Algorithms (CS 140/Math 168)

I regularly teach the Algorithms course (CS 140/Math 168). This course emphasizes principles of algorithm design and analysis and uses a "derivation-based" approach that seeks to provide students with the skills to develop and analyze their own algorithms and presents classical algorithms as exemplars of those techniques (rather than teaching the "famous" algorithms for their own sake). More about this approach can be found in my 2013 SIGCSE paper A Derivation-First Approach to Teaching Algorithms.

### Advanced Topics in Algorithms (CS 181)

This is a 7-week half-course that introduces students to some more advanced topics than are usually covered in the "Algorithms" course. The topics typically include:

- Matching algorithms and duality (matching in biparite, weighted bipartite, and general graphs)
- Greedy algorithms and matroids
- Approximation schemes (PTAS and FPTAS)
- Competitive analysis of online algorithms and lower bound techniques

### Introduction to Mathematical and Computational Biology (MCB 118b)

I teach half of this half course and explore algorithms for phylogenetic inference. We examine both distance-based and character-based methods. In particular, for distance-based methods we look at ultrametric trees and algorithms for transforming non-ultrametric distance matrices into ultrametric ones. For character-based methods we look at maximum parsimony reconciliation. We also explore the Robinson-Foulds distance metric and efficient randomized algorithms for computing the RF distance. Each week, students implement one algorithm and use it to explore real datasets.

This half course meets in the second half of the spring semester may be taken individually or in conjunction with MCB 118a, which is a half course on mathematical modeling that meets in the first half of the spring semester.