Dan Gusfield

Distinguished Professor, Emeritus

Ph.D., UC Berkeley, 1980, Ph.D. advisor: Richard Karp

My primary interests involve the efficiency of algorithms, particularly for problems in combinatorial optimization and graph theory. These algorithms have been applied to study data security, stable matching, network flow, matroid optimization, string/pattern matching problems, molecular sequence analysis, and optimization problems in population-scale genomics. Currently, I am focused on string and combinatorial problems that arise in computational biology and bioinformatics. I served as chair of the computer science department at UCD from July 2000 until August 2004, and was the founding Editor-in-Chief of The IEEE/ACM Transactions of Computational Biology and Bioinformatics until January 2009.

Introduction to The IEEE/ACM Transactions of Computational Biology and Bioinformatics

I am a Fellow of the ACM, IEEE, and ISCB. For a longer biosketch, see short biosketch 2019

      Office: 2125 Kemper Hall (Engineering II)
      Phone: (530) 752-7131
      E-mail: gusfield@cs.ucdavis.edu

Please Note: the correct URL for this page is: http://csiflabs.cs.ucdavis.edu/~gusfield NOT : http://csiflabs.cs.ucdavis.edu/gusfield (note the missing  ~)  Please bookmark this page for later reference.

Soon to be published book:

Proven Impossible: Elementary Proofs of Profound Impossibility from Arrow, Bell, Chaitin, Goedel, Turing and more
D. Gusfield, Cambridge University Press, 2024.

Previously published book:

Integer Linear Programming in Computational and Systems Biology: An entry-level text and course
D. Gusfield, Cambridge University Press, 2019.

Supplimentary Material for the Integer Programming Book:

The Integer Programming book is accompanied by about fifty programs written in Python and Perl that generate concrete Integer Linear Programming formulations for many of the biological problems in the book. The following zip file contains those programs, along with data and a catalog of the programs and how to use the programs. Additionally, although no knowledge of computer programming is needed to use the programs, or to read the book, for the reader who wants to understand how the Python programs work, I have written a short tutorial on Python, specifically designed around two of the Python programs that accompany the book.

Programs, Data, Catalog, and Python Tutorial (zip file) accompaning the book: Integer Linear Programming in Computational and Systems Biology: An entry-level text and course

If you just want the Python tutorial:
Short Python tutorial accompaning the book: Integer Linear Programming in Computational and Systems Biology: An entry-level text and course

Zoom Recording of Guest Lecture in Math 280, March 2, 2021 - Bell's Theorem, EPR, Locality, Realism and all that
Bell's Theorem(s), EPR, Locality, Realism and all that - in Quick-Time format March 3, this doesn't seem to play when clicked on - but it does download if (on my mac) I specify that it should open in a different tab. Then, the downloaded movie plays. I hope I can make it just start playing without downloading first. I am working on it.

Slides from Bell's Theorem(s) Lecture, March 2, 2021

Papers distributed for my lecture on Bell's theorem(s), March 2, 2021
quantum-enigma1,2
quantum-enigma3
quantum-enigma4
quantum-enigma5
quantum-enigma6
quantum-enigma7
Mermin Moon and Reality Paper
Bell's 1964 paper
Bell's 1966 paper
My draft writeup of Zeilinger's Bell Theorem proof


Gurobi webinar I gave on Integer Linear Programming in Computational Biology, March 2020

Slides from the Gurobi Webinar
Slides from the Gurobi Webinar on Integer Linear Programming in Computational Biology

From Integer Programming to SAT-Solving in Computational Biology
Plenary Keynote Talk WABI 2020, September 9, 2020


Webinar Recording on Integer Linear Programming in Computational Biology - Focus on RNA Folding
Gurobi webinar I gave on Integer Linear Programming in Computational Biology, March 2020

Slides from the Gurobi Webinar
Slides from the Gurobi Webinar on Integer Linear Programming in Computational Biology

Slides from the tutorial I gave on Integer Linear Programming in Computational and Systems Biology, based on the book:
Two hour tutorial given September 7, 2019 at the ACM BCB conference in Niagara Falls, NY

Integer Linear Programming in Computational Biology - New course for Fall, 2017

Integer Linear Programming in Computational Biology - CS 189a, Fall 2017


Hot Hands, Streaks and Coin-flips: Numerical Nonsense in the New York Times

Nonesense in the NYTs In October 2015, The New York Times published two articles concerning the statistics of hot-hands and streaks in sports. Those articles mangled and confused elementary concepts in probability and statistics. In so doing, it's high-visibility articles have added to the general-public's confusion about probability, making it seem mysterious and paradoxical when it needn't be. However, those articles make excellent case studies on how to get it wrong, and for discussions in high-school and college classes focusing on quantitative reasoning, data analysis, probability and statistics. What I have written here is intended for that audience.

Godel for Goldilocks -- A variant of Godel's First Incompleteness Theorem

Not too technical, not too philosophical -- A Rigorous, Yet Streamlined, Proof of (a variant of) Godel's First Incompleteness Theorem, Requiring Minimal Background August, 2014, revised November 2014.
This is written for the first lecture of an undergraduate course on the Theory of Computation. It only requires knowing what integers, functions, and computer programs are. It is a no frills, no paradox, no analogy, no weird logic notation, to-the-point, proof.

Godel's first incompleteness theorem, Lecture Video 1 About one hour and 15 minutes.

Godel's first incompleteness theorem, Lecture Video 2 About 25 minutes.

The Fast Fourier Transform (FFT)

The most important algorithm that most computer scientists have never studied.

Four video Lectures on the Fast Fourier Transform Algorithm (FFT), and the Discrete Fourier Transform (DFT) that it computes. These are designed for undergraduates. The needed background is: a little high-school trigonometry, familiarity with complex numbers, familiarity with divide-and-conquer algorithms and their time-analyses, and familiarity with recursive programs and algorithms.

First Lecture on FFT
22 Minutes. Introduction to the topic via the problem of evaluating a polynomial at n chosen points in O(n log n) time; introduction to a divide-and-conquer approach; the first part of the recursion needed for the solution.

Second Lecture on FFT
57 Minutes. The video here skips a review that was part of the second lecture, and begins where the first lecture ends. It derives the second part of the recusion needed for the divide-and-conquer solution, introducing the use of complex numbers defined on the unit circle.

Third Lecture on FFT
1 hour and 41 minutes. Summary of the whole divide-and-conquer algorithm; naming of the Discrete Fourier Transform (DFT); some standard terminology; explicit connection of the divide-and-conquer algorithm to the Fast Fourier Transform; Introduction of the problem of finding the product of two polynomials; recasting the DFT as a matrix-by-vector multiplication; introduction to the inverse DFT and inverse FFT.

Fourth Lecture on FFT
40 Minutes. The punch line; Solving the inverse problem by FFT; spoiler alert -- the inverse FFT algorithm is a fantasy - its the same as the forward algorithm, but you have to permute the output; summary of the solution using the FFT three times; convolution; class dismissed.

Graduate Algorithms Course Lecture Videos:

CS222A Lecture Videos

These are lecture videos for CS 222A taken between fall 2007 and spring 2015. Some of the lectures are supplementary, and were not given in the actual class. This is the required graduate course at UC Davis Computer Science on Design and Analysis of Efficient Computer Algorithms.

Undergraduate Algorithms Course Lecture Videos:

CS122A Lecture Videos

These are lecture videos for CS 122A taken in fall 2010. This is the required undergraduate course at UC Davis Computer Science on Design and Analysis of Efficient Computer Algorithms.

The webpage for ECS 225 in Winter 2012 is www.cs.ucdavis.edu/~gusfield/cs225w12
ECS 225 Winter 2012, Graph Theory and Algorithms

The webpage for ECS 120 in Fall 2011 is www.cs.ucdavis.edu/~gusfield/cs120f11
ECS 120 Fall 2011, Theory of Computation

The webpage for ECS 224 in Fall 2011 www.cs.ucdavis.edu/~gusfield/cs224f11
ECS 224 Fall 2011, Algorithms for Strings and Computational Biology



Fall 2009 - The website for the class ECS 224, String Algorithms and Computational Biology Algorithms, is www.cs.ucdavis.edu/~gusfield/cs224f09
ECS 224 Fall 2009

Since Spring 2000 I have been teaching an undergraduate course CS 124 Theory and Practice of Bioinformatics. See The Expanded Syllabus for CS124 for more information.
The current (Spring 2008) class webpage .

Bioinformatics Course Lecture Videos:

Lecture Videos for Fundamental Algorithms in Bioinformatics

These are lecture videos for CS 124 mostly taken in 2002 (with editing and some new material in 2014). For the topics covered, they are still surprisingly current. Clicking will open a menu for the lectures. Synopses of the lectures can be found at: Synopses of Bioinformatics Lecture Videos

Some Recent Publications

For selected recent publications: recent publications

Some Errata for Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology can be found in Errata.

Some Recent Talks

For powerpoint of some recent talks: some recent talks

Software developed at UC Davis in my group

The software developed here covers a range of topics in computational biology and sequence analysis, and often accompanies papers published on the methodologies behind the software. Available software


October 2020