Following is a list of skills I'd like you to have by the end of the semester.
Whenever you turn in a programming assignment, I'll assess how well you've demonstrated each of these skills, on a scale from 0="didn't use" to 3="fluent, comfortable, idiomatic". Your semester grade will depend on the maximum score for each skill .
In each language, I've listed "essential", "important", and "obscure" skills. Each "essential" skill will be weighted 3, each "important" skill 2, and each "obscure" skill 1.
At the end of the semester you'll have earned a number of points in each language, e.g. 50 of the possible 72 in C, 90 of the possible 131 in C++, etc. I'll compute a fraction for each language, and weight the five fractions equally, so learning all 51 possible points of Scheme has the same effect on your grade as learning all 136 possible points of Java. These five grades will be combined with your average grades on language-independent skills and with the final exam to produce a semester grade. As a guideline, earning 40% of the possible points in each language is probably a C; 60% is probably a B; and 80% is probably an A.