Tentative plans call for six programming assignments, in a variety of languages (probably some subset of Ada, C, C++, C#, Haskell, Java, ML, Perl, Python, Ruby, and Scheme). Expect the workload to be heavy. You will probably write at least as much code in this class as you did in 173, and what you write will be much more subtle. Don’t procrastinate! Also be sure to read all on-line documentation carefully.
For most assignments you will have the option of working in pairs. You can also work alone if you prefer. In most cases the partners in a pair will receive the same grade, but I reserve the right to assign different grades if I have reason to believe that partners did significantly different amounts of work. Team membership will be self-selected, and can vary from assignment to assignment.
Grades will be uploaded periodically to Blackboard,
the University’s on-line course management system. Please
check your grades periodically to make sure that everything has been
entered correctly.
There will be opportunities for extra credit on most of the assignments
and exams.
Extra credit will be considered after making the first cut at
letter grades for the course. If you’re near the top of your grade
bracket, or the amount of extra work you’ve done is particularly large,
you can expect it to push you up a grade.
In Fall 2009 (the last time I taught the course), three students
received higher grades than they otherwise would have, due to extra
credit. Three students also benefitted in 2008.
Class attendance is mandatory. Please arrive on time. I expect to start
at 12:30 sharp, and late arrivals disturb the folks who are already
there.
In recent years, some students have complained that lectures
followed the text too closely, and didn't provide enough
“value added.” I will therefore be trying
something new this time around: I will assume that everyone
has already read the text, and we will discuss it as a class.
In other words, if all goes well, you will talk more—and I
less— than in the typical lecture course.
This means, of course, that
reading is mandatory, and must be
completed before the corresponding lecture.
If no one has questions or suggested discussion topics, I will call
on you—so be prepared!
As a general rule, if there’s something you don’t
understand, make me stop and explain it.
There are probably a dozen people sitting around you who
didn’t understand it either, but don’t have the nerve to say
so. Likewise, if I’m belaboring something that everyone
understands, prod me to move on.
My lecture notes are available on-line, but
please note that they come with no
guarantee. In particular, I reserve the right on exams to ask
about anything I’ve covered in class, even if it isn’t in the book or
lecture notes.
It is my strict policy not to accept late assignments.
Exceptions will be made only under the most dire of circumstances.
Note, however, that I am extremely generous with partial credit, so
turn in what you have.
Every semester I have students who let a due date pass.
When I ask them what happened they say “Oh, I didn’t finish, so I
didn’t turn anything in.” Then I have to give them a
zero. If
they had turned in even some reasonable preliminary thoughts on how
they might have done the assignment—without a single line of
code—they often could have received as much as 30% of the total
points. This can easily make the difference between letter grades
at the end of the semester.
So if it looks like you aren’t going to make a due date,
don’t keep debugging down to the wire. Stop an hour early
and take the time to organize what you have and put together a write-up
that presents it in the best possible light. Your transcript will
love you for it.
Student conduct in CSC 254 is governed by the College
Academic Honesty Policy, the
Undergraduate Laboratory Policies
of the Computer Science Department, and the
ResNet Acceptable Use Policy.
I helped to write two of these policies personally. I believe in them
strongly, and will enforce them aggressively.
The following are additional details specific to CSC 254.
Exams and review questions in CSC 254 must be strictly individual work.
Collaboration on programming assignments among team members is of course
expected.
Collaboration on assignments across teams
is encouraged at the level of ideas. Feel free to ask each other
questions,
brainstorm on algorithms, or work together at a whiteboard. You may not
claim work as your own, however, unless you transform the ideas into
substance by yourself. Among other things, this means that you
must leave any brainstorming sessions with no written notes.
If you use the work of others (e.g., you download a function from the
web at the last minute
—or copy it from a friend—so that you can get the rest of your
project working), then (1) either you must have the author’s explicit
permission or the material must be publically available, and (2) you
must label what you copied, clearly and prominently, when you hand it
in. You will get points only for the part you wrote yourself.
To minimize the temptation to steal code, all students are expected to
protect the directories in which they do their work.
For purposes of this class, academic dishonesty is defined as
I work under the assumption that students are honest. I will not go
looking for exceptions. If I discover one, however, I will come down on
it very hard.
Extra Credit
Attendance and Class Participation
No Late Assignments
Academic Honesty
