To ensure that proactive programmers can effectively grow in their knowledge of software engineering as they study topics such as data abstraction and discrete structures, the projects that they complete will be receive rapid and frequent feedback, in adherence to the grading principles set forth by Robert Talbert. Specifically, the team of proactive programming experts will conduct assessments with these principles in mind.1
- Clearly Defined Standards: All projects will have a specification that clearly defines the characteristics of acceptable program source code and technical writing.
- Helpful Feedback: Project feedback will offer actionable suggestions for ways to better ensure that a source code or technical writing more fully adheres to the specification.
- Scores Suggest Progress: The scores assigned to a project will offer meaningful insight into the progress that a proactive programmer made to more fully meet the specification.
- Reattempts without Penalty: All projects will have a completion period during which a proactive programmer may repeatedly attempt to meet the specification without penalty.
"Developers came together from all corners of the world to innovate, find connection, and solve problems." GitHub in The State of the Octoverse
To support the assessment of projects in adherence to these principles, the team of proactive programming experts will leverage several software platforms and tools. All learners will complete all of their work through an industry-standard platform called GitHub. If they have not done so already, learners should create a free GitHub account. They will use this account and the GitHub repositories associated with it to receive starter materials and submit the final version of each assignment.
All learners at will receive rapid feedback on their work through a tool called GatorGrader. The instructor will define GatorGrader checks for each type of assignment. A learner's job will be to use a programming language, like Python, to implement a complete solution that passes all of the GatorGrader checks. Learners should also complete writing tasks that demonstrate their knowledge of the technical knowledge and skills developed as part of an assignment. In addition to running the GatorGrader tool on their laptop, learners will see the results from running GatorGrader checks in the continuous integration environment called GitHub Actions that is accessible for a GitHub repository.
A learner will receive a separate GitHub repository for each project on this site. Each of these GitHub repositories will have a pull request called "Feedback" through which a learner will receive feedback from the team of proactive programming experts who will assess their work. Moreover, each assignment type has its own assessment strategy!
Learners who are not enrolled at Allegheny College are invited to complete all of the assignments on this site. With that said, those learners who are not at Allegheny College will not receive expert feedback on each of their assignments. Since these individuals will not be members of the Allegheny College GitHub Enterprise, they will need to work in adherence to the restrictions for their current GitHub plan. With that said, learners not enrolled at Allegheny College have free access to all of the assignments on this site! They can also create a GitHub repository for each project that completely integrates with an automated assessment tool designed to give them rapid feedback about the correctness of their solution. Finally, all learners are invited to join this site's Discord Server and discuss each of the assignments!
Leveraging the principles of specification-based grading, the grade that a learner receives on an engineering effort will be based on whether or not it meets the standards for technical work in the field of computer science. Instead of receiving a single numerical or letter grade for this assignment, the grade for an engineering effort will have these parts:
Percentage of Correct GatorGrader Checks Ranging Between 0 and 100: The submitted program source code must pass all of GatorGrader's checks by, for instance, ensuring that it produces the correct output and has all of the required characteristics. The technical writing must pass all of GatorGrader's checks about, for instance, use of the required Markdown language features for technical writing. For this component of an engineering effort's grade, the project will receive a percentage, ranging from 0 to 100, that corresponds to the percentage of GatorGrader checks that pass inside of the project's last before-the-deadline GitHub Actions build.
Proactive Programming Skills of Either or : An engineering effort will also receive a checkmark grade when the contents of its GitHub repository reveal the mastery of the technical knowledge and skills developed during the completion of the project. This assessment will evaluate aspects of the project including, for instance, the use of accurate and succinct source code comments and Git commit messages. This assessment will also include an evaluation of the correctness and efficiency of the submitted Python source code.
Technical Writing Skills of Either or : The responses to the technical writing questions will receive a checkmark when they reveal a mastery of technical writing skills. To receive a checkmark grade, the submitted writing should have correct spelling, grammar, punctuation, and formatting in addition to following the rules of the Markdown language. The technical writing will further qualify for a checkmark grade if the build report from GitHub Actions reveals no mistakes in the technical writing. Finally, writing that is technically accurate will qualify for the checkmark grade.
Professional Skills of Either or : An engineering effort will receive a checkmark grade when the contents of its GitHub repository reveal the mastery of professional skills such as the ability to find, leverage, and reference technical documentation and source code examples. A project will further quality for this checkmark when it contains evidence that the person who submitted it reflected on their experiences when completing the project, connected the project to their prior work, and made actionable plans for continued improvement as a proactive programmer.
Again leveraging the principles of specification-based grading, the grade that a learner receives on a programming project will be based on whether or not it meets the standards for technical work in the field of computer science as evidenced by:
- GitHub Actions Build Status of Either or : A programming project will receive a checkmark grade if the last before-the-deadline build in GitHub Actions passes and a appears in the GitHub commit log instead of an . The build status reported by GitHub Actions will only be a if the source code and technical writing in the GitHub repository pass all of the checks that were automatically executed in GitHub Actions.
Source Code Surveys¶
Again leveraging the principles of specification-based grading, the grade that a learner receives on a source code survey will be based on whether or not it meets the standards for technical work in the field of computer science as evidenced by:
- GitHub Actions Build Status of Either or : A source code survey will receive a checkmark grade if the last before-the-deadline build in GitHub Actions passes and a appears in the GitHub commit log instead of an . The build status reported by GitHub Actions will only be a if the source code and technical writing in the GitHub repository pass all of the checks that were automatically executed in GitHub Actions.
Learners at Allegheny College who wish to receive feedback on their work for any assignment should first open an issue on the issue tracker for their assignment's GitHub repository, giving an appropriate title and description for the type of feedback that they would like the instructor to provide. After creating this issue, they will see that GitHub has created a unique web site that references it. To alert the instructor to the issue's creation and that you want feedback on your work, please send it to him by a Discord direct message at least 24 hours in advance of the project's due date. After the instructor responds to the issue in GitHub, please resolve all of the stated concerns and participate in the discussion until the project meets its specification and the issue is closed.
The instructor invites learners to incrementally complete all of the learning objectives for an engineering effort, programming project, and source code survey. As long as a learner's work passes all of the GatorGrader checks before an assignment's deadline, they will receive full credit for that part of an assignment's assessment. After the deadline for project submission, all assessments for a project will be reported through a learner's GitHub repository using messages in the GitHub repository's commit log, issues raised in the issue tracker, and comments on the "Feedback" pull request in the GitHub repository.
Learners who wish to receive feedback on their work for any assessed assignment should ask questions in the same region of Github where the instructor shared the assignment's final assessment. For example, if the instructor shares the grade in a pull request in the repository for an engineering effort, then you should ask questions about your grade in that pull request, bearing in mind the need to @-mention the instructor in the body of your comment. Learners can continue to discuss the graded assignment with the instructor until they understand all the technical topics developed as part of the project.
Before you continue reading the remainder of the assessment strategy it is worth pausing to remember that the instructor will give advance feedback to any learner at Allegheny College who requests it through GitHub and Discord at least 24 hours before the project's due date! Seriously, did you catch that? This policy means that you can thoroughly understand the ways to improve your project before its final assessment!
The instructor will convert the specification-based grades that a learner received to a numerical grade for each type of assignment. The following example illustrates the calculation of a grade under the simplifying assumption that there are three of each type of assignment with the grade(s) given next to the name of the assignment:
- Assignment One: 100%, , ,
- Assignment Two: 81%, , ,
- Assignment Three: 95%, , ,
- Assignment One:
(100 + ((1+1+0)/3)*100)/200 0.833
- Assignment Two:
(81 + ((0+1+0)/3)*100)/200 0.572
- Assignment Three:
(95 + ((0+1+1)/3)*100)/200 0.808
(0.833 + 0.572 + 0.808) / 3 * 100 73.767
- Assignment One:
- Assignment Two:
- Assignment Three:
(1+0+0)/3 * 100 33.33
Source Code Survey¶
- Assignment One:
- Assignment Two:
- Assignment Three:
(1+1+1)/3 * 100 100.00
Before asking the instructor a question about the calculation of either your assignment grades or your overall course grade, please make sure that you have already consulted the GitHub repository for each assignment to see your grades and then calculated your grade using the approach outlined in this document. The instructor will use your calculations to support the discussion of any questions that you have about how to calculate either your grade for a project or your overall grade for a computer science course.
Unsure about how the instructor will assess your work? Unconvinced that this is a good approach to project assessment? If you have some ideas for improving the assessment strategy please share them in the GitHub Issue Tracker or the GitHub Discussions Forum!
Check out the article Finding Common Ground with Grading Systems that Robert Talbert wrote to explain the principles of effective grading. From your perspective as an emerging proactive programmer who wants to grow in their knowledge and skills, what are the best steps for an expert to take when assessing your work? ↩