Programming Assignment Logistics
An important goal of the assignments is to teach students about design
alternatives by comparing and contrasting a number of examples of
designs based on different paradigms. Data structures taught in CS
201 will be used to reinforce the implementation of these
projects.
Programming assignments will be done in C++ on Linux, MacOS, and/or
Windows and will be done individually by each student.
Students are assumed to have competence in C++ at the level taught in
CS 2201. We will present lecture material on C++ early in the
course.
To encourage you to write well-designed software, we reserve the right
to change the assignment specifications at any point before the due
date. Expect this to happen several times during the semester. If
you have written your program in a modular fashion the changes will be
trivial to implement.
The programs will be graded using the following criteria:
- 40% execution correctness (i.e., produces the right answer, doesn't crash, etc.)
- 30% structure (e.g., modularization, information hiding, etc.)
- 10% insightful programming (e.g., developing reusable class components, etc.)
- 10% consistent style (e.g., capitalization, indenting, etc.)
- 10% appropriate commenting style
Students will commit their initial submissions to their GitLab
repository. The course instructor will read all initial submissions
and provide students with detailed comments on what to fix.
Instructor comments may or may not detect all problems with the code -
they are intended to help students address the most comment problems
encountered in the assignment. Students are then responsible for
fixing any problems identify (and other problems they identify based
on their testing) and resubmitting their solutions to the graders
within a week after they receive the initial comments, along with
responses that outline how they addressed the initial comments from
the course instructor(s).
This assessment process is more generous (and thus requires more work
by course instructor) than the typical process used to assess student
programs in other CS classes, here is a summary of the policies for
initial submissions, resubmissions, and final grading:
- Students are responsible for ensuring that all their program
files, tests, and project build scripts are commited to their GitLab
repository on time.
- Initial submissions that aren't turned in by the due date/time
will not be reviewed by the course instructor(s). Moreover, students
who do not submit their assignments for review on time will receive a
50% deduction on their final grade for the assignment.
- The code submitted to the course instructor(s) must compile
correctly "out-of-the-box" and it must make a "good faith" effort to
address all the "TODO" comments and follow the specification.
Submissions that do not meet these criteria will not be reviewed and
will be subject to the 50% deduction described above.
- Students are responsible for addressing comments from the course
instructor(s) within a week after receiving these comments. If the
comments are not addressed within this time period the final grade
will be based on the original submission using the version of the code
in GitLab.
- Please make sure to keep the original "TODO" tags and review
comments in your revised submission, along with a brief synopsis of
how you address these comments so evaluators will know what you were
supposed to correct. Note that the initial evaluation may not
identify every problem in your code, so make sure to also carefully
examine the "frequently made mistakes" synopsis that's posted after
all the assignments have been initially reviewed to ensure you have
fixed many problems.
- The code submitted to the graders after addressing the initial
comments from the course instructor(s) must build and pass all of
the regression tests. If not, points will be deducted, based on the
grading criteria summarized above.
- The code should also be well-written and well-commented. If not,
points will be deducted, based on the grading criteria summarized
above.
Students are expected to submit programs that meet these criteria,
i.e., it's not the instructor(s) or graders responsibility to fix
these problems for the students and engage in an iterative
resubmission process. Moreover, because we carefully inspect,
compile, and run all submissions, we quickly identify students who do
copy each others' programs. Please make sure to do your own work,
therefore, to avoid violating the Vanderbilt University Honor
Code.
Back to CS251 home page.