Shawn O'Neil teaching

Command-Line Data Analysis (3 weeks @ 3 hrs per week)

The Linux command-line environment has long been used for analyzing text-based and scientific data, and there are a large number of tools pre-installed for data analysis. These can be chained together to form powerful pipelines. Material will cover these and related tools (including grep, sort, awk, sed, etc.) driven by examples of biological data in a problem-solving context that introduces programmatic thinking. This course also covers regular expressions, a useful syntax for matching and substituting string and sequence data.

Data Programming in R (6 weeks @ 3 hrs per week)

The R programming language is widely used for the analysis of statistical data sets. This course introduces the language from a computer science perspective, covering topics such as basic data types (e.g. integers, numerics, characters, vectors, lists, matrices, and data frames), importing and manipulating data (in particular, vector and data-frame indexing), control flow (loops, conditionals, and functions), and good practices for producing readable, reusable, and efficient R code. We'll also explore functional programming concepts and the powerful data manipulation and visualization packages dplyr and tidyr, and ggplot2.

Genotyping By Sequencing (3 weeks @ 3 hrs per week)

This course covers the analysis of data generated by genotyping-by-sequencing (GBS), a restriction-enzyme approach allowing the deep sequencing of many individuals or samples at select regions of the genome. We'll cover potential applications of GBS (e.g. population-level analyses), processing GBS data with the Tassel, Uneak, and Stacks software, and interpretation of the results.

Introduction to Unix/Linux (3 weeks @ 3 hrs per week)

This course introduces the natural environment of bioinformatics: the Linux command line. Material will cover logging into remote machines, filesystem organization and file manipulation, and installing and using software (including examples such as HMMER, BLAST, and MUSCLE). Finally, we introduce the CGRB research infrastructure (including submitting batch jobs) and concepts for data analysis on the command line with tools such as grep and wc.

Metagenomics I (3 weeks @ 3 hrs per week)

 Description coming soon.

Metagenomics II (3 weeks @ 3 hrs per week)

 Description coming soon.

Recursion and Dynamic Programming (3 weeks @ 3 hrs per week)

This course explores and implements several problem-solving techniques that are related and particularly beautiful: recursion, (self-referential processes), dynamic programming (guided deconstruction of problems into subproblems), and induction (the mathematical proof technique). After some practice with basic recursive methods (the Fibonacci sequence and predator-prey recurrence relations), we'll cover variations of the sequence-alignment problem from multiple perspectives, including the local heuristic used by BLAST.

Topics covered along the way include memoization, dynamic programming, proofs by contradiction, and data structures like lists, hash tables, stacks, trees, and the call stack. Finally, we'll explore graphical modeling of plants with L-system fractals and if time allows other applications that utilize recursion and dynamic programming (e.g. Hidden Markov Models).

RNA-Seq I (3 weeks @ 3 hrs per week)

This first of a series on analyzing RNA-seq data covers the development of de-novo transcriptome assemblies. This includes data cleaning and preparation, comparing methods of assembly, filtering of contigs and assessing the quality of output. Other topics include variant detection and annotation.

RNA-Seq II (3 weeks @ 3 hrs per week)

This second in the series on analyzing RNA-seq data covers the analysis of differential expression. Topics include data preparation, read mapping, region identification and statistical analysis with R and Bioconductor.

Python I (3 weeks @ 3 hrs per week)

This course introduces programming concepts, driven by examples of biological data analysis, in the Python programming language. Topics covered will include variables and data types (including strings, integers and floats, dictionaries and lists), control flow (loops, conditionals, and some boolean logic), variable scope and its proper use, basic usage of regular expressions, functions, file input and output, and interacting with the larger Unix/Linux environment.

Python II (3 weeks @ 3 hrs per week)

Part II of the Python series expands on basic programming topics and explores a common concept in modern software development called Object Oriented design, driven again by examples of biological data analysis. Although we will not cover the subtopics of inheritance or public/private variables, we will discuss the use of objects (and their blueprints: classes) in encapsulating functionality into easily used blocks of code that more closely match the biological concepts at hand. Other topics in this area include APIs and syntactic sugar. Finally, we’ll use these ideas to explore creating and using packages such as the BioPython package.

Simulating Natural Systems (3 weeks @ 3 hrs per week)

What better way to explore the world of programming than by exploring the world with programming? This course focuses on methods of simulation (and graphical visualization via py.processing.org) guided by examples from natural systems. Topics include vectors and physical forces, information entropy, agent-based systems and flocking, random walks and Monte-Carlo methods, cellular automata, Voronoi diagrams, population simulations and genetic algorithms, and neural networks.