CSC 212: Programming with Data Structures

Spring 2016

Credit for this section: Nick Howe


What factors make a program elegant, and how can we promote them in our own work?

Programming is an art as much as a science, and one way to improve your abilities is to spend time reflecting on what works and what doesn't. Researchers in education have long recognized the benefits of self-reflection for enhanced learning. In this course you will engage in organized individual and group reflection.

As a semester-long endeavor, I would like to urge everyone to consider the question posed above. It has two portions, one concerning how to identify good programs and the other concerning how to produce it. These two inquiries are related, of course, and it is hoped that you will improve at both as the course progresses. You are not alone in this endeavor: each of your classmates will be grappling with the same question, and my goal as a professor is to help you work together to arrive at a better understanding as a group. The mechanism for doing this is described below.


The Individual Reflection

Individual reflections are completed at the end of each weekly homework assignment. They are turned in with the homework in a file called readme.txt. In addition, I will at some point ask you to post a few of your best reflections on Piazza so they may be shared with the class. (Personal notes and comments from the readme.txt need not be copied into the forum. It is your thoughts on what you learned about programming during the assignment that I want you to share.)

The goal of these reflections is to illuminate the art of programming and to share your knowledge with the rest of the class. In your reflection, please record any of the following: realizations or revelations reached during the project, causes of significant bugs encountered, techniques used to work faster or more efficiently, concepts clarified, and/or achievements of which you are proud. You may also use the reflection as a means of expressing to me parts of the assignment that you found difficult, could not complete, etc. Do not fear that your grade will be lowered because you say that something is unclear; in grading, I rely only on the evidence of the programs and typescript submitted. The reflection is only evaluated (informally) in terms of its thoroughness and its contribution to the ongoing class discussion.

How long should your reflection be? There is no set length. But you should attempt at least one or two serious observations, and this will necessarily require space to develop and flesh out. Longer reflections are fine also, so long as you keep to the point.


Summary Reflections

At some point during the semester, when people have posted their chosen reflections, I may ask everyone to write a summary reflection. These are not an onerous assignment: the task is to read through your classmates' individual reflections and summarize the emergent themes, trends, and lessons learned.

I will read the reflections and, from time to time, may comment on aspects that spark some thought. Others in the class are also encouraged to read and comment further, enriching the group discussion. At the end of the semester, we should have a much more mature understanding of the art of programming than we had at the beginning.