Teaching Materials
You are free to use these materials. Feel free to email me to tell me how you are using them, or to ask for a copy of the original Keynote files.
Full courses online
Algorithms for DNA Sequencing
- Full course on Coursera
- Lecture videos on YouTube (55 lectures, about 7 minutes each)
- Lecture notes on GitHub
- Jupyter notebooks on GitHub
Lecture notes
Computational Genomics
Introductory
Strings and matching
Indexing
Sequence alignment
Assembly
Sequence models and classification
File formats
- Notebook: FASTA (Python, Py+Colab)
- Notebook: FASTQ (Python, Py+Colab)
- Notebook: SAM (Python, Py+Colab)
Miscellaneous
Suffix Indexing
Notes added July, 2023
YouTube playlist added summer, 2022 and updated summer, 2023
Burrows-Wheeler Indexing
Notes added May, 2020
YouTube playlist added July 2020, updated in summer 2022 and 2023
- Intro: Indexing (YouTube)
- Entropy and Coding (YouTube)
- High Order Empirical Entropy (YouTube)
- Burrows-Wheeler Transform
- Bitvectors
- Wavelet Trees
- FM Index:
- Wheeler Graphs
- BWT for Repetitive Texts (r-index)
Sketching and Randomized Data Structures
Notes added May, 2020
YouTube playlist added July, 2020, 16 videos
- Hash Tables and Probability (YouTube part 1, part 2)
- Hashes and Randomness (YouTube)
- Bloom filters (YouTube part 1, part 2)
- Notebook: Shakespeare containment queries (Py+Colab)
- Coupon Collector and More Bloom Filters (YouTube)
- Notebook: Coupon collector simulations (Py+Colab)
- Randomness and Independence (YouTube)
- Universal hashing
- Cardinality
- Similarity and MinHash (YouTube)
- Notebook: Shakespeare MinHash (Py+Colab)
- Markov’s Inequality (YouTube)
- CountMin sketch
C and C++ Programming
Last updated May 9, 2020
See GitHub repo with original markdown and compilation script
- Course goals
- Course conventions
- Stages of compilation and Hello, World
- Variables, types, operators
- Printing messages
- Decisions
- Arrays
- Characters and Strings
- Reading input
- Command line arguments
- Assertions
- Math
- Compiling and Linking
- Functions
- Program structure
- Makefiles
- Memory
- Pointers
- Pointers and Arrays
- Lifetime and Scope
- Stack and Heap
- Dynamic memory allocation
- Debugging with valgrind
- Debugging with gdb
- Structures
- Beyond 1D arrays
- Binary input/output
- Numeric types
- Type casting and Promotion
- Bitwise operators
- Linked lists
C++ programming
- C++ intro
- C++ I/O and Namespaces
- C++ strings
- Standard Template Library (STL)
- STL Vector and Iterators
- STL Map
- More about Iterators
- STL Pairs and Tuples
- References
- Classes
- Constructors
- New and Delete
- Non-default constructors
- Destructors
- Passing by Reference
- Inheritance
- Polymorphism
- Virtual Destructors
- Overloading
- Enumerations
- Static Members
- Object Oriented Design Principles
- Building Strings with stringstream
- File I/O with fstream
- Exceptions
- The Rule of 3
- Template Functions
- Template Classes
- Abstract Classes
- Writing a Container Class
- Auto Type
- ranged_for loops
- override keyword