Neil Rhodes is an occasional lecturer in the Computer Science and Engineering department at UC San Diego and formerly a staff software engineer at Google. Most recently, he was one of the lecturers at UCSD Summer Program for Incoming Students (, as well as at the UCSD Summer Academy for transfer students ( He’s taught Algorithms at the undergraduate and graduate level, as well as classes in Machine Learning, Operating Systems, Discrete Math, Automata and Computability Theory, and Software Engineering. As well as teaching at UC San Diego, he’s also taught at Harvey Mudd College. Mr. Rhodes holds a B.A. and M.S. in Computer Science from UCSD. He left the Ph.D. program at UC San Diego to found a company, Palomar Software, and spent fifteen years writing software, books on software development, and designed and taught programming courses for Apple and Palm.


Learning Algorithms through Programming: Toolbox

Algorithmic Toolbox

Advanced Algorithms and Complexity

Algorithms on Graphs

Data Structures

Algorithms on Strings

Genome Assembly Programming Challenge