Computer Programming for EEB

Syllabus for BIOL 701: Topics in Programming for EEB

Mark Holder. Spring 2010

Time and Location

Time: Fridays at 11:00-noon
New Location: 3012 Haworth

Office hours: Monday 11:00-noon in 6031 (or by appt).

Course Goals

The goals of this seminar are to improve your programming skills. Because several students have not programmed before, the initial lectures will cover the basics.

Later in the course we'll cover some libraries, algorithms, and data structures used in phylogenetics and population genetics.

We could easily fill several semesters with programming lectures, but I want this to be relevant to the students. To that end, I am counting on the course projects to be a substantive part of the course, so I hope that you will each choose a project that is

  • Relevant to your work,
  • Challenging enough to be worthy of a semester-long project (it could be a multipart project if you have several small ideas).

As the semester progresses we will discuss problems that you are each facing, and use lecture time to address them.

Checkout the course git repo (lecture notes and inclass examples at)
 git clone git://
You can look at these notes on git to master the basics.

Or, you can browse the repo at

Programming tools

Find a good text editor (TextWrangler on Mac jEdit anywhere).
You may want to use Komodo Edit (or Komodo IDE which is not free).
Wikipedia lists a lot of other python integrated development environments here. Some people prefer working in such an environment to using a text editor and shell.

Date Topics Homework Reading/References
22 Jan Intro to Computer Architecture

Formulate project idea.
Install git.
Install ssh (It should already be on non-Windows Systems)
Create account on GitHub.
Generate SSH public key; you'll need this to commit changes to GitHub.

Here is the practice assignment to test basic UNIX skills.

Read the summary of common UNIX commands.
Check out the Python tutorial and Dive into Python.
Slides from the first OS/Bash lecture are here

Here is (though it will download is so you may want to rename it).

29 Jan Python Intro: primitives
flow control

Checkout the course git repo (see above)

05 Feb. Dicts and Lists first real assignment Notes and examples here (lec2pythonbasics)
12 Feb. Pseudocode
importing other packages
Regular Expressions
assignment 2 Notes and examples here (lec3packages)
19 Feb. Classes and OOP
Exceptions and Robustness
No assignment Notes and examples here (lect4classes)
26 Feb. More on classes  
05 Mar. Usefule Python libraries

Pop. gen simulation and Controlling other processes
Project RoadMap
Pseudocode project idea
Notes and examples here (lect4random)
12 Mar. Recursion
SQLAlchemy for DB interacations
Some GUI stuff

Notes and examples here (lect6extras)
19 Mar. Spring Break    
26 Mar. Review and testing  begin coding on projects  
02 Apr.  Phylogenetic tree structures
Tree traversals
 code reviews  
09 Apr.  Manipulating character data
Biopython and Dendropy libraries
16 Apr.  Calculating likelihoods of trees (cPhyProb) library    
23 Apr.  Simulations of population processes    
30 Apr. Topics from projects and code reviews     
07 May.  Topics from projects and code reviews