Assignments and Evaluation |
There are three components to successfully
learning a topic: learning the fundamental concepts, practicing the
application of those concepts, and demonstrating your mastery of the
material.
Fundamentals: The first three
components of the coursework emphasize fundamental
concepts.
-
Readings:
In computer science, one often begins to learn new things by reading
about the topic - especially in conjunction with examples. Your
first exposure to new topics will come the same way, via readings.
Readings are due at the class period for which they are listed on
the syllabus (i.e. they are to be done before class).
These readings will be the starting point for class, so
don't skip them! Assigned readings will be accompanied by reading
guides; the purpose of the guides is to help you identify the
important concepts to focus on and to help you learn how to read
technical material.
-
Warmups:
Assigned readings will also be accompanied by a short set of
exercises ("warmups"). The warmups will address concepts
covered in the reading, and are intended to get you thinking about
what you've read and to determine what topics need more attention in
class. Warmups are due by midnight before the class period
for which the reading is assigned.
Warmups cannot be handed in late or made up after the fact,
but the three lowest scores will be dropped when computing the final grade.
-
5 Minute Syntax Quizzes:
When you are learning a foreign language, you can generally make
yourself understood even if your grammar and spelling aren't
perfect. With programming, however, syntax problems are
deal-breakers - the computer won't run your program if there is even
one error - and your progress will be greatly slowed if you are
continually struggling over syntax. This means you should strive to
memorize the correct syntax as quickly as possible. To this end,
there will be about 10 short syntax quizzes. They will be given at the start
of class, usually one or two class periods after a new construct is
introduced. (Quizzes will be announced one class period in advance.)
Syntax quizzes cannot be made up if you are late to class or miss
class, but the lowest quiz score will be dropped when computing the final grade.
Practice: Programming is learned by doing, not just
reading. The next components of the coursework emphasize
actively applying the fundamental concepts.
-
Class Participation and Group Activities:
Many class periods will involve working through examples, either as
a class or in small groups. You are expected to contribute to
these activities, by regularly asking questions or volunteering answers
during class and by staying on task and
contributing to your group's work during group activities. Note
that being able to contribute meaningfully in class also means that
you come to class prepared by having done the reading.
-
Labs: Weekly lab assignments are intended to give you
practice integrating and applying the course material. The lab
assignment will posted several days in advance of the lab - you
should read through the handout before coming to lab, so you are
ready to get started working right away. If you come to lab
prepared, you should be able to make a good dent in the assignment during
the lab period - but you will likely need to spend additional time
outside of class to finish it.
Lab assignments
are generally due at the start of the lab session one week after
they are assigned. Labs may be handed in late, but with a point penalty.
Mastery: The remaining coursework
is geared towards demonstrating your mastery of the material.
-
Exams: There will be three exams - two in class during the
term, and one hour-long exam in the registrar-scheduled final exam
timeslot. All three will be written (no programming on the
computer) and closed book/notes. Details on the material covered and
the exact format of each exam will be announced prior to the
exam. Written exams are a chance to demonstrate that you have
mastered the fundamentals, and to show how you approach solving a
problem.
-
Projects: Complementing the written exams, there will be
three programming projects. These are more sizeable programs than
the labs, and are intended to give you practice with skills needed when you
create larger programs - as well as to demonstrate that you can
produce a working program. (Projects really belong both under
"Practice" and "Mastery" - they are a chance to practice
skills as well, but in a more limited-help environment than the
labs.) The final project will be due at the time of the final exam.
Final Grades:
Final grades will be computed as
follows:
- Warmups: 10% (approx. 0.5% each)
- Syntax Quizzes: 8% (approx. 0.9% each)
- Class Participation and Group Activities: 9%
- Labs: 38% (3.8% each)
- Exams: 15% (5% each)
- Projects: 20% (6.7% each)
- Attendance: Each absence beyond three, regardless of whether it
is excused or unexcused,
will result in a deduction of 10% from the class participation grade.
Talks: The Math/CS Department sponsors a number of
colloquium talks from faculty, alumni, and visitors during the
semester. These talks are a great way to find out about a variety of
topics in the fields of mathematics and computer science. You can
earn extra credit for attending talks relevant to computer science -
this includes computer-science-themed math/CS colloquium talks, as
well as any other talk given on campus that is relevant to computer
science. (Feel free to suggest talks that might qualify.) To get
credit for attending a talk, you must be present at the
talk and must submit a three-paragraph writeup of the talk:
one paragraph summarizing the talk, one paragraph discussing what
you learned from the talk, and one paragraph explaining why the talk
is relevant to computer science. Writeups are due within one week of
the talk. Writeups which are clearly written, substantive, contain
the three paragraphs listed, and make a strong case for the
relevance of the talk to the course will earn up to 5% of the class
participation grade per talk. A maximum of four talks will be
counted for extra credit.
|
Warmups Rubric |
Warmups will be graded on a simple
✓, −, 0 scale:
✓ |
- all questions answered, and
- shows evidence of trying to apply the reading to answer each question
Note that correct answers are not required to get a ✓, nor do
correct answers alone ensure a ✓. Warmups are not reading
comprehension quizzes - they are to get you to think about the
material, and to determine what material needs more attention in class.
|
− |
- some questions answered, and
- shows some evidence of trying to apply the reading to answer
the questions (but not necessarily for all questions)
|
0 |
- no questions answered, or
- no evidence of applying the reading
|
The three lowest scores will be dropped. Letter grade equivalents
will be approximately 90% ✓ = A,
75% ✓ = B, 60% ✓ = C,
50% ✓ = D. This assumes that the other scores
are −; having 0s instead of −s will lower the grade.
|
Group Exercises Rubric |
Group exercises will be graded on a simple
✓, −, 0 scale:
✓ |
- made reasonable progress, and
- generally on the right track
|
− |
- insufficient progress, and/or
- significantly off-track
|
0 |
- very little or no progress, and
- not much effort (not on task)
|
"Reasonable progress" is not meant to be a high bar, but rather one
that is well within reach if you are prepared for class and work on
the exercises during the allotted time.
Up to three 0s (corresponding to days with absences) will be
dropped. Letter grade equivalents will be approximately
90% ✓ = A, 80% ✓ = B,
70% ✓ = C, 60% ✓ = D.
This assumes that the other scores are −; having 0s instead of
−s will lower the grade.
|
Being Successful |
Programming can be a lot of fun (and it's great to
be able to point to something you created), but it can also be
challenging to learn. Here are a few tips:
-
You have to memorize the syntax and semantics of each
programming construct. This is akin to memorizing
vocabulary when learning a foreign language - you can't express
yourself without having the vocabulary, and the computer doesn't
allow any room for error. (Note that this doesn't demand that
you always write programs without error - but you need to know
the correct syntax and semantics in order to understand and fix
errors that arise.)
-
Practice is essential. Blowing off warmups or skipping
an assignment means that you haven't had as much exposure to the
topic and, given the cumulative nature of the material, means
you'll have more trouble on the next assignment.
-
Budget your time carefully. Practice takes time,
especially as you are learning new things. Assignments are
constructed to be as short as possible while still providing
necessary practice, but you should expect to spend a substantial
amount of time on this course. Start on assignments early -
waiting until the night before something is due will make you very
sad!
-
Get help when you need it. Odds are good that you'll
get stuck at least once during this course - not because things
are deliberately left out in order to stump you, but because Java
is too big to hope to cover every kind of error or problem that
you might possibly run into in advance. (It also doesn't help
that the computer
demands absolute correctness and tells you immediately if
something is wrong.) Syntax errors are a
common source of "impossible" problems - the compiler error
messages don't always make a lot of sense unless you know what the
correct syntax is. What to do? Spend some time trying to solve
the problem yourself, but then recognize when you are stuck and
don't be shy about asking for help. (Also, try to avoid randomly
making changes in the hopes of fixing the problem - get help
understanding the problem, then fix it.)
|