Reflection 1.3 - Programming Difficulties
[This is probably the longest reflection in the course. I suggest you divide it among several session with a FINAL due date of Wednesday February 23]
The goal of this activity is for each participant to possess an annotated list of common programming errors. The annotations should include names and explanations that provide understanding and alternatives for "fixing" them. I firmly believe that by the process of developing this list (in addition to the actual finished product) will enhance both your understanding of programming and your ability to respond to student difficulties.
Activities
Day 1: Identifying Difficulties
Your first task is to individually identify difficulties that a novice programmer might encounter. You may remember some that you have encountered. You can, of course, examine your email conversations with instructors or review the videos from Fundamentals of Programming to identify additional ones.
I would ask you to START this process before you attempt the readings on Day 2. I want your first pass at this idea to come from your own memories and experiences rather than from research literature.
You may use whatever format seems most useful to you, but I recommend including name, error message (for syntax errors) or difficulty (for logic errors), cause(s) of the problem, and fix(es) for the problem. Note: syntax errors will have error messages and logic errors will not. Sample items are included below.
- Uninitialized variable
-
Traceback (most recent call last):
File "/Users/schafer/Desktop/python_code/temp.py", line 3, in <module>
sum = sum + value
TypeError: unsupported operand type(s) for +: 'builtin_function_or_method' and 'int' - Cause(s)
A variable on the right-hand-side of an assignment statement was not initialized, sum or total in these examples.
- Fix(es)
Be sure to initialize all accumulator variables, e.g.,
sum = 0.Remember that the input() function produces a string value—convert it to the appropriate numeric type, e.g.,
value = int(input("Enter a value")).
- Misplaced initialization
- The accumulator variable doesn't get all the values
- Cause(s)
The initialize statement is placed inside the loop that accumulates the values., e.g.
- Fix(es)
Move the initialization outside (before) the loop so it only occurs once, e.g.,
Day 2: Reading about Difficulties
I asked you to think through your experiences for Day 1 because I wanted you to put your own personal experiences on this first. Once you have a good starting list that comes from your own experiences, I want you to do some reading on what the "research literature" has identified as some of the common difficulties that new programmers have when learning how to program.
The list below is not a full assigned reading list. That is, I do not expect you to read every last detail in each of these papers. Instead, I would ask you to "browse" these three resources to start with so you understand what they are about. Don't worry about the details. Get the big picture first:
- (PDF) "A Study of the Difficulties of Novice Programmers"
- (PDF) "Novice programmer’s misconception of programming reflected on problem-solving plans"
- (website) Beginner Programmers' Mistakes
- Note, if you find an additional article you think fits this discussion PLEASE feel free to read it and share the link with me!
Once you have done this I would ask you to REVISIT each one focusing in more detail on the sections pointed out below:
- A Study of the Difficulties - focus on section 4 and the table
- Novice Programmer's misconceptions - Section 2.2 and all of section 4
- Beginner Programmers' Mistakes (Make sure you understand the main idea of all of the author's 25 points)
Day 3: Revising your personal list
Before your final submission of the document for this activity I would like you to go back to the list you wrote out on Day 1 and revise it based on new materials, thoughts, ideas, etc. from Day 2.
While we won't perfect it all the way to an end product, I want you to begin to think about this as a guide you could hand your students to help them work their way through difficulties you think they might experience as a novice programmer.
Submission
To submit your work you should word process your entire reflection (including the final, self analysis) and save/print as a PDF.
Give the file the name
- refl_1_3_LastName.pdf
And share to the appropriate folder in our shared Google Drive