Introduction
Assignments
Late Submissions
Late submissions will be reduced by one letter grade (1 point off 4-point assignments; 2 points off 8-pouint assignments) for each DAY (or partial day) late (no exceptions without timely prior coordination with the instructors). See the grading policy for assignment grading details.
Note
If you expect any issues with turning in work on time, please contact the instructor as soon as you know. If I know in advance about travel, expected high workloads or other issues, I can work with you. However, letting me know a day or two before an assignment is due is not acceptable (If an emergency occurs, please let me know as soon as possible afterwards.)
Note
If you encounter issues while trying to submit your assignment, please immediately send me an email with your submission zip and a note stating that Canvas is being your best friend. If you submit in this manner, I will not count your submission as late.
Note that the easiest way to get a lower grade is to turn in your assignments late. If you know that something is coming up (business/vacation travel, expected very busy week at work, medical, expected baby) please let me know and I'm happy to work with you.
Commit Often!!!
Note: I highly recommend that you store your code in a version control system such as git. However, if you host your project on a public site like github, gitlab or bitbucket, you must make the repositories private! Any non-private repositories that I find online will automatically set your grade to "F" for sharing code.
Be sure to control your source code! Lost code will not be accepted as an excuse for late or missing assignments.
General guidelines for grade ranges
These are general guidelines, not absolute descriptions of a grading level. Your overall grade on an assignment depends on the overall quality and functionality of your submission. Again, these are general guidelines. You can get lower grades for very significant problems in your submissions and very late submissions.
Letter Grade | Common Reasons for the Grade |
---|---|
A | On time AND Working AND Good design |
B | Missing required functionality Not quite working Bad design/bad style One day late (but would have otherwise been an "A") |
C | Many missing functions Will not compile Will not execute properly Very bad design One day late (but would have been an "B") Two days late (but would have been an "A") |
F | Little apparent effort Plagiarism Three or more days late Not turned in |
I grade on the following aspects of your submissions. Note that there is no specific percentage allocation for each of these concepts.
Aspect | What I Look For |
---|---|
Design | Does the design use the patterns discussed in class properly? Does the design fit the problem? Is the program designed with a maintenance programmer in mind? Can I determine why you did things the way you did by reading code and comments? |
Function | Is all required function present? Is any non-required function present? (grade deduction) Does present function work properly? |
Style and Coding Conventions | Is the code readable? Can I easily figure out what it's doing just by reading the code? Does the code follow the required coding conventions? Note: Not following the required coding conventions, even once in a submission, maximizes your assignment grade at A- |
Timeliness | Was the assignment submitted on time? one day late = 1-point grade deduction two days late = 2-point grade deduction ... |
Note
I expect your assignments to follow the approaches I demonstrate in the class examples. When I see other approaches in your submissions, it sends up warning flags for me that you may be plagiarising (I've caught several students this way). I'll spend a good bit of time examining your code and online code that feels similar. Sometimes I'll notice approaches that I used to teach in previous terms, and then find a previous-student submission that matches.
Please make my grading easier and your grades safer - follow the class example approaches and don't copy code from other students in previous or the current class sessions.
Violation of the academic integrity policies will result in a minimum penalty of a 0 for the assignment in question, but there could be higher penalties depending on the circumstances.
Coding Conventions
All assignments must observe the following coding conventions.
Why? I read your code
Sometimes your code doesn't work correctly. Before I decide on the grade to give you, I carefully read the code to try to figure out why it didn't work. If the reason is a small, subtle thing, I'll often give more credit (rather than simply saying "doesn't work; you get a C") I often have to do this for multiple assignments. If the code is readable, using meaningful variable, method and class names, I can often find the problems more quickly.
-
Indentation must be consistent. Use either leading spaces or tabs, but not both!
-
All type names must follow Upper-Camel Case:
ShoppingCart
ObjectDrawingApplet
-
All variable and method names must follow Lower-Camel Case:
drawObject()
numberOfObjectsOnScreen
-
Type, variable and method names shall be a series of full words, not abbreviations or single letters.
- Standard acronyms are acceptable (such as
url
orhttp
), but names likec
are generally not acceptable. If you aren't sure whether a name is acceptable, feel free to ask me, but remember the rule of thumb: it should sound exactly like what it's being used for. - Some Exceptions (based on common, understood usage)
- integer counters in loops can be named
i
,j
,k
- the "current number" for walking through an array or counting items can be
n
- e for an exception in a catch block
- integer counters in loops can be named
- Standard acronyms are acceptable (such as
-
All classes and interfaces must be contained in a Kotlin package
-
All Kotlin package names must be completely lower-case and start with
lastname.firstname.hw#
where the#
is the homework number. For example, I might have a project namedstanchfield.scott.hw4
(with the same Android package name) that contains Kotlin packages:stanchfield.scott.hw4 stanchfield.scott.hw4.model stanchfield.scott.hw4.database
-
All projects must be named
HW1
,HW2
,HW3
and so forth -
All submission zip files must be named
lastname.firstname.HW1.zip
,lastname.firstname.HW2.zip
, etc -
All string literals that would appear for the user (typically text in TextViews, dialogs, toasts, etc) must be externalized into the
strings.xml
file. This is a really good habit to get into upfront, and you should always do this in any application you create to make localization simpler.
Note
This means all user-facing text. Any string constants that the user could see, whether used in your XML files or Kotlin code, must be externalized.