David Coppit, PhD
Assistant Professor of Computer Science
The College of William and Mary
This is my resume. I also have a more detailed
curriculum vitae that includes links to papers and
software.
For a more detailed CV that includes links to
papers and software visit http://www.cs.wm.edu/~coppit/cv.php online.
Research Scientist, The Institute for Computational Genomics (Incogen),
November 2007 to present. (Part-time contract.)
- Performance optimization: Optimized memory, execution time, and disk
usage for the VIBE bioinformatics analysis tool. I reduced peak memory usage
by a factor of 2, execution time by a factor of 12, and disk usage by a factor
of 4. I also improved the scalability of the tool with respect to large data
sets hundreds of megabytes in size.
- Maintenance and development: Responsible for maintenance and development
of the mass spectrometry module.
Assistant Professor of Computer Science, The College of William and
Mary, Winter 2003 to present.
- Software plans: Invented a new approach for separating concerns in code
that is inspired by architectural plans. Designed and implemented the
Spotlight IDE as an experimental testbed for software plans.
- Managed a research program: Managed a $327K grant from the US Air Force
in support of software plans. Directed 8 students working in my research
group.
- Implicit subdomain testing: With a student invented a new algorithm
for testing a relevant but implicitly defined subdomain of a program. Applied
the algorithm for the testing of the KB3D aircraft collision avoidance
algorithm.
- Automated testing: Developed yagg tool for automated generation
of test inputs having complex structure. Used it as part of a bounded
exhaustive testing strategy for the verification of the Galileo solver.
- Reliability modeling languages: Invented the failure automaton,
an intermediate representation for reliability languages.
- Software engineering education: Invented an large agile teams
approach for teaching undergraduate software engineering. Invented a
software-based, automated technique for evaluating the members working in a
team.
- Algorithm design and implementation: Developed an algorithm for formal
concept analysis. Developed an algorithm for automatically merging separately
implemented software plans.
- Project management: As part of my software engineering course, I managed
teams of 10 to 32 people to develop software such as a traffic simulator, a
billiards simulator/game, and a turn-based strategy game.
- Student supervision: Advised 2 PhD students to candidacy, 7 Masters
students to graduation, and 8 undergraduates.
- Education: Developed and taught courses in undergraduate and graduate
software engineering.
Intern, Hewlett-Packard Research Laboratories, Summer 1998.
- Workflow software: Developed a prototype that demonstrated the
feasibility of automating workflow tasks that involve COM-enabled tools such
as Microsoft Word and Excel.
Founder and President. Spinnaker Software Incorporated, Spring 1999 to
Fall 2000.
- News Clipper: Designed and implemented a tool for fetching any
content from the Internet and incorporating it into a webpage. Designed and
implemented a system for collecting and distributing user-created plugins.
- Consulting: Worked with clients such as football.com and basketball.com
to use News Clipper to integrate content from syndicated news feeds into the
websites.
- Sales: Worked with Binary Research International to sell the software to
corporations.
Graduate Researcher. Department of Computer Science, The University of
Virginia, Fall 1996 to Spring 2002.
- Formal specification: Developed the first sufficiently complete,
mathematically rigorous specification of reliability models called dynamic
fault trees (DFTs), discovering serious errors and design flaws.
- Galileo: Was a primary developer of the Galileo tool for reliability
modeling and analysis. Galileo has been used by NASA, and is now being sold
by Exelix.
- Software engineering methods: Invented an approach for building more
trustworthy engineering tools at less cost.
- Formally-based engineering tools: Created Nova,
the first formally-based reliability modeling and analysis tool for DFTs.
- Distributed algorithms: Helped to implement a distributed computer player
for the game of othello.
Open-Source Developer, Fall 1998 to the present.
- Authored useful WordPress plugins: Category Access allows
categories of posts to be protected from unauthorized access. Category
Order allows the blog maintainer to customize the order and indentation
of the category list.
- Authored useful Perl modules: FileHandle::Unget allows arbitrary
amounts of data to be "put back" on a filehandle.
Mail::Mbox::MessageParser is a fast pure Perl parser for Berkeley
mailboxes. grepmail is a mailbox search tool.
- Enhanced useful Perl modules such as Benchmark::Timer,
CGI::Cache, and File::Cache.
- Made LaTeX much easier to use: Created a makefile and set of templates
for papers, dissertations, etc. This package is still used by graduate
students at the University of Virginia and elsewhere to produce their
dissertations.
I have published 23 papers at venues such as ICSE, ASE, and TSE. My CV
has citations and links to papers.
- Software plans: 4 papers (1 conference, 3 workshop). $328,784 3-year
grant from USAF OSR.
- Testing: 4 papers (1 journal, 2 conference, 1 workshop).
- Software Engineering Education: 2 papers (1 journal, 1 conference).
- Software development methods: 7 papers (1 journal, 6 conference).
- Applied formal methods: 4 papers (conference). $55,666 subcontract with
UVa.
- Reliability engineering: 2 papers (conference).