Project Information: Fall 2010

A few of the 40 animals in the CS 2110 bestiary. Credit for the pictures goes to our talented artistic consultant Ursula Hilsdorf.
Swamp Slime Shy Frecklepuss Fuzzy Trible Gray Floop Ballard's Protoduck
Swamp Slime Shy Frecklepuss Fuzzy Trible Gray Floop  Ballard's Protoduck 

This page gives an overview of the entire 5-part assignment for the semester. Below, you'll find links that will take you to the detailed versions of each of the five assignments. You'll use CMS to hand in your solutions.

For section mini-assignments, see CMS.

  1. Assignment one: Due Sept. 9 at 11:59pm
  2. Assignment two: Due Sept. 23 at 11:59pm
  3. Assignment three: Due Oct. 7 at 11:59pm
  4. Assignment four: Due Nov. 4 at 11:59pm
  5. Assignment five Due Nov. 30 at 11:59pm

Deciphering an Evolutionary Tree...

During fall of 2010, CS2110 students will be working on a semester-long project that has a series of intermediate deliverables. Even before explaining what this project is about we want to reiterate that for assignment 1, each student is expected to work on his or her own, and for other assignments you can work in teams of 2, but no more, and teams can't collaborate with other teams! You are welcome to have non-specific dialogue about the project with friends or a study group, but every line of code you type needs to be written by you personally, or by you and your teammate on A2-A5, and you can't show other people your solutions before the deadline for handing them in. (Suggestion: read the section on "automated cheating detection".)

One small comment: The assignments are designed to be solvable by a person working by him or herself. We allow teams on A2-A5 but aren't really encouraging or assuming that you'll work in teams. In fact it is better for you to work on your own, just as a running who trains by jumping in the team car for half of each workout probably won't end up being as strong as a runner who runs the full distance on her own!

What You'll Do

The goal of the project is to use genome data to figure out the relationship between a set of animals. We'll provide you with biological data files, and as part of that data we'll give you the animal's DNA. Using code we develop during the semester, we'll tackle problems such as extracting genes from the DNA, comparing to see how similar two genes are, and finally building a graph (a tree) representing the evolutionary history of the creatures and displaying the data in web pages. The problem is a simplification of one of the most important problems seen in modern biology.

Genomic computations in "reality" can be fairly messy, so for CS2110 we'll be using a somewhat simplified genetic model. The simpler version isn't completely realistic, but it does parallel the actual computational biology problem, while limiting itself to technical ideas that are at the right level for students taking a second semester Java course. We're hoping that you'll discover that without learning a huge amount of computer science, you can already do some really amazing things. We also want to see you get experience writing high-quality code – this is a skill you can only learn by doing.

Our semester-long project will be broken into five separate sub-projects, each linked to material we'll be learning in lecture. Each subproject will involve implementing some set of Java classes that supports a specific interface that we'll define carefully.

After each subproject is handed in, we'll release Professor Birman's solution for that same problem. This way, you can tackle the next subproject even if yours had serious bugs. Just the same, we really would encourage you to work with your own code.

To get full credit for each subproject, your assignment must not only work, but should adhere to our CS2110 code style guidelines.

Automated Cheating Detection

We've noticed that some Cornell classes do a so-so job of enforcing the academic integrity policy. In CS2110, we have a solution: we're using an automated system that uses sophisticated artificial intelligence techniques combined with some pretty fancy program analysis tools to notice unusual similarities between programs turned in by different people. It is important to realize that these tools really work and that they are quite hard to fool. So while it might seem tempting to borrow a solution from a buddy, change the variable names and comments, or reorder the statements, our tools would be very likely to figure out what you did. We take cheating seriously, and cheating with an attempt to cover it up is grounds for failing the course outright. Realistically, it is much easier to just do the assigned problems than to get away with handing in code someone else wrote, because short of rewriting that code completely from scratch, we’ll catch it.

So you’ve been warned: It is just not possible to get away with cheating in CS2110. Please do your own work, and come talk to Professor Birman, or the TAs, as often as needed if you get stuck and need help. We’ll get you back on track. In contrast, borrowing a solution from a pal will just get both of you into very serious trouble.