Introduction to Programming in the Biological Sciences Bootcamp
This course provides an intensive, hands-on, pragmatic introduction to computer programming aimed at biologists and bioengineers. No previous programming experience is assumed. Python is the language of instruction. Students will learn basic concepts such as data types, control structures, string processing, functions, input/output, etc., while writing code applied to biological problems. At the end of the course, students will be able to perform simple simulations, write scripts to run software packages and parse output, and analyze and plot data.
People
Instructor
Justin Bois (bois at caltech dot edu)
TAs
Matthias Durrieu
Saehui Hwang
Git repository
Files you will need to complete the bootcamp can be found in this repository on GitHub. Instructions for forking and cloning the repository are found in Lesson 0.
- Lesson 0: Configuring your computer
- Lesson 1: Welcome and Introduction to JupyterLab
- Lesson 2: Basic command line skills
- Lesson 3: Variables, operators, and types
- Lesson 4: More operators and conditionals
- Lesson 5: Lists and tuples
- Lesson 6: Iteration
- Lesson 7: Introduction to functions
- Lesson 8: String methods
- Lesson 9: Dictionaries
- Lesson 10: Packages and modules
- Lesson 11: File I/O
- Lesson 12: Version control with Git
- Lesson 13: Errors and exception handling
- Lesson 14: Style
- Lesson 15: Comprehensions
- Lesson 16: Introduction to Pandas
- Lesson 17: Tidy data and split-apply-combine
- Lesson 18: Making plots
- Lesson 19: High level plotting with iqplot
- Lesson 20: Styling Bokeh plots
- Lesson 21: Introduction to Numpy and Scipy
- Lesson 22: Plotting time series and generated data
- Lesson 23: Random number generation
- Lesson 24: Hacker stats I
- Lesson 25: Hacker stats II
- Lesson 26: Dashboards
- Lesson 27: JavaScript for stand-alone Bokeh apps
- Lesson 28: Survey of other packages and languages
- Lesson 29: Bootcamp recap
- Lesson 30: Control of external devices
- Lesson 31. Apps for controlling external devices
- Lesson 32: Control panels
- Lesson 33: More about the command line
- Lesson 34: Regular expressions
- Lesson 35: Introduction to scripting
- Lesson 36: Introduction to object-oriented programming
- Lesson 37: Algorithmic complexity
- Lesson 38: Testing and test-driven development
- Lesson 39: Examples of TDD
- Lesson 40: High level plotting with HoloViews
- Lesson 41: High level plotting with Vega-Altair
- Lesson 42: More plotting with Vega-Altair
- Lesson 43: Dealing with overplotting
- Lesson 44: Introduction to image processing with scikit-image
- Lesson 45: Basic image quantification
- Lesson 46: Plotting with Matplotlib and Seaborn