AN
INVITATION TO THE COURSE
How does a biologist or
chemist learn what he needs to implement an effective computational
procedure?
How does a computer scientist discover the important
biological and chemical questions that she might help answer with
effective computational procedures?
This seminar/working lab tries
to bring students together to learn from each other, with a little
guidance from the instructor.
As a computer scientist, I
have found that I gain a deeper understanding of a problem in an
application area when I look at the procedures that people try to use to
solve them.
I have also found that when I do so, I can sometimes
apply computer science tricks (table lookup, preallocation of memory) and
concepts (dynamic programming, hierarchy, abstraction) to improve the
procedures. Sometimes these things make the difference between an
impossible task and a practical, effective implementation. (In a recent
example, two students of mine sped up a search for hydrogen placements in
a PDB file from six years to two minutes.)
And sometimes this
becomes the basis for further interdisciplinary collaboration, which can
be the most exciting, as all involved share in learning and contributing.
It is my hope that the
biology and chemistry students will come with their problems, tools, and
codes, and that the computer science students will find puzzles that they
can help solve. In the process, all of the students will gain a better
understanding of each others capabilities and undertakings, and there will
be more opportunity for collaboration.
STRATEGIES FOR TEACHING & LEARNING
This seminar uses case
studies in specific biological problems of interest to the class members
to motivate algorithmic methods (e.g. dynamic programming), software
engineering (e.g., code factoring and tuning), and languages and tools
(e.g., Perl, MATLAB, debuggers, profilers).
I hope that students will be
able to bring laptops so that there can be time for peer-to-peer
discussion and one-on-one assistance, making this a working lab, and not
just a presentation of case studies. If necessary, we will meet in a
computer lab.
COURSE REQUIREMENTS
Participation is the primary
requirement for this to be an effective seminar/working lab.
This
is not a replacement for introductory courses in computer science. We
assume that each student can write some sort of program, and that some
students will want to learn more sophisticated techniques that apply to
their particular problems, while other students will want to learn
sophisticated problems that might be amenable to their particular
techniques.
COURSE
DETAILS
Course Information
COMP 290 - 079, Applied
Optimization in Computational Biology, is a one credit seminar/working
lab. Auditors and drop-ins welcome, but regular participation will be
best.
Class Meeting Location and Times(s)
Thursdays, 4-5, in Beard Hall
116.
Complimentary Course Activities and/or Sub-groups
The blackboard courseinfo
website will contain the up-to-date schedule. (blackboard.unc.edu, click
on Course tab, search for course COMP290.079)
Course Materials
There is no required text,
but several books have been placed on reserve in Brauer Math/Physics
Library, including
Bentley: Programming Pearls. Wisdom from a
master code tuner.
Fowler et al. Refactoring: Improving the Design
of Existing Code.
Hunt, Thomas, Cunningham: The Pragmatic
Programmer.
Scott Meyers: Effective C++, More Effective C++. A
must for C++ programmers.
Harel: Algorithmics, the Sprit of
Computing. An overview of algorithms from a series of radio lectures,
believe it or not.
|