You will receive one grade for each homework and test (including the final exam). An estimate of your final grade will be made by taking a weighted average of these grades, with the total weight on homeworks being the same as the total weight of the tests. 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. We will then take extra credit and other factors into consideration to make small adjustments.

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 exams.

Your grade is independent of anyone else's grade in this class (except for those in your team); that is, we do not grade on a curve. Everyone can get an A in this class. 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.

The grading in this class will include subjective components. For example, the grading of programs is (perhaps surprisingly) subjective. In grading programs we will emphasize clarity; efficiency still has some weight, but not as much as clarity. In grading essay answers, we will weight both the force of your arguments and how completely they consider all the issues.

As an informal specification of a grading scale for subjective work, "A" work is excellent work, showing careful thought and a thorough understanding of the material, especially with creativity, and "B" work shows an adequate understanding of the material.

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

## 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 class, 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

You may accumulate extra credit points on problems marked extra credit. Extra credit problems should be turned in within one week 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.)

## Teams and Teamwork

Some of the work this class will be done in teams of 3-4 people. There are two reasons for doing teamwork in this class. The first is that languages are designed and implemented by teams; hence this is more realistic. The second is that, according to studies, you learn more effectively when you participate in group discussions.

In a team, you will all depend on each other, but yet will be individually accountable for your own learning (on exams). You will have to develop your interpersonal skills. These skills are important in the business world.

The following discusses the grading policies and procedures at apply to such teams.

### Problems, Changing Membership

Once a team is formed, it should not change members during the semester. That is, the members commit to working together for the rest of the semester.

If there is a problem in the team, you should come (preferably as a team) to talk to the instructor (Gary). We will try to straighten it out.

### Team Facilitator

One team member will be designated the team facilitator for each assignment. We will hold the facilitator responsible for making sure that everyone gets a fair chance to talk, and that everyone understands everything. The aim of this job is to ensure that everyone participates to the maximal extent possible.

In addition, the team facilitator may have other responsibilities, but those are solely to be decided by the team.

Once you have been a team facilitator on a homework, you may not be a team leader again until every other student in your team has been a team facilitator. (If the facilitator does not show up to a meeting, some one else may serve; but this should then be brought to the attention of the staff.)

You team may have other jobs that rotate as well such as a recorder, technical lead, etc. If you have such jobs, you should give everyone a chance at them also.

### Teamwork Contributions

The teamwork process is up to the individual teams. However, each student in the team is responsible for understanding the work in the team, thus teams should be very careful to have the whole team check and explain parts of the work if it is split up. You, as a team member, should be sure that you understand all that goes on and that you take on a fair share of the work.

### A Suggestion for Improving the Group Process

We also suggest (but do not require) that at the end of each homework the team explicitly discuss:

1. What the team did that worked well,
2. What aspect of the team needs improvement, and
3. What (if anything) will be done differently on the next assignment.
This should be an honest assessment, and is intended to get the team talking about what is happening, improve the process, and to keep us informed of how your team is working.

## Cheating

The simple rule of thumb is:

Never give finished answers to someone else (or another team) or use someone else's finished answers.

Such exchanges are definitely cheating and not cooperation. This includes taking answers from the web. However, note that on team homework, there can be no cheating within a team.

As required by the university, if we catch you cheating on a test or exchanging code or written answers, you will get no credit for that test or homework, and you will be reported to the Dean of Students. 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.

## Discussion, Cooperation, and Collaboration

You are encouraged to discuss homework, and other parts of the class with other students. Certainly discussions within a team about team homeworks are fine and no harm comes from them. Even between teams, such discussions about ideas are not cheating, whereas the exchange of finished, written answers is cheating. However, when you have more than casual discussions about homework with students in other teams, or about homework that is not team homework with students in your own team, then you must cite the other person as described below.

When you cooperate on solution ideas or collaborate on producing final answers with other teams, you must cite the other people you worked with as follows. This must be done for each problem on which you cooperate or collaborate. (That is, if you work with someone on a problem, you don't need to work with them on the entire homework.)

• If you discussed ideas jointly, but wrote up a final answer for the problem independently, then each team should include a note with that problem's solution such as "the following solution was developed jointly with Alyssia P. Hacker in team X," or "the following idea is due to Ben Bittwiddle." Each person's final answer receives a grade independently of the other's; there is no bonus or penalty for such a citation.
• If you jointly worked on a final answer for a problem, you should only hand in one answer for the group, and include: (i) the name and (ii) signature of each person who worked on the problem's solution, and (iii) an explicit certification of the form: "Each person actively contributed to and fully understands the solution." In this case each member of the group receives the same grade for that problem.
If the certification is not true for everyone, then only those people for whom it is true may participate in the joint solution; the others should use the ideas and write up their own final answer for the problem, with a note as in the previous bullet point.

Note that substantial collaboration on solutions which is not cited as described above is considered cheating. In particular, if you are part of a group that divides up the problems in a homework, and some do each one, without actively contributing during the solution of each problem, then this is just an exchange of finished answers--i.e., cheating. Such cheating will be dealt with as described above. It should be clear that you will learn less by such exchanges of finished answers.

Be careful, not to get involved in an unequal collaboration, where you are doing less work than someone else. Part of what you need to do to learn the material is to struggle with it; if you deny yourself that struggle, you will learn less and remember what you learned less. So beware of this trap.

Also, as a kindness to your classmates, you should terminate an unequal collaboration where you are doing more than the other person. The other person will learn the material better if you help them but don't collaborate so closely. In this case it's better to help them only by discussing problems with them, and not by jointly collaborating on solutions.