Programmming Projects
[Homepage] |
[Lab Info] |
[TA's & Tutors] |
[FAQ's] |
[Supplements] |
[Programmming Projects] |
[Sample Program Solutions] |
[Exams]
Pair Programming
All students are expected to work with a partner on the programming projects for this class.
You should also work with a partner (preferably the same one) on the in-lab exercises for
CMPS12L.
To learn a about pair programming please read
All I Really Need to Know about Pair Programming I Learned In Kindergarten.
Please email the name and email address of your partner to the teaching assitant,
Josh Whittemore no later than October 1st.
Please make the subject of the email be "partner name".
If we have not received your partner information by that time you will be assigned
a partner.
At the same time that you turn in each programming project you also need to complete
an online log, in the form of a WebCT quiz, that records how you spent your time
on the project.
You should also read the pair progamming guidelines and policy for the class.
This explains what is considered to be acceptable pair programming and what to do if you have problems with your
partner.
Programming Assignments
You must follow the programming style guidelines listed
here.
Programs are penalized 1% of the total for each hour they are late up to a maximum of 48 hours late.
After 48 hours programs will not be accepted or graded.
When the due date/hour is approaching, the program should be submitted in whatever form it is in -
it is possible to receive some partial credit for a program that
is not working. WebCT will allow you to make repeated submissions up until the actual due date/time.
NOTE: You will NOT be allowed to make a late submission if you have submitted something on time.
You are strongly encouraged to submit something
well in advance (many hours or better a day) of the actual deadline.
- Assignment #1 - Conditional statements - a Letter Home: Due October 7th at 10pm.
- Assignment #2 - Loops - Encryption: Due October 21st at 10pm.
- Assignment #3 - Functional Abstraction(Methods) - Twenty-One: Due November 4th at 10pm.
- Assignment #4 - Arrays - A Histogram: Due November 18th at 10pm.
- Assignment #5 - 2D Arrays and Objects - Scrabble: Due December 2nd at 10pm.
Grading
Programs will be graded both on corrrectness and style (see the class
style guidelines).
Every program starts out with 100 points. Points are deducted as follows.
- 1 point for every hour the program is late, up to a maximum of 48 hours. After 48 hours the program will not
be accepted or graded.
- 5 points: Fail to complete the webct log for this assignment.
The deadline for completing the log is 1 hour after the homework deadline.
- up to 50 points: Woefully incomplete implementation. This is intended
to prevent students from getting 50 points for a stylistically correct nearly
vacuous file. It will not apply to any program that made a serious attempt to
implement all required features.
- 100 points: Including code from any source other than the identified (at the top of the file) creator(s)
without proper attribution.
Correctness/Functionality (maximum deduction 50 points)
- 20 points: Fails to compile without syntax errors.
- 10 points: Fails the test case provided in the program specification.
- 10 points: Fails to produce (mostly) correct output for any non-trivial input.
- 10 points: Assignment specific correctness criteria. See the specific programming assignment specification.
Style (maximum deduction 50 points total, 10 points for any one category): Note that some of the following
refer to language constructs you will be learning about during this course. If a style requirement mentions
a language construct that you don't know about (e.g. "break") feel free to ignore it until it comes up in
class. You will be responsible for following all that refer to topics covered prior to the due date of a
particular assignment. If you aren't sure if an item will apply to a particular assignment, it will never
hurt to ask. In general the items are listed in the order you can expect to have them apply.
- 1 poiint: Each occurance (up to 5 maximum)
of lines that are more than 80 characters long (including spaces). If you connect with ssh most likely the default
width of your terminal window will be 80 characters. Make sure your program looks ok there when displayed with "more".
- 2 points: Each method not preceeded by a meaningful block comment.
- 5 points: Each source file not beginning with an informative block comment including the name(s) of
the creator(s).
- 2 points: Each non-descriptive identifier (class, method, constant, or variable).
- 1-10 points: Inconsistent or inappropriate indentation or the presence of TAB characters in the source file. (Convert
all tabs to white space and check indentation before submitting. You can use the Unix command
expand.) NOTE: This does not mean that you should not use tabs when creating and editing
your source code. It does mean that you should use the
expand command to
replace the tabs with spaces before submitting your final program or use an editor that automatically converts tabs
to spaces.
- 2 points: Each "magic number." A magic number is a literal constant (with the exception 0, +1, and -1) appearing
anywhere in the source of a program except to initialize a symbolic constant (e.g. "static final int size = 5;"
is ok, "for (i = 0; i < 5; i++) ..." is not (because of the 5 not because of the 0). If a numeric literal occurs
only once, then creating a constant is not mandatory but still often helps with documentation.
- 2 points: Each use of a series of if-statements (without else clauses) when an if-else is called for.
- 2 points: Each use of "break" in a loop when the loop predicate could easily be modified to handle the
loop temination without a break.
- 5 points: Using an integer where a boolean is called for. E.g. don't use "while (hasMoreInput == 1)...", use
"while (hasMoreInput) ...".
- 5 points: Each unnecessarily long method (over 50 lines is definitely long, under 25 is almost certainly safe).
- 5 points: Each global variable other than a static final... used to create a symbolic constant.
- 5 points: Each occurance of a repetitive sequence of lines that could/should be easily converted into a method.
[Homepage] |
[Lab Info] |
[TA's & Tutors] |
[FAQ's] |
[Supplements] |
[Programmming Projects] |
[Sample Program Solutions] |
[Exams]
This page maintained by Charlie McDowell
Email regarding this site.