This course is intended for students interested in learning efficient techniques for processing and analyzing large text collections, such as large-scale system logs, massive text corpora, medical records, or databases of DNA and protein sequences. The main focus is on fast algorithms and data structures for strings and sequences, including pattern matching, pairwise comparison, indexing and searching, as well as probabilistic methods, like fingerprinting and hashing. The theoretical component is complemented by practical considerations regarding efficient implementations of the discussed algorithms, and their applications in the real-world systems. The example applications include tools like UNIX grep, frameworks for plagiarism detection, and numerous tools driving computational biology (e.g., BLAST, read mappers, DNA assemblers, etc.). The course has also a programming component, in which students implement small but fully functional text processing applications.