|
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: 8% (approx 0.45% each) - a few of the lowest grades will be dropped
- Syntax Quizzes: 9% (approx. 1% each) - lowest grade will be dropped
- Class Participation and Group Activities: 5%
- Labs: 40% (4% each)
- Exams: 18% (6% 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 1/3 of a
letter grade (3.3%) from the final 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.
|
|
Coding Standards |
Following reasonable conventions is important for
readability of your code. The course
coding standards specify the particular conventions you should
use in this course. You will be graded on how well your programs
adhere to these standards.
|
|
Warmups Rubric |
Warmups will be graded on a simple
✓, −, 0 scale:
✓ |
- all questions answered,
- explanations are provided for all answers, and
- the explanations show 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,
- some explanations are given, and
- the explanations show some evidence of trying to apply the reading to answer the questions
|
0 |
- no questions answered, or
- no explanations given, or
- explanations do not show evidence of applying the reading
|
Several of the 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 and
plan to spend some time each day working on them - 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.) This is also a good
reason to work on assignments before the last minute - so you have
time to get help when you get stuck.
|
|
Need Help? |
If you are having trouble with the course material or get stuck on a
problem you can't figure out how to solve, don't just ignore it! The
course material is cumulative, and skipping a difficult topic will
make it harder to be successful with the next.
The most useful resources for this course are the instructor (during
lab, during office hours, and dropping by or scheduling a meeting) and
the department's TAs (available many evenings in the Lansing 310
computer lab). These should be your first stops if you are having
trouble with course material. For more general help, such as with
writing, study skills, or time management, the Center for Teaching and
Learning (CTL) also has resources to help you. See the CTL statement
below.
|
|
Center for Teaching and Learning (CTL) |
At Hobart and William Smith Colleges, we encourage you to learn
collaboratively and to seek the resources that will enable you to
succeed. The Center for Teaching and Learning (CTL) is one of those
resources: CTL programs and staff help you engage with your learning,
accomplish the tasks before you, enhance your thinking and skills, and
empower you to do your best. Resources at CTL are many: Study Mentors
help you find your time and manage your responsibilities, Writing
Fellows help you think well on paper, and professional staff help you
assess academic needs.
I encourage you to explore these and other CTL resources designed to
encourage your very best work. You can talk with me about these
resources, visit the CTL office on the 2nd floor of the library to
discuss options with the staff, or visit
the CTL
website.
The CTL resource most useful for this class is the Study Mentors
program:
Study Mentors
The CTL resource especially valuable to students either just
starting college OR adjusting to the demands of their choice of Major
is the Study Mentors program.
Study Mentors engage directly with each student in the process of
adjusting to new academic demands: they help you find the time you
need to engage with both your academic and co-curricular activities,
accomplish the tasks in front of you, and enhance your reading and
study time. Study Mentors may be especially important for those of
you who are involved in many activities; work on or off campus; are
studying for Teaching Certification, graduate school exams, or
prepping for fellowships; or who have one or more unusually demanding
courses on your schedule. To meet with a Study Mentor, one option is
to go to the TutorTrac link provided on
the CTL
webpage and make an appointment. You can also contact Sam Vann at
vann@hws.edu, or drop in at the CTL office on the 2nd floor of the
library.
|