All your programming assignments will be posted here. Look for
requirements that apply to all assignments below.
||January 26 at 11:59 pm
|Introductory project - acclimate yourself to project
Input file: project0.txt
Output file (for given sample input): project0.enc
TA in charge: Sarat Rallapalli
|February 16, 2012 at 11:59 pm
TA in charge: Yi-Chao Chen
|March 23, 2012 at 11:59 pm
TA in charge: Nikhil Panpalia
You are not allowed to convert numbers into strings or vice
versa. Only exception: Reading numbers from the key file.
Otherwise, you are not allowed to use Strings in your
|April 27, 2012 at 11:59 pm
|Pattern Matching: Implement the brute force algorithm, as
well as the Rabin-Karp, KMP, and Boyer-Moore algorithms (as
presented in class - you will find various differences in
algorithms/code you see online)
TA in charge: Sarat Rallapalli
CS 337 - Programming Assignment
We run MOSS on each assignment, and we include projects that were
submitted during previous semesters of this class. Please
make sure that you carefully read the pair programming rules. If
your partner writes large parts of the program alone, then you are
submitting code as your own that you did not write, and this is
academic dishonesty for both you and your partner.
Part of academic honesty on the programming assignments is following
the pair programming rules. You are NOT allowed to divide the work
on the project in half, with you and your partner each doing parts
of the assignment separately. That is cheating, since you did not
contribute to half of the assignment. You are responsible for the
entire project that you and your partner submit. Make sure that you
have electronic copies of the project, with regular updated
versions, even if you use your partner's machine while coding. All
communication with your programming partner should be done via
email, so that you have a log of your communication if there are
problems. Talk to the instructional staff immediately if you are
having difficulties with your partner. If you and your partner
submit work that you did not contribute to writing, you will receive
an F in the class.
The partner feedback file must be completed when you submit your
project. These files help us identify students who are not working
cooperatively with programming partners, or doing their share of the
work. Make sure that your description of your partner's contribution
are accurate. Negative reports from your partners may result in you
being required to work alone on the remaining projects (with the
There is a 10% penalty for working alone on a project without being
granted an exception to the pair programming requirement. You must
ask for the exception within three days of the assignment being
posted. Use the discussion board to find a partner. If you do not
have a partner one week before the project is due, you must work
alone and take the 10% penalty.
code copying. It ignores differences in variable and method
names, re-arrangment of code, shuffling blocks, and changes in
spacing and comments. I suggest an experiment: get a Moss
account (http://theory.stanford.edu/~aiken/moss/), take one of
your class projects, and do everything you can to modify it so
that it looks different from the original to anyone who might
read it. Then: submit both programs to MOSS. This is what we do
with every project you submit in this class.
All projects must be completed with a partner, and you your partner
must follow the pair
programming rules. Make sure that you and your programming
partner have compatible schedules, since you must spend almost all
of your time on the project working together. Each pair will turn in
one project solution. Once you choose a partner for a project, you
are not allowed to switch partners. If you decide that you cannot
complete the project as a pair, you must notify your TA, and each
student must complete the project individually. You may not switch
to a different partner. When you are working on a pair project, at
least 90% of your time on the project must be spent in the lab with
your partner, and you must take turns sitting at the keyboard and
typing. Use the class discussion board if you need to find a partner
for a project. You are
required to have a different partner for every project.
After each project is completed, you and your partner will submit a
feedback sheet on each other, evaluating each other's contributions
and commitment to the assignment.
No lab assignment may be turned in more than 2 days late. If the
project is due at 11 pm on Thursday, it cannot be submitted after 11
pm on Saturday. You will have 3 slip/late days in 1 day units (i.e.,
1 minute to 24 hours late = 1 slip day, etc.) for the projects, but
you are not allowed to use slip days on the first or last
assignment. You may divide the 3 slip days across the remaining
projects however you like, subject to the 3 day total maximum and
the 2 day maximum per project. Add the following to the header in
your .java files:
Pair Name 1: Slip days used for this project: ____ Slip days
used (total): ____
Pair Name 2: Slip days used for this project: ____ Slip days
used (total): ____
The assignment descriptions will specify which files should be
submitted. Assignments must be turned in via the turnin
If you submit a project late (using slip days) you must email the TA
when you submit your files to let them know that your project is
ready for grading.
Programming assignments will be graded within 10 days of the
due date. Within 10 days, your program grade will be posted on
Projects, except for the first one (project 0), are equally
weighted. Programs are graded on correctness, design, clarity, and
As discussed in the class syllabus, programming assignments will be
checked for plagiarism and copying using Moss. Sharing code or
algorithms with another student or obtaining assignment solutions
from any source is cheating. The penalty for cheating is an F in the
course and a referral to the Dean of Students office.
More on Academic Honesty - taken from the CS
department Code of Conduct.
"The University and the Department are committed to preserving
the reputation of your degree. It means a lot to you. In order to
guarantee that every degree means what it says it means, we must
enforce a strict policy that guarantees that the work that you
turn in is your own and that the grades you receive measure your
personal achievements in your classes:
Every piece of work that you turn in with your
name on it must be yours and yours alone unless explicitly allowed
by an instructor in a particular class. Specifically, unless
otherwise authorized by an instructor:
- Students may not discuss their work with anyone except the
instructor, TAs, and their pair programming partner.
- Students may not acquire from any source (e.g., another
student or an internet site) a partial or complete solution to a
problem or project that has been assigned.
- Students may not show another student (other
than programming partner) their solution to an assignment.
- Students may not have another person (current
student, former student, tutor, friend, anyone) “walk you
through” how to solve an assignment.
- When working on pair programming assignments you may work with
one other person in the class. If you do not finish the
assignment with the person you start on the assignment with, you
must both finish the assignment individually.
You are responsible for complying with this
policy in two ways:
- You must not turn in work that is not yours, except as
expressly permitted by the instructor of each course.
- You must not enable someone else to turn in work that is not
theirs. Do not share your work with anyone else. Make sure that
you adequately protect all your files. Even after you have
finished a class, do not share your work or published answers
with the students who come after you. They need to do their work
on their own.
The penalty for academic dishonesty will be a
course grade of F and a referral of the case to the
of Students. Further penalties, including suspension
or expulsion from the university may be imposed by that office.
One final word: This policy is not intended to discourage
students from learning from each other, nor is it unmindful of the
fact that most significant work in computer science and in the
computing industry is done by teams of people working together.
But, because of our need to assign individual grades, we are
forced to impose an otherwise artificial requirement for
individual work. In some classes, it is possible to allow and even
encourage collaboration in ways that do not interfere with the
instructor's ability to assign grades. In these cases, your
instructor will make clear to you exactly what kinds of
collaboration are allowed for that class."
For CS337 the policy on collaboration is modified as follows: You
are encouraged to study for tests together, to discuss
high-level approaches for solving the assignments, and to discuss
methods for debugging code. Essentially if you talk
about an assignment with someone else when neither of you is
writing code you are okay, but the moment you start looking
at someone else's source code or showing someone else
your source code you have crossed the line into
inappropriate collaboration. You should not ask anyone to
give you a copy of their code or give your code to another
student. Similarly, you should not discuss your algorithmic
strategies to such an extent that you and your collaborators end
up turning in exactly the same code. Discuss high level
approaches, but do the coding on your own. The exceptions to
- You may use any code you develop with the instructor or
- You may share additional test cases and expected results of
Plagiarism detection software will be used on all assignments
to find students who have copied code from one another.
For more information on Scholastic Dishonesty see the University