Getting Help
You are encouraged to contact an ISA when you need help with an
assignment. The course instructors are always happy to help students with
assignments; however, they simply don't have enough time to handle all of
the student questions themselves for such a large course -- that is
precisely why we hire ISAs. Naturally, if an ISA is unavailable, or if
you feel that the instructor's point of view is required, the instructors
will be happy to help.
You should first check the Announcments page for your course to see
if there is any relevant information there (for example, known errors
or problems with the current assignment). Some courses have newsgroups
or bulletin boards on UW-Ace to seek help from course staff and fellow
students (with conceptual issues and assignment clarification rather
than code debugging). ISAs hold consulting hours in the Computer
Science Consulting Centre located in MC 4065; the schedule will be
on your course's website. Staff are also available by e-mail; the
generic address will be csXXX@student.cs.uwaterloo.ca
where XXX is the number of the course in question.
Don't expect any course staff member to hand you an answer on a silver
platter. Do your part! That generally means attending
all lectures, doing the lab exercises, and doing some initial thinking
regarding assignment problems. Course staff will ask to see whatever work
you have done on the problem (UML designs, pseudocode, notes from Class,
etc.) before offering any assistance in debugging code.
Hints for Increasing Your Assignment Marks
Understanding the Problem
- Read the question thoroughly. Read it several times while
you're working on the assignment just to make sure you're still on
track.
- Ask questions if you aren't sure about something. Better to ask a
question than make a wrong assumption.
- Look for the points of connection between class, practicum, lab,
and assignment. They are there! Each assignment is designed to
exercise the concepts learned during the previous week. Always ask
yourself how those concepts could be applied to this problem.
- Understand what you are to submit for marking.
Designing your Solution
- Don't start working on the computer too soon. Always take time to
design your solution on paper first.
- Use step-wise refinement to break a large problem into small
pieces.
- Write test cases first to help you understand the functions
you need to write.
Using the Computer
- Write skeletal code first, then compile/run. Get any syntax
errors as soon as possible so they can be fixed immediately rather
than waiting for a massive debug session at the end.
- Work incrementally; get one or two use case working for a particular
function, and then work on the others. Work on one or two functions
first, and then move on once those are working
- Always make sure your program compiles/runs before submitting
it.
- Test your program. Run it and try a wide variety of inputs, then
fix any bugs that crop up. Start with the most common inputs, of
course.
Time Management
- Begin early so you have time to think about things while doing
your laundry or preparing supper. Even seasoned programmers can't
count the number of times they've been stumped by a problem for an
hour or more -- and then think of the solution almost as soon as they
leave their office and do something else.
- Beginning early gives you more opportunities to ask course staff
questions about the assignment (and wait for their answer).
- Beginning early also allows you to make use of any public test
facilities for your course so you can detect whether you are
misinterpreting the assignment specs well before the assignment
is due.
Style Issues
- Follow the style guidelines listed in the resources for the particular language you are
using.
- Document carefully. Make sure all functions are documented
appropriately, and that extra explanation is given for any
potentially confusing parts of your program (both for the markers,
and for yourself later).