Andrew hurd, assessment in an intro to programming course
1. Assessment in an Introduction to
Programming Course
Andrew Hurd
Assistant Professor
Hudson Valley CC
Troy, NY
2. How do you assess your students’
programming process?
• As educators do we look for a better way to
assess our students?
• What about coding over time?
• What about CodeCraft?
• In an intro to programming class most
students don’t have software engineering
• Most of the time they don’t know a SDLC
• Most classes are focused on learning syntax
3. Grade break down
• 10% - Average of quizzes (lowest quiz
dropped)
• 15% - Average of Homework/Hybrid
Assignments/Discussion boards
• 50% - Average of programming projects
• 25% - Final Exam
4. Too much to READ!
• Programming Projects - Programming projects will be
assigned throughout the semester. These projects will
be in addition to the homework that will generally be
due. The programming project will be worth 20 points
each as indicated on each exercise. The due date for
the project will be given when the project is given.
CodeCraft - Part of being a professional programmer involves
using professional tools and techniques. It's not enough to
write code that works; you also need to develop in ways that
reduce the likelihood of errors, increase your ability to
communicate your intentions with other programmers, and
improve your ability to understand and improve your own
programming habits. Within each programming assignment a
portion of the final grade will be assigned to code craft.
5. What about coding over time?
• Using a CM tool to judge CodeCraft
– Introduction to programming class using GIT
• Students need to download the software
– git-scm.com
• Three basic commands needed
– git init
– git add .
– git commit –m “comment”
6. What is the process?
• Student creates a folder either with the
GIT bash shell or in their OS.
• In the GIT bash shell they navigate to the
folder and type git init
– This creates the CM repository
• They open their editor and create their
source code and save it in the same
directory
7. What is the process? (cont…)
• EVERY time they save their source code
they do two steps in the GIT bash shell
– git add . (don’t forget the period)
– git commit –m “comment here”
• Ensure the students are adding and
committing their code
8. How do students turn in code?
• They compress the folder
– Windows compression
– Winzip
– Any other tool that will compress the folder
– MAKE sure if they are using a third party
software like Winzip they select add all
system and hidden files
9. Git Visualization
• Created by Brian Danielak
https://github.com/briandk/gitvisualizations
There is some basic setup. A one time process.
See the readme file in the repository.
10. So what can you do with it?
# generate git visualizations
find ~/Documents/studentcode/ -type d -
name '[^.]*' -maxdepth 1 -exec python
~/gitvisualizations/RepoStatistics/RepoStatis
tics.py {} --since='2013-01-20' ;
11. # remove class files
find ~/Documents/studentcode -type f -name '*class' -maxdepth 2 -exec rm {} ;
# remove temp files
find ~/Documents/studentcode -type f -name '*java~' -maxdepth 2 -exec rm {} ;
# to compile all student's .java files (you'll see any compile-time errors with path info)
find ~/Documents/studentcode -type f -name '*java' -maxdepth 2 -exec javac {} ;
# clean up git visualizations
find ~/Documents/studentcode -type f -name '*csv' -maxdepth 2 -exec rm {} ;
find ~/Documents/studentcode -type f -name '*pdf' -maxdepth 2 -exec rm {} ;
12. Extracting just the comments
• # This gives a short-hash (%h), a simple date, and just the subject line of
the commit
– git log --format="%h | %ad | %s" --date=short
• If you use the format=" " formatting string, some common placeholders are:
– %s: subject
– %f: sanitized subject line, suitable for a filename
– %b: body
– %B: raw body (unwrapped subject and body)
– %N: commit notes
– %an: author name
– %aN: author name (respecting .mailmap, see git-shortlog(1) or git-blame(1))
– %ae: author email
– %aE: author email (respecting .mailmap, see git-shortlog(1) or git-blame(1))
– %ad: author date (format respects --date= option)
– %aD: author date, RFC2822 style
– %ar: author date, relative
13.
14.
15.
16.
17.
18. Conclusion
• I have a form of assessment that looks at the
process of the coding
• While the final product is still important, I can
try to understand their process
• Cheating?
• If a student gets stuck, they compress their
repository and sends it to me
• I can address exactly where students have
gone wrong.
• I can roll back their repositories if need be.