Assignment A0.

A0 is not to be handed in and graded. It is for you to do as soon as you get Eclipse working and you have been to recitation 01. Purpose of A0: Get you to use Eclipse and learn about the Java assert statement.

For those of you who are interested, we also have ppt slides with notes (as a pdf) written by Sir Tony Hoare on using assert statements --in many programming languages. Tony is one of the really significant people in CS, and if you continue with CS courses, you wiill see his name often and read some of his papers dealing with languages, concurrency, and programming. He is Professor Emeritus at Oxford and a Principal Researcher for Microsoft. He is the author of Quicksort (which you will see later in 2110) and the creator of Hoare Logic for verifying program correctness.

Here, he gives practical hints on using assert statements. Read especially the notes on pages 14-15 about preconditions and postconditions.

A0 handout    Assert early and assert often (pdf)

Assignment A1.

The purpose of A1 is to give you practice with developing a class --in this case, one that maintains information about bees. Along the way, you will practice (1) writing a JUnit testing class, (2) writing assertions for preconditions, (3) writing good method specifications and class invariants and using good conventions in presenting programs, and (4) writing and checking javadoc specifications.

The handout for the assignment, in the following pdf file, tells you when the assignment is due. Get started early. a1.pdf

Assignment A2.

Assignment A2 introduces you to "linked lists", a data structure that allows lists to grow to any size and in which operations like insertion and removal of a value can take place in constant time.

Here is the handout for it A2.pdf. And here is a class to download and use; you must complete 7 methods in it. CircularLinkedList.java These files are also available on the CMS for the course.

Assignment a3.

Get Started: Danaus Manual, Assignment A3, Java files

Assignment A4.

Connect 4. Handout.pdf    Java files

Assignment A5.

Practice on writing methods, recursion, asymptotic complexity, and induction.   a5.pdf   some answers.pdf

Assignment A6.

Danaus: Buterlfy methods learn() and run(). a6.pdf     manual.pdf    a6.jar

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.