Computer Sciences 307
Assignments Page
CS 307 · The University of Texas at Austin · Fall 2008

 

Assignment
Number
Placed Online Due Date Topic
1 Monday, August 25 Thursday, September 11 Introduction to Java, Review of CS 1 topics. (Individual Assignment)
2 Wednesday, September 3 Thursday, September 18 Array and 2D array problems. (Individual Assignment)
3 Wednesday, September 17 Thursday, September 25 Creating a stand alone class - Mathematical Matrices (Individual Assignment)
4 Wednesday, September 24 Monday, October 6 Creating a program with multiple classes. (Pair Assignment)
5 Monday, October 6 Thursday, October 16 Algorithm Analysis (Pair Assignment)
6 Wednesday, October 15 Thursday, October 23 Recursion - (Pair Assignment)
7 Wednesday, October 22 Thursday, October 30 Using lists - The Name Surfer (Individual Assignment)
8 Wednesday, October 29 Friday, November 14 Using lists, creating data structures - implementing various set classes (Pair Assignment)
9 Wednesday, November 5 Thursday, November 20 Linked lists (Individual Assignment)
10 Wednesday, November 19 Tuesday, December 2 Using stacks and queues - word ladders. (Pair Assignment)
11 Monday, November 24 Friday, December 5
No Slip days may be used on assignment 11.
Binary search trees - (Individual Assignment)
No Slip days may be used on assignment 11.

General assignment requirements.

Programming Assignments Individual assignments are to be completed by you alone. You may not share code with other students or other programmers. Review the class policy on improper collaboration from the class syllabus and how this applies to individual assignments.

About half the assignments may be done in pairs using a technique called pair programming (Read the paper on pair programming to understand how the technique works.). One solution will be turned in for the pair. Once you start working with one partner on an assignment you may not switch partners. If you do not wish to work with a partner after starting on an assignment you must both complete it individually. You must inform your TA(s) via email if you start working on an assignment with another person and decide to finish as individuals. You may not re-pair after starting the assignment with someone else. When working on pair programming assignments you are expected to spend 80% of your time on the assignment working with your partner, together at one computer, taking terms typing, and navigating.

Programs will be written in Java, using the Java 2 Platform Standard Edition 6.0. See the software page for information on downloading and installing Java at home.

There will be 11 programming assignments.

Assignments are due by 11  pm on the due date.

You will have 6 free late (slip) days in 1 day units (1 minute to 24 hours = 1 day) for the semester.

  • You may divide your slip days across the assignments in any way you wish to extend deadlines for the assignments except you may not use more than 4 slip days on a given assignment and no slip days may be used on the last assignment.
  • On pair programming assignments (See above for more information), both members of a pair use their own slip days, and both must have the requested number of slip days.
  • You may not use slip days to turn an assignment back in for a re-grade.
  • Weekends and vacation days do not stop the slip day clock. For example if an assignment is due on Thursday and you turn it in on Monday you have used 4 slip days (Friday, Saturday, Sunday, and Monday.)
  • To help the TA track your slip-day status you will complete the slip day portion of the appropriate comment in your source code file you turn in.

Unless prohibited, you may use any component of the language or standard library (The Java API).

Assignments must compile and run with Eclipse in the Painter Microlab.

Assignments will either be submitted as a single Java file or  in the form of a single JAR (Java Archive) file. Each assignment will specify exactly what to turn in. Assignments that are not in the correct format or not named correctly will receive no credit.

Assignments must be turned in via the Microlab turnin program. If you are registered for more than one computer science class you must ensure that your turn your assignment in to the correct, CS307 directory. Failure to do so before the will result in a penalty of two slip days if the teaching staff must coordinate the transfer of the file to the correct directory.

An assignment that does not compile, does not run, or suffers a runtime error, loses all correctness points.

Assignments are worth 20 points. In general this is broken down into the following areas: 8 points for correctness, 4 points for testing, 4 points for documentation, and 4 points for design / efficiency. See the general grading guidelines for more details on the criteria for grading assignments.

Each assignment will specify whether it must be done individually or as a pair.

Assignments will be checked for plagiarism and copying using Moss. You may discuss high level design issues with your fellow students, but sharing algorithms or code or obtaining solutions from another source constitutes academic dishonesty and will result in an F for the course.

The teaching staff will grade, comment, return, and post the grade for an assignment within 5 days.  A grade can only be disputed within the following one week.

All grade disputes must be made in writing by email to the TA with supporting evidence or arguments, and will result in the entire assignment being re-graded. Remember, no whining.

Testing
  • Testing your solutions is an important part of programming.
  • I will provide some tests with each assignment, some of which may be in error.
  • You will create additional test cases for it. Programs will be graded using additional test cases created by the teaching staff.
  • I encourage you to use the class listserv to discuss which tests of mine are incorrect and to share tests you write.

Assignments will be checked for correctness with more tests generated by the instructional  staff. Your assignment may pass all the provided tests and still be incorrect. Grading test cases will not generally be made available. If you would like to see the test specific test cases your code failed on you must meet with your TA during their office hours to see the test cases.

Design Use assertions or if statements with exceptions to check for preconditions and postconditions on all public methods.

Variables within classes are to be private.

Do not use static data as a form of global variables.

Break up long methods (over 25 lines of code) into smaller methods.

Documentation

Use /* ... */ or // style comments for implementation details. Explain you implementation so someone not familiar with your solution can understand it.

Follow Sun's Coding Conventions. Use good variable names. Write readable code with good indentation, blank lines, and blank spaces.

Efficiency Worry about this last, but your program should run as fast as possible and use as little memory as possible within the constraints of the assignment and use. The Stopwatch class is provided to output the elapsed time of a program or method.

To the CS 307 home page