BMI-219 – Scientific Software Development

Spring Quarter – Mission Bay Campus – April 1 - 19, 2013 / 2-4pm / Room GH-S271

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 methodology
  • Course Outline:

    Note: This course is configured as an intensive 3-week offering in Block 1 of the UCSF spring quarter "mini-course" curriculum. If you are taking other mini-courses spring quarter, then you should 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; software development tools (Shell basics, version control, defect tracking)
    Tue – Lecture + Lab: Shell programming; 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/AJAX)
    Fri – Lecture + Lab: Regular Expressions; Web application development
    
    Week 3:
    Mon – Lecture + Lab: Web security; Web application development
    Tue – Lecture: Software development techniques (quality assurance, debugging, optimization)
    Wed – Lab: Team project development
    Thu – Lab: Team project development
    Fri – Lecture: Team project presentations*
    

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

    Other Important Details...

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

    Office hours by appointment.