Course Grading:
Final letter grades are determined from your final cumulative score that is
computed using the following breakdown:
- 24% Homework Assignments:
eight (8) homeworks each worth 3% of your final grade.
- 30% Programming Assignments:
three (3) programming assignments each worth 10% of
your final grade.
- 46% Exams:
two (2) exams, one midterm exam worth 20% of your final grade
and the final exam worth 26%.
Letter grades are assigned at the end of the semester. We do not
curve individual assignments or exams. At the end of the semester after all
of the scores are recorded
a single curve for students is determined with the median student's course
grade in the range of a B.
Scores for labs, programs, and exams are reported through the
Learn@UWSystem.
Exams:
There are two exams that total to 46% of your final grade.
Exams are a primary tool we use to evaluate your performance in this
course.
- Midterm (20%): Thursday, July 11th, in class
- Final (26%): Thursday, August 8th, in class
The exams are composed of three parts. Questions in part I are 1 point
each and are choosing between two options such as true/false. Part II are
3 points each and are multiple choice. Written questions are for Part III
and are worth a variable number of points.
The midterm will cover primarily new material.
The final will be in part cumulative but with the majority of
the exam on the topics covered since the midterm. 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.
Exam Policies:
- 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 week 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. Note that we sometimes photocopy written exams to ensure
that students cannot benefit from a re-grade by making changes to their
answer (such attempts are academic misconduct).
Programming Assignments:
There will be three (3) programming assignments
each worth 10% for a total of 30% 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:
Programs 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 allowed, based on the
late policy specified below.
- Grading:
See assignment grading information below.
Homework Assignment:
There will be eight (8) homework assignment
each worth 3% for a total of 24% 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 allowed.
- Grading:
See assignment grading information below.
Late Policy:
Assignments may be submitted late, but the following penalty
applies:
- 1 day late: 10% deduction, up to 24 hours late
- 2 days late: 20% deduction, from 24 to 48 hours late
- 3 days late: 30% deduction, from 48 to 72 hours late
- more than 3 days late: no work will be accepted after 72 hours late
One day late is defined as a 24-hour period starting at the time the
assignment is due (weekday or weekend). For example, if an assignment is due
on a Friday at 10:00 PM and it is handed in after 10:00 PM on Friday but
by 10:00 PM on Saturday, a 10% penalty will be deducted.
You are also given three (3) free days that
are automatically applied to reduce or eliminate a late penalty. Once your
three free days are used, no additional free days will be provided. Consider
them as insurance to be used in emergencies, such as when you may be unable
to complete an assignment on time due to illness.
Late penalties for partnerships are determined separately. For example,
if a pair submits a program 2 days late and one of the partners has 2 free
days, that partner will not be penalized. If the other partner has only one
free day remaining, that partner will be penalized 10%.
How to Submit Assignments Electronically:
Assignments are turned in electronically for your convenience and to save
paper. You can submit your work at any time prior to the due date. The
last section on each assignment page lists what to turn in. All assignments
are to be submitted as plain text files containing source code for programs.
Handin Directories:
A directory has been created for you to use to electronically submit
your work. This directory is located at:
/p/course/cs367-bgibson/handin/<YOUR_CS_ACCOUNT_NAME>
Where <YOUR_CS_ACCOUNT_NAME> is the login name that
was assigned to you to access your computer science account. This is your
main "handin" directory in which is found subdirectories:
- in for submission of programs,
- h1 for graded homework 1
- h2 for graded homework 2
- h3 for graded homework 3
- h4 for graded homework 4
- h5 for graded homework 5
- h6 for graded homework 6
- h7 for graded homework 7
- h8 for graded homework 8
- p1 for graded program 1,
- p2 for graded program 2,
- p3 for graded program 3,
You will always turn your assignments into the in directory.
Steps for Submitting Files:
There are five steps required for submitting your work from the
CS lab computers. Assume you are turning
in your first program:
- Log into one of the CS lab computers
- Open a terminal window (click on the background)
- Change to the location on your machine containing your assignment, for example:
cd private/cs367/assignments/p1
Note: the private directory is already created for you;
all other subdirectories (cs367, assignments, and p1 in this example)
you'd need to create.
- Copy your files to your "handin" directory as in this example:
cp <FILE_NAME> /p/course/cs367-bgibson/handin/<YOUR_CS_ACCOUNT_NAME>/in
Note: the handin directory is already created for you.
- Verify that your files are in your "handin" directory as in this example:
ls -l /p/course/cs367-bgibson/handin/<YOUR_CS_ACCOUNT_NAME>/in
Follow the instructions above. Trying to use the file browser
to drag and drop your file into your handin directory will result in an error
message.
Write permission will be enabled for your in directory
after an assignment is released and disabled after the due date and time
passes. You may submit your files multiple times. You may re-submit a
file, by overwriting the one already in your handin directory. You do
not have permission to delete files from your handin directories, and
neither do the course TAs. This ensures that accidental deletion of your
work cannot be done. If you want a file(s) removed, email the course
instructor specifying your login name and the name(s) of the file(s) you
want removed.
After the due date and time, your submission is moved to the corresponding
assignment subdirectory, for example, p1. Late programs are moved and
a note is made indicating the number of days late. You have permission to
read from from these handin directories except while we are grading.
You may also submit your work remotely by using a file transfer
application, such as the one included with SSH. You'll need to configure
this application to connect to one of the
CS lab computers. Then you will be able
to use it to transfer your files to your handin directory.
Assignment Grading:
Homework assignments are graded by the Bryan and Project assignments are graded by John. Talk to the appropriate person if you have questions about the grading of your assignments.
Re-Grades Requests:
You may request a re-grade of your assignment,
if you believe it wasn't correctly graded. Contact the appropriate person
within one week after the graded assignment is returned.
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 list your partner as a collaborator in the header comments of
your source files (see Commenting
Guide).
- Only one partner submits the program files, but both
partners must submit and hand in the
README.txt file.
- 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.