Assignments & Assessment
Assignments
Required work: Students will complete a series of programming assignments linked to class materials. Specifically, there will be six homework assignment and a final project. Homework 1 is evaluated on a Pass/Fail basis. Subsequent homework assignments (2 to 7) are graded using a point system and a rubric, described below. See the Homework section of this website for more details on each assignment. Assignments will initially be detailed and come with starter code or an initial version of the program where you need to fill in the blanks to make it work. As the course moves on and your skills become more developed, less help upfront will be provided.
Deadlines and late work: All assignments are due at 11:59 PM Chicago time (submit the link to your GitHub repo on Canvas). There will be a 15-minute grace period. After that, late submissions will be penalized by half-a-point for every day (24h) they are late. For example, if your score for a given assignment is 14.5 points and you turn it in one day late, your final score will be 14 points. Quarter system courses are intense and fast-paced; late work will hinder your learning.
Missed Assignments: We expect students to submit all assignments. A missed assignment is worth 0 points (0%) and, as such, will negatively affect your final grade. Please reach out if you miss an assignment due to extraordinary circumstances (illness or emergency). I may grant additional extensions on a case-by-case basis. Whenever possible, inform me before the deadline. Things like having a heavy workload in a given week or starting a given assignment too late do not qualify as extraordinary circumstances.
Incomplete Assignments: If more than 25% of the assignment is missing, we won’t grade it and will treat it as a missed assignment (see point above). Otherwise, we will grade it with a penalty for each element of the rubric.
Plagiarism: While students are encouraged to assist one another in debugging programs and solving problems, and are allowed to use online resources, it is imperative that students learn how to write code, debug, etc. for themselves. That is, students need to understand, write, and submit their own work. We will run random checks, and if we detect plagiarized code, the whole assignment will be graded as 0. Make sure to read our Plagiarism policy for details.
Evaluation Philosophy
I do not think that grades are the best way to support learning and demonstrate progress. I find that numeric scores on assignments tend to cause students anxiety if they do not achieve a perfect 100%. However, this university, like most education systems, require instructors to assign each student a letter grade at the end of the course.
To alleviate some of the anxiety and improve the transparency, consistency, and fairness of grading, we use a detailed rubric (below) to evaluate all submitted work. Most importantly, we encourage students to reach out and ask for additional feedback on what has been done well and what can be improved.
Remember, a numeric score does not evaluate your worth or intellectual abilities in general; it is simply an assessment of a specific piece of submitted work.
Rubric
Your assignments will be evaluated using the rubric below (also posted on Canvas). In addition, each assignment will have specific guidelines that further explain our expectations. These will be posted in the assignment itself.
Your assignment will score Excellent, Very Good, Good, Needs improvement, or Not sufficient on the following five categories:
Coding style: coding style pertains to stylistic issues, not to whether your code works. It evaluates how well the code follows the convention for R code and how consistent it is. Examples include clarity of the code to read for a person who has not written it, use of comments (code should never be over-commented, nor under-commented), proper variables names, understandable/logical code organization, etc. See here for more and why this matters.
Coding strategy: by coding strategy, we mean the following: the logic of your code (how it solves the problem); its correctness; sophistication (depth of the solution); use of class tools/techniques (e.g., conditionals, functions, tidyverse); and its efficiency in minimizing repetitions.
Presentation: for assignments involving data visualization or presentation (tables, graphs, descriptive stats, data analyses), this evaluates the effectiveness of both the graphic execution and the conceptual choices in presenting data. In all assignments, presentation also assesses your proficiency with Markdown syntax.
Achievement: evaluates your understanding of the concepts/tools required to complete the assignment (how well you master them) and your ability to use and go beyond the basic tools; it praises extraordinary work produced in the assignment.
Reproducibility: evaluates how well the assignment is in compliance with the course convention for reproduciblity in this course (e.g., whether we can access your repo, whether all required elements are submitted, your use of Markdown and RMarkdown, of commit messages, README, etc.)
To achieve Excellent in a given category, all requirements must be satisfied. For the other categories, it might be that only one, or more than one, requirement is missing. For example, you could achieve Very Good on “Coding Style” if you are following all coding conventions, but the code could benefit from more refinement or is inconsistent.
Details on how each rubric score (“Excellent”, “Very Good”, etc.) translates into points and grades for each assignment are provided on Canvas. Roughly “Excellent” translates into A or A+, “Very Good” into A-, “Good” is B or B+, “Needs Improvement” is C, and “Not sufficient” is below C.
Your final grade is the cumulative score of all submitted work throughout the course. We use the following grading scheme to determine your final grade: A (96-100), A- (90-95), B+ (87-89), B (83-86), B- (80-82), C+ (77-79), C (73-76), C- (70-72). Grades below 70 are dealt on a case-by-case basis.
If you plan to take this course as Pass/Fail, please email me to create a shared plan that aligns with your needs and the course expectations. A “Pass” in this course requires a minimum grade of C-. You can choose the Pass/Fail option at any time before the last assigment is graded and final grades are released.