All assignments must be handed in in a 9"x12" envelope with the following information clearly marked on the outside of the envelope: Name, Student Number, Course number and section (e.g. CSI 2114A) tutorial group (e.g. DGD-3), Instructor's name, Teaching Assistant's name (for your tutorial group), and the Assignment number. To hand in your assignment, deposit your envelope in the LOCKED box marked CSI 2114 A,B. Each student is required to do each assignment individually and hand in: * for each question that requires writing a program: a printout of your program. All your programs must conform to the standards below. * for each question that requires a handwritten answer: A NEATLY written/typed/drawn answer on a separate sheet of paper. If your answers require several sheets of paper, please staple all the sheets together. * you must always hand-in a 3.5" high density diskette containing no files except those related to the assignment. For each program on the assignment the disk should contain the program's source file (.java) and its "executable" (compiled) file (.class). NEW: Place all of the java files in a common folder on your disk and give it an appropriate name (i.e. A2/) IDENTIFY YOURSELF CLEARLY ON EVERYTHING YOU HAND IN * give your name and student number, the course number and section, your tutorial group, your instructor's name, your TA's name, the assignment number, and the question number * all this should appear in all of the following places: (1) on the envelope in which your assignment is handed in, (2) at the beginning of each program/class (in comments), (3) at the beginning of each program's output, (4) on each disk that you hand in, and (5) on any sheets of paper you hand in for questions that require handwritten solutions. PROGRAMMING STANDARDS INPUT/OUTPUT * output should be nicely spaced and easy to understand. In particular, it should be easy to understand the output WITHOUT looking at the program listing. This means that for every value in your output you must print a short message explaining the meaning of the value. * before your program reads values from the keyboard it must print a prompt describing what the user is required to enter. VARIABLES * Identifiers should be as meaningful as possible and follow the standard upper-case/lower-case conventions. * Only declare variables that are actually used. * Do not use the same variable for different purposes. * Every variable should have a comment describing its purpose. BE BRIEF. This is called a data dictionary - it should be placed at the beginning of every method, either before or beside the declarations. * Do not use "global" variables. All instance variables should be protected or private. Access to instance variables should be through public accessor methods. PROGRAM STRUCTURE * Good structure is very important. Decompose your algorithms/methods into meaningful sub-algorithms/methods whenever this improves clarity. * Each method (including "main") should be preceded by comments describing its purpose and the algorithm it uses (if the algorithm is very simple, it needn't be described). These descriptions should be BRIEF. * Your program must be indented in a systematic way that reflects the nesting of its statements. You must follow whatever guidelines your TA gives about formatting your code.