Assignment A0. Assert statement

After you get Eclipse working and you have been to recitation 01, you can do this assignment.

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 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 just retired as 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 (pdf)    Assert early and assert often (ppt)

Assignment HW1. Presenting algorithms in English, including the assignment

We ask you to study the webpage Presenting algorithms in English, watching the two 2.5-minute videos. Then do the short assignment that appears at the bottom of that webpage and submit it on the CMS. The due date is on the CMS.

The webpage can be reached from the course webpage using the tutorials link -> 3-minute drills.

Assignment A1. Classes

The purpose of A1 is to give you practice with developing a class --in this case, one that maintains information about the PhD advisors of a person with a PhD. 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.

Get the handout and release code from pinned Piazza A1 FAQs note @6. It will be available the morning of 2 Feb.

Assignment A2. Functions

The purpose of A2 is to give you practice writing java functions, mainly dealing with Strings. We found out in earlier semesters of this course that many students did not practice unless forced to, so we have to give this assignment. File A2.java contains lots of instructions as well as the specifications and stubs for the functions you have to write. We give you a JUnit testing class; pass all the tests in it and you should get 100/100, unless something is disasterously wrong; we can't think of anything like that at the moment.

Get the handout and release code from pinned Piazza A2 FAQs note @14. Here's the webpage: piazza.com/cornell/spring2017/cs2110/home.

Assignment A3. Linked lists

Assignment A3 introduces you to "linked list", a data structure that allows a list to grow to any size and in which operations like insertion and removal of a value can take place in constant time. You will implement a doubly linked list. Handout and release code available on the course Piazza, pinned note A3 FAQs.

Assignment A4. Bug propagation

Assignment A4 requires you to write several methods to process trees in an interesting application. This will be available on the course Piazza, pinned note A4 FAQs, on Thursday, 9 March.

Assignment A5.

An interesting application: completeing a paint program in a GUI. See the pinned Piazza A5 FQs note for the handout and release code. See the CMS for the due date.

Assignment A6. Heaps

Assignment requires you to implement a min-heap. in which duplicate values are not allowed and the the priority of an existing value may be changed. See the pinned Piazza A6 FAQs note the handout and release code. See the CMS for the due date.

Assignment A7. Shortest Paths

Implement Dijkstra's shortest path algorithm.
See the pinned Piazza A7 FAQs note for the handout and release code.
See the CMS for the due date.

Assignment A8.

Automated Cheating Detection

We use an automated system that uses sophisticated artificial intelligence techniques combined with program analysis tools to notice unusual similarities between programs turned in by different people. These tools really work and 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, the tools would be very likely to figure out what you did.

The tool we use, called Moss, was developed by a Cornell PhD, now a professor at Stanford, over 10 years ago.

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 difficult to get away with cheating in CS2110. Please do your own work, and talk to an instructor, a TA, or a consultant, as often as needed if you get stuck and need help. We’ll get you back on track.