Tuesday, June 5, 2018

Popular achievements in CS 222


One of the assessible items in CS 222 (Advanced Programming) is something we call achievements. Achievements are designed to encourage student’s independent exploration of relevant course topics they choose from a provided list. My colleague, Paul Gestwicki, introduced these into the course many years ago, and I’ve chosen to keep them. Most achievements are designed to be individual exercises, although some may be attempted by small groups—usually pairs, but potentially an entire final project team.

Each student may earn up to four achievements during the semester; they must complete four if they expect to receive an A for the course. To encourage planning, a student may only submit one achievement claim per week. Students make achievement claims by sharing their artifact in a document in the course’s shared Google drive, to which they have write access, but is closed to anyone outside the course.

Every semester or so, we review the list of available achievements, adding a few new ones, while dropping others. We substantially changed the list after the fall 15 semester, but there is a core set that has remained on the list since. The achievement options have included the following items.
  • Campus Leader: For serving your campus community. Help lead or organize a campus club or event that is relevant to our course objectives. Write a reflective essay about the experience. (Added fall 2017)
  • Capstone Connector: For investigating the senior capstone. Interview a Ball State University Computer Science capstone team about their project. Write an essay describing the project, its client, and the tools and techniques used by the team.
  • Community Connector: For engaging with alumni. Interview a Ball State University Computer Science alumnus about the essential questions of our class. Write an essay about the experience.
  • Crystallizer: For being principled about software development. Read 7 Properties of Highly Successful Projects from Crystal Clear with your team before an iteration. Document how you will abide by these principles during the upcoming iteration. At the end of the iteration, write an essay reflecting on the experience.
  • Didact: For sharing discoveries. Give a five- to ten-minute presentation to the class to explain something you have learned this semester that is outside the required work. Share any slides or handouts you create in our shared folder.
  • Diversity Seeker: For discovering we’re too much alike for our own good. Search for reasons (supported by data/research) why the CS profession, and/or our CS major students are not diverse (based on gender and ethnicity). Identify potential actions that can be taken to make the Computer Science student body more diverse. Write an essay summarizing what you have found. Describe practical steps you believe we can take so that our CS Department will have an environment where all students feel welcomed and included.
  • Fair-Minded: For exploring future opportunities. Attend the Cardinal Job Fair, or an equivalent, pre-approved event. Speak to representatives from at least three companies. Write a reflective essay on the experience. (Added fall 2017)
  • Filmmaker: For using video production skills to help our community. Create and share a video to help students learn tricky concepts from a 100- or 200-level Computer Science course. I must approve the topic ahead of time.
  • Jammer: For making something delicious. Participate in a jam or hack-a-thon event. Share your experience in a short reflective essay, including your product or a link to it, as appropriate. (Added fall 2017)
  • Judge: For evaluating art and code. Participate as a judge for the CS 120 All-section Art Show. Write an essay about your experience, including a reflection on how your coding has changed since you were a student in CS 120. (Added fall 2017)
  • Open Source Contributor: For contributing to the commons. Contribute to an open source project. Contributions can take many forms, including bug reports, documentation, or source code, for example. Write a reflective essay about the experience, including links to your contributions. (Added fall 2017)
  • Reflective Practitioner: For learning from failure. Consider one of your failures from this course and write a postmortem about it. Use the format described by Fitzpatrick and Collins-Sussman, explicitly labeling each step.
  • Rereader: For discovering once is not enough. Reread a minimum of four chapters of Clean Code. Write an essay reflecting on what you (re-)learned by reading it again, and why you feel you missed it the first time you read the book. (Added spring 2017)
  • Seeker: For learning from a community of practice. Attend a Computer Science Department Colloquium, Google Developer Group Muncie, or other approved presentation, seminar, or conference. Write an essay in which you share your experience and tie it into one or more of our course's essential questions.
  • Studious: For learning how to learn. Read Bill Rapaport's How to Study: A Brief Guide and then write a study plan for this course, including a grade goal and assessment plan.
  • Third-Party Librarian: For being pragmatic about reusing features. Meaningfully incorporate a third-party library into your final project. Describe the library you are using, why you chose it, and how it is used, using examples from your project. (Removed after summer 2016)
The following table presents statistics from the most recent six semesters I’ve taught the course. I find it interesting to look through the table to see what is popular (and what is not). For example, considering all semesters, the Reflective Practitioner, Diversity Seeker, and Crystallizer achievements have clearly been the most popular. Looking at individual semesters, the Rereader, Seeker, Studious, and Third-Party Librarian achievements have also been very popular.
 
As mentioned above, achievements are designed to encourage student’s independent exploration of relevant course topics. Even though the Third-Party-Librarian achievement was very popular, we chose to remove it because the projects being assigned in the course were requiring the use of libraries. As such the achievement was doing little to cause a student to explore a new topic.

A few of the recently-added achievements have proven to be quite popular. In particular, the Fair-minded, Judge, and Rereader achievements appear to be gaining a strong foothold. I suspect some of them will creep into the most popular list within a semester or two.

Five achievements (Campus Leader, Didact, Filmmaker, Jammer, and Open Source Contributor) have generally been the least popular. We have chosen to leave these as options for students to complete so students with a particular interest or skill in one of those areas will have something tailored for them.

Lastly, I’ve found the number of achievements students choose to complete interesting. While a great many students do complete four, the majority do not. As shown in the table, the average for all semesters is just over three completed achievements per student. Due to the one submission per week limitation, and their lack of planning, some students simply run out of time to get all four submitted.

I believe the achievement system is meeting its intended purpose within the course. I will find it interesting to revisit this a year from now to see how the popularity of individual achievements has changed.