Programming Assignments
CIS29 - Joe Bentley - Winter 2021
Suggestions
The programming assignments
are the most important part of the course (along with the group
project). It is through the programming assignments that you
will gain broad experience in the concepts presented in the class.
You should definitely not put off the assignments. They will each take
between 4 and 8 hours each.
You should allow enough time to get stuck and be able to seek help. You
should take advantage of the lab time and office hours
to get questions answered from the instructor.
Under no circumstances may you copy someone else's program.
You may get help
from another student, friend, or whomever, providing you can
independently write the code by yourself. If you can't do that, you
don't own
the code, and you may not use it.
Do not hack (or guess) at
a solution. You can't really wear
your compiler down. If you have to
guess (or try this or that), then you don't know what you are doing and
you should have asked for help.
- It
is fair to ask for clarification of the assignment details.
- It
is not fair to ask the instructor how to write a specific requirement
of the assignment.
- It
is not fair to have your assignment checked (before grading).
- It
is not fair to ask for extra time on the assignment. And this
applies to when you get sick or have some other urgent problem.
That is why your lowest assignment grade is discarded.
Email Help from the
Instructor
- Do not procrastinate. The instructor is most
likely not available during the day that the assignment is due.
The instructor is not usually available after 9 pm.
- If you have a question about a compiler error, include a
copy of your code in your email.
- Don't expect help with lots of compiler errors.
The instructor can probably help you with the first error in
the list. If you compile often, your list of errors is
probably not that long, and it's easier to isolate the error.
- Make sure your questions are specific, not vague.
"I don't know where to begin" is not a fair question to ask.
- A fair question is often, "how do I ...?", or "how would I
write a function to ...?".
- Make sure you read the entire assignment description before
you dive in. You should have a pretty good sense of your plan
before you start writing code.
How they are graded
Assignments are worth 20
points each. There are seven
assignments. Your lowest
grade will be
discarded.
Hence, there is a possible 120 points for the assignments.
Since
your lowest grade is discarded, you may miss
one assignment without penalty, you should save that
assignment for
an illness or an urgent situation.
Unless otherwise stated,
all assignments must be submitted by
email with the source code added as an attachment.
The email containing the assignment should be an original
email
and the attachment should be named ass#.cpp (where # is the assignment
number).
Assignments are due at the
beginning of the class meeting on the due date
specified. Assignments will be accepted late with a 5-point penalty if
they are received within 24 hours of the due date. After that
time, they will not be accepted for a grade.
Assignments
will be tested using either the Code::Blocks on Windows or a gnu
compiler on Linux. Assignment that fail to compile or run on
either
compiler will be penalized.
Assignments will be graded
according to the following
criteria:
- Assignments that do not compile will not be
accepted.
- For multi-part assignments (most are of this type) each
part is given specific point values. Therefore, if you are unable to
complete one (or more) part(s) of the assignment, you should submit it
anyway for partial credit.
- Specific program specifications will be look for. For
example, if you are asked to write a specific function, if it is not
present or does not adhere to the requirements, you will be penalized.
You may know a better way of solving the stated problem, but you will
be
graded on the specific program requirements.
- Specific statements (or functions) will be looked for in
each assignment. These will be worth 1-5 points each.
- Assignments that do not match the sample output
provided will be penalized at least 3 points.
- Incorrect syntax errors will be penalized 1 point each.
- Use of non-"standard" C++ code without documentations
will be penalized 1 point.
- Missing header files will be penalized 1 point each. Do not use the <bits/stdc++.h> header file.
- Missing file open checks 1 point each.
- Use of C code (assignment rejected or occurrence is penalized one point each)
- Use of C-header files
- Use of defined constants (#define) without authorization or dcumentation
- Use of C-style casts
- Use of C code (e.g. printf, malloc, fscanf, ...)
- Use of global variables will be penalized 1 point each.
- Sloppiness or inconsistent style will be penalized 1-5
points.
- Use of stringstream classes (istringstream,ostringstream,
or stringstream) in the first two assignments 3 points
- Use of a variable length array will be penalized 1 point
each.
Finally
- Be proud of your assignment. If you are not proud
of it, then
you didn't do it correctly.
- You don't really need the
instructor to grade your
assignment.
You know how you did. Do not ask the
instructor to
check your assignment unless you are turning it in for a grade.
- Compile and test as you proceed through the assignment.
It is
almost always a mistake to write the whole program, and then expect it
to work as planned.
- In every class, there are students with good assignment
grades, but do
poorly on the midterm and final. The test scores cause the
grade to drop, sometimes one or two letters. When this
happens, there is always the question, why? Why didn't the
student learn with the assignments? Did the student copy
someone else's code?
- If
a student is suspected of copying an assignment, the suspected student
may be interviewed and asked to explain their solution. If
they
are unable to explain the code, the suspected student will receive a 0
grade for the assignment. If the student whose assignment was
copied allowed the copying to occur, that student will also receive a 0
grade for the assignment.