BMI-280/BMI-219 – Scientific Software Development

Spring Quarter – Mission Bay Campus – May 11-29, 2009 / 1-3pm / GH-S204

Course Description:

Many scientists and engineers spend much of their lives programming, but only a handful have ever been taught how to do this well. As a result, they spend their time wrestling with software instead of doing research, with little idea how reliable or efficient their programs really are. This course is an intensive introduction to basic software development practices for scientists and engineers. The goal is to provide scientists with the skills needed to create more reliable and maintainable programs while reducing the time spent on programming.

Course Objectives:

  • Create more reliable and maintainable computer programs
  • Demonstrate a reduction in the time spent on programming by 20-25%
  • Demonstrate proficiency in use of software development tools and methodolgy
  • Course Outline:

    Note: This course is configured as an intensive 3-week offering in Block 3 of the UCSF spring quarter "mini-course" curriculum. If you are taking other mini-courses spring quarter, then you sould register for the entire quarter of courses as "BMI-219." If you are only taking this course and no other mini-courses during the quarter, then register for this course as "BMI-280."

    Week 1:
    Mon – Lecture: Course introduction and data modeling
    Tue – Lecture+Lab: Shell basics and shell programming
    Wed – Lecture: Relational database technology
    Thu – Lab: Database programming and regular expressions
    Fri – Lecture: Web client data model (XML/XHTML/CSS/DOM)
    
    Week 2:
    Mon – Lecture: Web client programming (HTTP/Forms/JavaScript)
    Tue – Lab: Web client development
    Wed – Lecture: Web applications (CGI/JavaScript/AJAX)
    Thu – Lab: Web application development
    Fri – Lecture: Software development tools (version control, automated builds, defect tracking)
    
    Week 3:
    Mon – Memorial Day Holiday: no class today
    Tue – Lecture: Software development techniques (quality assurance, debugging, optimization)
    Wed – Lecture: Web security
    Thu – Lab: Team project development
    Fri – Lecture: Team project presentations*
    

    *This course is offered Pass/Fail only. Grades are based on team projects developed throughout the quarter.

    Other Important Details...

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

    Office hours by appointment.