Final grades for the course will be weighted towards exams. Together the four exams given will account for 70% of your grade, homeworks will count for 30%. Each exam is weighted equally with the others; no extra weight is given to the final exam. Each homework point counts equally, but some homeworks have more points than others.

Note this policy well. The idea is that you should:

Do the homeworks to learn the material.

You will pass and do well if you make mistakes on your homeworks and learn from them. Don't think that the homework grades are so important that you should cheat to get higher homework grades, as doing so will most likely cause you to fail the tests.

We reserve the right to adjust your calculated grade downward (towards F) if you do not turn in the homework problems, but get good grades on the tests. (This indicates to us that you are either cheating on the tests or denying yourself the extra learning that would come from doing the homework problems. If you already know the material, talk to the instructor about testing out of this class.)

Your grade is independent of anyone else's grade in this class. That is, we do not grade on a curve, and everyone can get an A. Our purpose in grading is to uphold a standard of quality and to give you feedback: it is not to rank students.

Instead of using curve grading as a final defense against problems that are too hard, we use the following policy. If a problem on a homework or exam is so hard that most students do not "get it", then we will eliminate it from the exam or homework grading. If this problem was appropriate, then we will teach how to solve problems like it, and give a similar problem on another exam or homework. If it was not appropriate, then we will ignore it. If you detect such a problem on a homework, let us know about it as soon as possible, as it will save us all a lot of work.

Although we will not always make fine distinctions in points the nominal minimum standards are given by the following table.

90%A
85%A-
80%B+
75%B
70%B-
65%C+
60%C
55%C-
50%D+
45%D
40%D-
lessF

## Late Homework Problems Policy

The late policy for homework problems is designed to encourage you to:

• hand in one "good" version of each problem,
• hand it in on-time if possible,

but to hand it in eventually in any case. To allow the TA to grade what you have handed as soon as possible, only one version of any problem, the first you hand in, will be accepted.

Like all homework, late homework problems must be printed and handed in to a staff member, email will not be accepted. If you can't find your TA to turn in late homework problems, turn them in to me or the department office. If you give it to someone in the office, be sure to have them note the time on it.

Homework problems are due at the beginning of the lecture meetings, not five minutes after it starts. However, you can turn in just the problems that you have finished; we don't require you to turn in entire homeworks at once. The late penalties only apply to those problems you turn in late.

We do give partial credit for homework, so you will have to balance the gain from waiting to get a good version of a problem and the loss from handing the problem in late. In general, we encourage you to hand in a good version of each problem, but if you are late (and have been trying), consider that as a sign that you need help on the concepts, and get help from us!

Homework problems that are late receive points based on the following table.

When Handed In Percentage Penalty
by 5pm the day of the due date 5%
by 5pm the day after the due date 10%
by beginning of the next lecture meeting 25%
by 5pm 2 days after the due date 30%
by 5pm 3 days after the due date 50%
by 5pm, 6 days after due date 75%
by beginning of lecture, 1 week after due date 80%
later or during last week of classes 100%

For example, if a homework problem is due on Tuesday in class, but you turn it in by 5pm Wednesday, you will have 10% of what would have been your score subtracted; thus if the problem was 25 points, and you earned 20 of them, your score would be recorded as 18 points, due to the 10% penalty. If you turned the same thing in on Thursday, your penalty would be 25%, so your score would be recorded as 15 points. If you wait until Tuesday of the following week to turn it in, then your score would be recorded as 4 points, due to the 80% late penalty.

Absolutely no credit for late homework problems will be given during the last week of classes (or later!), or for homework problems turned in later than 1 week after the due date.

If you are consistently late with homework, we may stop accepting your late homework problems.

## Homework Problem Types

There are 3 kinds of homework problems: normal, suggested practice, and extra credit. Normal problems are essential material. If you find yourself struggling with one more than a reasonable amount of time, please come and see us for help! Suggested practice problems are for you to use for practice, if you wish, but not to hand in; suggested practice problems may be discussed in discussion sections, and make good study problems for tests. Extra credit problems do not count as normal problems, but can be handed in. They are discussed further below.

On homeworks, the points and type of problem follow the problem number. For example, "3. (25 points)" is a normal problem, while "4. (suggested practice)" is a suggested practice problem, and "5. (20 points; extra credit)" is an extra credit problem.

The points used to figure your grade on a homework are the points you earn for the normal problems.

## Extra Credit

In homeworks for which you do not have any incomplete problems and earned a grade of at least a B overall, you may accumulate extra credit points on problems marked extra credit. Extra credit problems that are not given explicit due dates may be turned in any time within 3 weeks of the due date of the last normal problem of the homework to which they are attached. However, all extra credit work must be handed in before the last week of classes.

Extra credit problems should be turned in separately from regular homework problems. That is, don't staple them together with regular homework problems. Make sure they are also labeled with your name and clearly state what problems are being solved.

The main reason to do extra credit work should be that you are interested in the problems and want to learn more about the material. Since the main material is more important, you should only do extra credit problems that interest you and that you have time for. Beware that one reason for having extra credit problems is to give me a place to put interesting problems that are of unknown difficulty. Sometimes these turn out to be quite hard.

Another reason, for doing extra credit work, however, is that your extra credit points will be used to subjectively raise your final grade in the class. For example, if you are close to an A in the class, and have some extra credit points, then we will take them into account and may raise your grade to an A. Another use for extra credit points is to impress me, if you want me to write you a recommendation someday. (Because of that, it is wise to save your extra credit work.) However, you can't use extra credit work to make up for incomplete work. If you are having difficulty in the class, focus on the main material, not on the extra credit work.

You may also do work for extra credit that you invent, but please check with me before doing something like that. (Otherwise you may spend a lot of time on something that I may not consider worth many extra credit points.)

## Cheating

The simple rule of thumb is:

Never give or use someone else's code or written answers.

Such exchanges are definitely cheating and not cooperation.

We will take action if we catch you cheating on a test or exchanging code or written answers. Read the section on academic dishonesty in the Iowa State University Catalog.

If you honestly believe that certain problems are too much busy work, then bring it to the instructor's attention; or failing that, only do the part of the problem that you think you need to do to learn the material and explain that to us.

## Cooperation

You are encouraged to discuss homework, and other parts of the class with other students. Such discussions about ideas are not cheating, whereas the exchange of code or written answers is cheating. However, be careful; if you have the other person look at your code in the midst of a discussion, that is cheating.

In discussions of ideas, you should also be careful to distinguish between helping and hurting yourself and the other students. In brief, you can help the other students by teaching them, and you can hurt them by giving them answers that they should have worked out for themselves. (Remember, when you're being tested, you won't be able to help each other.) The same applies to tutoring and getting help from me or a TA.

Harmful dicsussions most commonly occur in "giving away" a key idea needed to solve a problem. For example, suppose you have studied a programming problem for an hour or so, and finally found that the key to the solution is to use a helping procedure you call "critical". Your friend, after working on the problem for 15 minutes, says "I just can't see how to do this" and you say "try using a helping procedure called 'critical'. "

Although it takes more time, your friend will learn more if you say something like: "How are you approaching the problem, what's your plan?" (knowing that if your friend is not planning, no helping procedure will be found). If your friend hasn't planned, you should let them do it; if they have trouble planning, tell them to think about problems discussed in class that were similar, etc. If, after planning, your friend still hasn't found helping procedure 'critical', you should say something more direct like, "what helping procedures do you have?" or "how do these helping procedures help you get closer to the solution?" or "can you solve part of the problem?" The idea is to guide the other person's thinking process.

Perhaps a more common way to fall into the hurtful exchange of giving away the key idea is when you're talking over a problem that no one knows the answer to yet. Once one of you comes up with the key idea, it is tempting to blurt it out, impressing the others with your brilliance. If this happens, you should write "developed in cooperation with ..." on your solution. (Note that this disclaimer cannot be used to get away with cheating, but we're not discussing exchanging written code or answers.) It would be better for the one who comes up with the key idea say "I have it, but now I can't tell you what it is" and then try to guide the others to the solution as described above.

If you use reference materials (other than the course texts) to solve a problem, please give a citation. (You should not copy code from other books, as that will probably not help you on tests. But you may get some ideas from a book, for example, ideas about algorithms or data structures.) Similarly, if you discuss a solution with another student, give credit where credit is due by making a note such as "the following idea was developed jointly with Alyssia P. Hacker," or "the following idea is due to Ben Bittwiddle." You cannot be charged with plagiarism if you cite in this way. (However, don't expect to excuse cheating with such a citation. That is, you cannot exchange code even if you say it was developed in cooperation with someone else. Cooperation refers to the exchange of ideas, not code or written answers.)

If you have questions about the details of cooperation vs. cheating, please see the professor.