How to Succeed in CSS 162
  
  
    - Read (and follow the instructions and guidelines in) the syllabus! Your grade counts on it.
    There are no excuses for not adhering to the instructions or
    advice in the syllabus. 
- Familiarize yourself with the course
     web site. Read all the local materials.  Read the entire
     syllabus. Every word. Failure to follow instructions (for
     example, neglecting coding or documentation standards, trying to
     turn an assignment in the wrong way or after a deadline)
     will adversely impact your grade. 
- Get to work on your homework right away -- the very
    day it is assigned. Students who wait a couple days before
    starting get significantly worse grades because they have
    significantly less time to think.
- Some simple steps to approaching a programming assignment:
    
      - Read the assignment to make sure you understand what you are
      supposed to do. You can't write a program if you're not 100% clear
      about exactly what it should do. You should be able to
      answer questions such as: What is the program's input and output?
      Do they have any special formats? Are there any limits on their
      size or amount? How will the program know when it has reached
      the end of its input? Are there any special input values that
      will cause problems in computing the output? Is it clear what
      algorithm(s) should be used to implement the program?
- Decide how you will test your program. Yes, you want to
      think this out before you start coding. Can you
      identify a strategy for testing basic functionality, then moving
      on to progressively more complex or difficult cases? Are there
      ranges of input values that should all get handled the same way?
      Are there special values that produce special results? For
      example, a tax program might use one method for positive values,
      another for negative values, and a third for zero.
- Use your test plan to develop an incremental
      implementation plan. Your goal is to always have a working
      version of your program. It might not be fully operational,
      but it should compile and run correctly for some kinds of input
      or at least implement part of what is required. Archive these
      working versions as you get the next part of the program working
      and tested. This way, when you run out of time, you will be able
      to submit a program that compiles and does something that will
      get you partial credit. I do not assign points for effort, only
      results.
 
- A simple strategy for getting the most out of the textbooks
    and class/lab times:
    
      - Prepare for class time by reading the relevant section(s) of
      the textbook before class, taking notes. Your notes
      should include whatever questions you have. If necessary, use
      different colored pens to distinguish between notes about
      concepts, notes about code, and questions. You want to
      understand as much as you can, but you also what to use this as
      an opportunity to plan out what you want to get from class.
- True, you will also want to take notes in class, but your
      main goal should be to ensure that you get what you need -- that
      you get all of your questions answered, so that you now have some
      comfort level with the material.
- After class, consolidate what you've learned. Spread out the
      textbook and your notes from your reading and class
      time. Produce a final set of notes. Get copies of the code from
      the textbook: compile and run it, play with it by making
      modifications, using the debugger to explore its operation. This
      is the time to double-check that you're ready to move
      onward.
 
- Get the Savitch source
    code and play with it. Compile it, step through it with a
    debugger, use println or printf statements to output
    variable values while it runs, modify it, trace it by hand. There's no
    substitute for working through someone else's code if you really want
    to understand things and grow as a software developer.
- The typical UW course is expected to demand approximately 2-3
    hours per week of your time, on average, outside of class for
    each credit hour.  This translates into 10-15 hours/week for a
    5-credit course. However, programming-intensive courses take
    significantly more time, especially when you're relatively new to
    programming.  Plan to average more than 15 hours/week outside
    of class. 
- Get a Java reference book. 
- Make use of the Quantitative Skills
    Center.  
- Poorly written documents (and comments) reflect poorly on your
    apparent understanding of the material and the importance you
    place on this course. In the working world, they reflect poorly on
    your qualifications, professionalism, and the importance you place
    on your work; they will almost certainly influence your
    performance evaluations. Make use of the Writing Center to
    help you write better.