Tentative plans call for four programming assignments, in a variety of languages (probably some subset of Ada, C, C++, C#, Java, OCaml, Prolog, Python, Ruby, Rust, 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 after they are posted to make sure that everything has
been entered correctly.
Note that grade calculations are made on a private spreadsheet, not in
Blackboard itself; if you try to calculate your running total for the
course using the numbers found in Blackboard, you’re likely to get
it wrong.
There will be opportunities for extra credit on many 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.
Three students (out of 52) benefitted from this last spring;
five (out of 70) did in the fall of 2023.
Lecture attendance is mandatory. Workshop attendance is mandatory for
students in CSC 254 and recommended for students in CSC 454.
Both will count heavily toward your end-of-semester grade.
(Students in 454 who want to opt out of workshops must
email the instructor before the add/drop deadline).
Please arrive for all sessions on time.
Assigned reading in the text is also mandatory, and should be done
before the associated lecture.
Toward this end there will be per-chapter quizzes based on the
“Check Your Understanding” questions in the
book. Each quiz must be completed by the beginning of the final
lecture for its chapter; see the course
schedule for details.
As a general rule, if there is lecture material that you don’t
understand, make me stop and explain it.
There are probably a dozen people sitting around you who
don’t understand it either, but aren’t brave enough 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.
We will be running workshops in CSC 254, much as in 171-2-3—small,
team learning sessions hosted by the TAs.
Experience suggests that workshop participation
makes a huge difference in what students get out of the
course—and, correspondingly, in the grades that they receive.
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 2/454 is governed by the College
Academic Honesty Policy, the
Undergraduate Laboratory Policies
of the Computer Science Department, and the
University’s Acceptable Use Policy for Information Technology.
I helped to write all three of these policies personally. I
believe in them strongly and will enforce them aggressively.
The following are details specific to CSC 2/454.
Exams and quizzes in CSC 2/454 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 (and your partner, if you
have one) transform the ideas into
substance by yourself. Among other things, this means that you
must leave any cross-team brainstorming sessions with no written or
electronic notes—only what you carry in your head.
If you use the work of others (e.g., you download a function from the
web at the last minute 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 open source, and (2) you
must label what you copied, clearly and prominently, when you hand it
in.
You will of course get points only for the parts of your assignment
that you wrote yourself.
To minimize the temptation to steal code, all students are expected to
protect any directories or on-line repositories in which they do their
work.
For purposes of this class, academic dishonesty is defined as
Note that grades in CSC 2/454 are assigned on the basis of individual
merit rather than relative standing, so there is no benefit—not even a
dishonest one—to be gained by sabotaging the work of others.
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.
In 2021, I had the misfortune of needing to report more than 20 students
to the College Board on Academic Honesty. All but one received
major penalties—often failing the course. Please don’t
be on the list this year.
Generative AI tools can create or modify source code in useful ways in
response to narrative prompts. Using these tools is
an essential part of the skill set of any professional programmer.
At the same time, just as children need to learn to add
and multiply despite having calculators on their phones, programmers
need to be able to write their own code.
The projects in this course are designed to help you learn. If an
AI tool writes your code, you won’t learn what you need to from the
course. I therefore strongly discourage the use of AI
tools in this particular course. That said, if you believe
that one of these tools will actually help you learn, then you are
permitted to use it—but only if you very clearly explain
exactly how you did so in the README file you turn in with your
assignment.
Be sure to identify the parts of the code that should be considered
your work (as opposed to that of the AI tool). As noted above,
you will receive credit only for your own work.
Failure to disclose the use of AI tools will be considered academic
dishonesty.
I reserve the right, whether I suspect undisclosed use or not, to ask
you detailed questions about your code and to reduce your grade if you
don’t understand what you turned in.
In accordance with University policy, the law, and simple fairness, the
instructor and TAs are committed to respecting and welcoming students of all
backgrounds and abilities.
More broadly, they are committed to the University’s Vision and
Values.
Any student requiring accommodation or encountering any barrier to full
participation in this course due to a disability should contact the
Office
of Disability Resources. Email
disability@rochester.edu,
call 585-276-5075, or visit the office in Taylor Hall.
For more information about the full range of University policies,
services, and resources around diversity and inclusion, or to report an
incident of harassment, discrimination, or sexual misconduct, visit the
website of the
Office of University
Engagement and Enrichment.
Extra Credit
Attendance and Class Participation
Workshops
No Late Assignments
Academic Honesty
A Special Note on Generative AI
Disabilities, Equal Access, Diversity and Inclusion