Course Grading
Final letter grades are determined from your final cumulative score that is
computed using the following breakdown:
- 20% Homework Assignments:
ten (10) homeworks each worth 2% of your final grade.
- 25% Programming Assignments:
five (5) programming assignments each worth from 5% of
your final grade.
- 55% Exams:
three (3) exams, two midterms exams each worth 17% of your final grade
and the final exam worth 21%.
Letter grades are assigned at the end of the semester. We do not
provide letter grades for individual assignments or exams. At the end of the
semester after all of the scores are recorded then thresholds are set given
the difficulty of the coursework during the semester. Thresholds are raised
if the coursework was easier or lowered if it was harder. By adjusting the
thresholds at the end of the semester we can account for varying difficulty
among semesters to ensure consistency of grading across semesters. Typically,
the median student's course grade is in the range of a low B to a high BC. If
you have a question about your overall grade, please meet with your
instructor.
Assignment grading feedback is provided via grade
reports for homeworks and programs accessed through the
CS367 Forms. After a
regrade period, scores for a particular assignment are then uploaded into
Learn@UW. Exam scores
are only reported through Learn@UW.
Exams
There are three exams that total to 55% of your final grade.
Exams are a primary tool we use to evaluate your performance in this
course.
- Midterm 1 (17% - Topics): Tuesday, March 1st, 5:00 PM to 7:00 PM
- Midterm 2 (17% - Topics): Tuesday, April 12th, 5:00 PM to 7:00 PM
- Final (21% - Topics): Sunday, May 8th, 2:45 to 4:45 PM
The exams are composed of two parts. Questions in part I are 1 point
each and are choosing between two options such as true/false and those
in Part II are 3 points each and are multiple choice. Both midterm exams
cover primarily new material. The final will be in part cumulative
but with the majority of the exam on the topics covered since midterm 2.
You are responsible for:
- lectures (including topics
covered in lecture that are not covered in the readings),
- readings (including topics
covered in the readings that are not covered in lecture),
- Homeworks, and
- Programs.
Final Exam Room Assignments:
For the location of the building, click on the building name below or check out the campus map.
Policies for Exams
- Exam Materials: No textbooks, electronic devices, or help from
neighbors are allowed during the exams.
- Exam Conflicts: must be brought to the course coordinator's
attention during the first two weeks of class.
- Make-Up Exams: are given only with your instructor's permission
when you are unable to take the regular exam due to extenuating
circumstances. Requests for make-ups after an
exam are rarely approved and only for verifiable emergencies.
Regrades: may be requested if you
believe there was an error in the grading of your exam. You must
contact your instructor within one week after the graded exam
is returned.
Programming Assignments
There will be five (5) programming assignments
each worth 5% for a total of 25% of your final grade.
Accounts are provided on the CS lab computers for you to do your
programming work. See the CS Computer Labs
page for more information.
Links to programming assignment pages:
Policies for Programming Assignments
- Collaboration:
Program 1 must be done individually.
Programs 2 - 5 can be done in pairs but you must follow the
rules below.
- Questions:
are to be posted on Piazza,
a free tool that we're using to manage questions. Before posting a
question, please search the assignment pages for an answer and also
search Piazza to ensure your question hasn't already been asked.
- Late Programs:
are not accepted for a grade without prior approval from your
instructor. Contact your instructor at least three (3) days
in advance of the due date if exceptional circumstances beyond your
control that will prevent you from completing an assignment by the deadline.
We will ask you to submit the work you've completed, which we'll review
and then might give you a short extension to the due date.
- Grading:
See assignment grading below.
Homework Assignments
There will be ten (10) homework assignment
each worth 2% for a total of 20% of your final grade.
Links to homework assignment pages:
Policies for Homework Assignments
- Collaboration:
on homework assignments is NOT
allowed.
- Questions:
are to be posted on Piazza,
a free tool that we're using to manage questions. Before posting a
question, please search the assignment pages for an answer and also
search Piazza to ensure your question hasn't already been asked.
- Late Homework: is NOT accepted for a
grade.
- Grading:
See assignment grading below.
Assignment Grading
Step 1, Submission: Submit your work before the assignment deadline
by loggin into and using the CS367 Forms.
Follow the instructions on the "Submit Files" form making sure to use the correct file names
and verifying your file contents are correct.
Step 2, Grading: Assignments are graded by the course TA(s) and/or Grader(s)
using specified grading standards.
Step 3, Solution: Solutions for homework assignments are posted on
Learn@UW so that you can
check your work in advance of getting it graded. Solutions to programming
assignments aren't posted.
Step 4, Graded: When grading has completed for an assignment, an
announcement is posted on the course home page.
You will receive a grade report for your work accessible
through the CS367 Forms.
Step 5, Regrades: You may request a regrade of your assignment
within one week after the graded assignment is announced if you
believe your work was incorrectly graded. Before requesting a regrade for homeworks,
check your work against the solution posted on
Learn@UW. For programming
assignments, you may point out minor corrections to your code (a few lines) if they
result in significant differences in execution. Request regrades by emailing the
grader named in your grade report.
Step 6, Learn@UW: After regrades are completed on an assignment, scores
are then uploaded into Learn@UW. Once scores are uploaded, in Learn@UW you can
see grading statistics such as class averages.
Rules of Pair Programming
- You may have only one partner for each programming assignment.
- You may have a different partner on different programming
assignments.
- You may not pair program with multiple partners on the same
assignment.
- Your partner must be currently enrolled in a CS 367 lecture.
- You must register your partnership using the
CS 367
Forms Page before you begin working on the programming assignment.
- You must list your partner as a collaborator in the header comments of
your source files (see Commenting
Guide).
- You must follow the principles of pair programming
summarized below.
Submitting someone else's work as your own is
academic misconduct, which will be dealt with in accordance with University
Academic Misconduct procedures.
Principles of Pair Programming
The following is a summary of successful pair programming principles taken
from a paper by
Williams and Kessler:
- Pair programming involves two people working together at one
computer, continuously collaborating on design, coding, and testing.
One person types; the other either provides directions ("Now we need
to write a new method that does ..., Now we need a loop to do ...")
or constantly reviews what the typer is doing, and provides
comments.
- Pair programming has proved successful both in classes and in
industry. Programmers usually report having more confidence in
their solutions and enjoying programming more when working in
pairs.
- It is important to switch roles often (slide the keyboard back and
forth). Because pair programming can be quite intense, it is also
a good idea to take breaks (to check e-mail, go for a walk, have
a snack).
- It is important to provide honest but friendly feedback.
To be effective, there needs to be some healthy disagreement and
debate, but pairs also need to be respectful of each other, and try
to avoid becoming defensive when receiving criticism.
- Inevitably, programmers do some independent thinking/working.
For best results, that work should be reviewed by both
partners (and perhaps revised) when they start working together
again.
- To be successful, pair programmers must realize that the benefits
of working together outweigh their usual preference for working
alone, they must confidently share their work, accepting instruction
and suggestions for improvement in order to improve their own skills
and the code they are writing, and they must accept ownership of
their partner's work and thus be willing to constructively
express criticism and suggest improvements.
Studying Tips
- Attend lectures and take notes. Taking your own notes on the
material covered in class requires you to organize your thoughts and
think about the topics in ways that simply listening does not. Reread
your notes soon after lecture to find points that are not clear.
- Participate in class. Do in-class exercises and answer questions
posed. These exercises give you additional practice on skills that you
will need for homeworks, programming assignments and exams. Even more
importantly, they help you identify which topics you do not understand.
This will help you efficiently use your study time.
- Do the assignments. This is obvious, but
some students mistakenly believe that the purpose of homework and
programming assignments is to evaluate student's skills. That is not
the case, their purpose is to provide opportunities for you to practice
the concepts taught in lecture. This practice is vital for
learning and for performing well on the midterm and final
exams.
- Prioritize your studying. First focus on your lecture notes, then
review the assignments, and finally go over the readings.
- Study by re-organizing your notes. Successful studying requires
you to be actively thinking about the material. An effective way to
study is to re-organize and rewrite notes succinctly in terms that you
understand.
- Avoid getting bogged down on specific points. If you can't figure
something out, move on to other material and wait to ask your instructor
or TA for clarification.
- You'll need to do some memorizing. Memorizing is a practical
way to learn the definitions of terminology and concepts. A good way to
memorize information is through repeated exposure to the material.
- Form a study group. Often it is easier and more motivating to
work with others when studying for an exam. You can distribute the work
by having each group member come up with a few questions on a topic and
then going over the solutions collectively. If you run into a concept
that causes confusion often others in the group will feel similarly
while some will have explanations. Working together will help you learn
things by providing multiple perspectives and insights into the
material. Try to find a study group that provides you with ample
opportunity to communicate your understanding. It is your effort to
express information that will be of the most benefit to your learning.
- Finally, avoid cramming! We all know this, but often we find
ourselves waiting until it is too late. This habit is worth breaking!
Research has shown that studying in half hour to hour intervals followed
by half hour breaks is far more effective than non-stop cramming.