BMI-219 – Scientific Software Development

Spring Quarter – Mission Bay Campus April 3 - April 21, 2017 / 2-4pm / Room MH-2109 except in MH-1406 on 4/4 & 4/18

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.

Course Prerequisite:

Previous experience programming in Python.

Course Outline:

Note: This course is configured as an intensive 3-week offering in Block 1 of the UCSF spring quarter "mini-course" curriculum.

Week 1:
Mon – Lecture: Course introduction; software development tools (development process, version control, defect tracking)
Tue – Lecture + Lab: Linux and the Linux Shell; 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 + Lecture: AJAX lab, Regular Expressions

Week 3:
Mon – Lecture: Software development techniques (testing, debugging, and optimization)
Tue – Lecture + Lab: Web security, 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...

Tom Ferrin (TEF - faculty coordinator)
Scooter Morris, Ph.D. (JHM)
Conrad Huang, Ph.D. (CCH)

Office hours by appointment.