BIOS 646 Programming for Bioinformatics

Fall 2009

 

Class meets:         MO109 MW 3:00-4:30. We will also be doing various lab sessions in MO444.

Instructor:            Dr. Rick Johns, MO 409

Office hours:       MWF 9-11. But, feel free to come by or e-mail any time.

Phone:                   753-7836

E-mail:                  rjohns@niu.edu

Books:                   Learning Perl, Randall Schwartz, Tom Phoenix , and Brian Foy

What the class is about:    This class concentrates on practical programming skills you will need to work in bioinformatics. The single most important element of this is the Perl computer language. Perl is a higher-level, more abstract language than C. Perl has several features that make it attractive as a language for bioinformatics, including sophisticated ways of processing strings of characters and recognizing patterns in those strings. Because Perl is interpreted without a separate compilation phase, writing and modifying programs is quick and easy, leading to the development of small, one-of-a-kind programs that fit the needs of the moment. This also leads to the use of Perl as a "glue" language, tying together applications written in different languages or located at different web sites.

This class will also familiarize you with the Unix operating system, which is based on command-line interactions rather than a graphical user interface. Unix and its offshoot varieties (like Linux) is the standard operating system used by computer professionals.

Much of bioinformatics occurs over the Internet, it is essential to learn the basics of HTML, the markup language used by World Wide Web browsers. We will also cover the creation of interactive HTML forms, using Perl-based CGI programs, and the creation of simple graphics images for the display of data.

Most bioinformatics information is stored in databases. We will cover the creation and use of databases using MySQL, a powerful Open Source database system.

We will also spend some time learning to use and automate software written by others.

 

Grading: Grades will be based on four items, each weighted 25% of the total grade.

  1. In class programming exercises. These will be short exercises that you will start in class, but may need to complete outside of class.
  2. Homework assignments. There will be approximately 5 homework assignments given. These will consist of a program, which will need to be functioning on the computer and also handed in on paper. Good documentation is essential!
  3. Written midterm. A standard written test covering the basics of Perl, HTML, Unix, etc. The date will be announced, but it will be sometime in March.
  4. Practical Final exam. You will have 2 hours to complete a set of programming problems, very similar to the in class exercises. You are allowed to use any books, notes or web sites you like. You are NOT allowed to consult with each other or anyone else. Scheduled for Wednesday December 9 at 12 noon.

 

Topics to be covered

We will cover these topics, in approximately this order

  1. Perl, Unix/Linux
  2. Scalar data
  3. Basic I/O
  4. Control structures
  5. Arrays
  6. Hashes
  7. Functions
  8. Regular expressions
  9. Formatting and other things we missed
  10. HTML and CGI
  11. Graphics
  12. Database interactions
  13. Complex data structures and sorting
  14. Interaction with other Unix programs