BMI-280 – Scientific Software Development

Spring Quarter – 1 Unit – Mission Bay Campus – Wednesday's / 3-4pm / GH-S271

NOTE: As part of UCSF graduate program curricula changes, beginning spring quarter 2009 this course will be offered as an intensive 3-week long "mini" course. Lab sessions with the instructors will also be scheduled. Course content will be the same as described below, but the schedule will be changed to fit the mini-course concept.

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:

    Week 1 – Introduction to UNIX, Shell basics, Shell programming (TEF)
    Week 2 – Version Control and Automated software builds (TEF)
    Week 3 – Development, Debugging and Optimization (CCH)
    Week 4 – Quality Assurance and Unit Testing (CCH)
    Week 5 – Regular Expressions (CCH)
    Week 6 – Relational Databases (JHM)
    Week 7 – Extensible Markup Language - XML (JHM)
    Week 8 – Web Programming - Part 1 (JHM)
    Week 9 – Web Programming - Part 2 (JHM)
    Week 10 – Security (TEF)
    Week 11 – Project presentations*

    *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.