PC204 Lecture 10

Tom and Conrad

Homework from Last Week

Course Wrap-up

  • What we've covered in this ten-week course:
    • Nearly all aspects of the Python programming language, including variables, expressions, operators, statements, conditionals, functions, exceptions, iteration, recursion, strings, lists, dictionaries, tuples, and file I/O.
    • Fundamentals of object oriented programming, include classes, methods and inhertance.
    • Fundamentals of programming style, including problem decomposition, modular design, optimization, and debugging techniques.
    • The basics of Graphical User Interface programming.
  • Where do you go from here?

Remember this diagram from Week 1?

[How To Write Good Code]

Available Python Packages

  • The pypi.python.org/pypi web page provides tens of thousands of freely available Python Packages!
  • These packages may be installed using the pip or python3 -m pip command for recent versions of Python.
  • A few of the more useful ones are:
    • xlrd - Library to extract data from Microsoft Excel spreadsheet files
    • matplotlib - A comprehensive Python plotting library
    • pandas - A data manipulation and analysis library
    • numpy - A package for doing scientific computing with Python
    • biopython - Freely available tools for biological computation

More Coding Examples

Final Words on your Final Project

  • When you turn in your final project, you need to include everything necessary for Tom and Conrad (pc204@cgl.ucsf.edu) to run your program. This includes:
    • Instructions for running your program.
    • Any input data files required, e.g., any database you may have created.
    • If your program requires us to download a public database, provide instructions on where to get it.
    • If you installed any Python packages, tell us what they are and where to get them.
    • If your program takes a long time to execute, provide a rough estimate of how much time is required so we don't sit and wait longer than needed if something isn't working right.
    • If the output produced by your program isn't something obvious, tell us how to differentiate good output from bad.

What We Are Looking For

  • Design
    • Multiple modules and classes that partition the problem into manageable segments
    • Well-defined application programming interfaces (APIs) for modules and classes
  • Implementation:
    • Choice of algorithms and data structures
    • Documentation strings for modules and functions that describe their purposes
    • Comments explaining what sections of code are intended to do (and perhaps how things will be done)
    • Do not put one comment per line such as "increment counter"

Sample Projects

  • Calculate safe dosage levels for potentially toxic drugs (click here)
  • Lab animal colony database management system (click here)
  • Search for plasmids and primers used in the lab. (click here)

Teaching Evaluations

  • We strive to improve this course every year. This year we made several changes and we already have more planned for next year. These are often due to feedback we receive from students. For example, we've been asked to make the course more interactive using a 'flipped classroom' approach. So instead of just showing you code, we'd ask all of you to work on solving a problem in small teams. Then, after 10 minutes or so, we'd pick a team at random and have them describe the approach they used. Only afterwards would we look at the instructor's solution.
  • As part of this effort, we've asked our school's administration to send you all a link to an on-line course evaluation form where you'll have an opportunity to provide anonymous feedback and make suggestions. Please take a few mintues to respond.
     
    Thanks!
That's All Folks