BMI-219 – Scientific Software Development | |
Spring Quarter –
Mission Bay Campus –
|
Course Description:
Modern science is frequently performed as a collaborative activity and development of scientific software is no exception. And while most of us use relational databases and the World Wide Web daily (think Google and Amazon), constructing a good – or even merely usable – web site for accessing scientific data is not a common skill. However, using a web application for managing scientific information stored in a database is particularly advantageous, since it provides timely access to new data (e.g., experimental measurements) and results (e.g., analyzed data and computational predictions), and a familiar interface for users. This course is focused on learning how to create just such an environment through use of relational databases, web technology, and basic programming tools such as Python, SQL, HTML and Javascript.Course Objectives:
BMI-219 is a hands-on tutorial in team-based construction of an application for scientific information management and dissemination using web browsers as user interfaces and web servers backed by databases as data management engines. Upon completion, students will be able to:For the course final project students will work in small teams to develop a highly interactive web application for accessing and updating logically organized scientific data.
- Demonstrate sound programming methodology for team-based development of scientific software
- Design and implement SQL databases
- Write web applications using HTML and Javascript
- Write Python web server scripts for connecting a web application to a relational database
Course Prerequisite:
Previous experience programming in Python.Course Outline:
Note: This course is configured as an intensive 3-week offering in Block 2 of the UCSF spring quarter "mini-course" curriculum.
Week 1: Mon – Lecture: Course introduction, software development tools, the development process Tue – Lecture: Linux and the Linux Shell; Lab: software development tools Wed – Lecture: Data modeling Thu – Lecture: Relational database technology Fri – Lab: Database programming Week 2: Mon – Lecture: Web client data model (XML/XHTML/CSS/DOM) Tue – Lecture: Web client programming (HTTP/Forms/JavaScript) Wed – Lab: Web client software development Thu – Lecture: Web applications (CGI/JavaScript/Intro to AJAX) Fri – Lab: AJAX; Lecture: Regular Expressions Week 3: Mon – Lecture: Testing, debugging, and optimization Tue – Lecture: Web security; Lab: Web application development Wed – Lab: Team project development Thu – Lab: Team project development Fri – Team project presentations**This course is offered Pass/Fail only. Grades are based on team projects developed during the course.
Other Important Details...
Some Frequently Asked Questions During Development
Instructors:
Tom Ferrin (TEF - faculty coordinator)
Scooter Morris, Ph.D. (JHM)
Conrad Huang, Ph.D. (CCH)Office hours by appointment.