410.712 - Advanced Practical Computer Concepts for Bioinformatics - Syllabus
Course description and objectives
From ISIS:
This intermediate to advanced-level course, intended as a follow-on to 410.634 Practical Computer Concepts for Bioinformatics (a prerequisite for this new class), will integrate and expand on the concepts from that introductory class to allow students to create working, Web-based bioinformatics applications in a project-based course format. After a review of the concepts covered in 410.634, students will learn how to create functional Web applications on a UNIX system, using Perl and CGI to create forms that can be acted upon, and using the Perl DBI module to interface with MySQL relational databases that they will create and populate to retrieve and present information. This will be demonstrated by building an in-class, instructor led project. More advanced SQL concepts and database modeling will also be covered, as well as a brief introductions to the PHP scripting language. Class time in the latter weeks of the class will be devoted to individual assistance on student projects as well as to short lectures on advanced Perl topics, object-oriented Perl, and installing Perl modules. The last two weeks will be devoted to student presentations and a peer critique of their project. Once again, whenever possible, this course will emphasize relevance to solving problems in molecular biology and bioinformatics.
A few elements of this aren't accurate for this semester's course, mostly because I recently inherited this course and have rewritten all of the lectures and course content. For example, the short lesson on PHP is being replaced by more extensive treatment of JavaScript with a focus on creating interactive interfaces for data display. See the schedule below for more information.
Required texts
I have tried to keep the required texts minimal, instead relying on web resources and my own writing to provide the coverage necessary for this course. See the optional texts for resources in those topics you wish to explore more fully.
The links to each book go to the publisher's website directly, but be sure to check the university bookstore and online bookstores for better prices.
- Learning MySQL (Tahaghoghi, S., et al.)
- Most bioinformatics projects require data storage of some sort in a relational database, and MySQL is a free, open-source database available on most platforms. We'll use it in this class and learn how to make code connect to it for both scripting use and to drive web interfaces.
- Beginning Perl Workshop for Bioinformatics (FREE) (Orvis J.)
- A free online resource with downloadable PDF text. Intended for complete beginners to programming but covering topics through advanced perl data structures. Much of this should be review, so use this as a refresher if needed.
- Beginning Perl (FREE) (Cozens, S., et al.)
- Another Perl reference from which we'll use material. This is more thorough than the book above but not presented from a bioinformatics point of view.
- HTML5 and CSS3 (Hogan, B.)
- We'll be creating interfaces in this class for data presentation, and this book outlines the most modern mechanisms for doing so.
Optional texts
- Programming the Perl DBI (Bunce T., et al.)
- A pretty old title, but still the authoritative text on using Perl to connect to databases.
- Mastering Perl for Bioinformatics (Tisdall, J.)
- A great text covering some of the more advanced perl topics, including object oriented programming, all using bioinformatics examples.
- Perl Best Practices (Conway, D.)
- This book is for those who already know Perl but want to learn how to program better. Conway is one of the maintainers of the Perl language, and uses an engaging writing style to describe the best practices for writing elegant, maintainable code.
Schedule
This is an online course, so there is no official class meeting each week. Instead, I'll post the lectures and assignments online on Wednesday of each week and all assignments will be due on Tuesday by midnight before the next class (unless otherwise indicated in the assignment text.)
The schedule of topics and assignments is listed below, but you'll need to log in to Blackboard to download them.
IMPORTANT: Please be sure to check these reading assignments and download the materials each Wednesday and not earlier than that. Because I recently inherited this class, I will be updating the materials possibly up until each lecture, so grabbing them early may give you a stale view of each topic.
| Unit | Date (week of) | Topic | Reading Assignments |
| 1 | September 7, 2011 | Introduction and Unix review | Ubuntu install guide, Introduction and lecture in Blackboard |
| 2 | September 14, 2011 | Database and SQL review | Lecture in Blackboard, "Learning MySQL", Ch. 4-5 to p173 |
| 3 | September 21, 2011 | Perl review I | Lecture notes in Blackboard, Perl Guidebook in Blackboard (to pg 59) |
| 4 | September 28, 2011 | Perl review II and HTML review | Blackboard: Perl lecture II, HTML5 Introduction, Perl guide (pg 60+), HTML5/CSS3 textbook (pages 1-28) |
| 5 | October 5, 2011 | CGI and HTML templates | Blackboard: Perl objects lecture. CGI and HTML templates lecture |
| 6 | October 12, 2011 | CGI and HTML forms | Blackboard: CGI and HTML forms lecture. HTML5/CSS3 book from pages 35-61. |
| 7 | October 19, 2011 | Mid-term project | None |
| 8 | October 26, 2011 | MySQL and Chado | Blackboard: MySQL and Chado lectures, chado video presentation. Supplemental readings in lecture notes. |
| 9 | November 2, 2011 | Perl's DBI module | Blackboard: Perl DBI lecture, DBI and DBD::mysql perldoc |
| 10 | November 9, 2011 | Additional Perl/database topics and introduction to JavaScript | Not yet posted |
| 11 | November 16, 2011 | JavaScript and JQuery | Not yet posted |
| November 23, 2011 | Thanksgiving holiday | ||
| 12 | November 30, 2011 | Security issues | Not yet posted |
| 13-14 | December 7, 2011 | Individual Final projects | None |
Grading
This is a programming course, and it is recognized that there is more than one way to solve a problem. I will certainly not take off points for approaches different from the 'official solution', but may deduct points for obfuscated or extraordinarily inefficient code and methods. You will be deducted 15% per day for any homework sets turned in late. Projects cannot be turned in late without first gaining permission from the instructor.
- 15% - Quizzes
- 15% - Mid-term project
- 40% - Graded homework problem sets
- 30% - Final project
JHU Ethics Statement
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.
In addition, specific ethics guidelines for this course are:
- Copying of others' code on the problems sets or quiz, including code taken verbatim from other books or web sites, will lead to total loss of credit for those problems. You may work together to a limited degree on concepts; but you must turn in your own work and source code.
- It is not advisable to miss more than two classes; if you have extensive travel planned without online access, it may be better to take the class another term. In any case, each student is responsible for all material covered in this syllabus, regardless of class attendance.
- Failure to turn in the final project on time, without prior approval, will result in a grade of zero on the final project and likely a grade of F for the course. Approval will only be granted for extreme circumstances - such as serious illness or a death in the family. Work constraints are hereby specifically excluded.
This syllabus also hereby incorporates all provisions and regulations of the University Policy Statements (scroll down to bottom of page) and especially the latest revision (currently June 2007) of the Student Code of Responsibility by reference.