A common ‘pain point’ for introductory students is technical literacy, in particular interaction with the keyboard. While many people are comfortable with the more common symbols in English (a-zA-Z0-9 . ,), computer scientists are expected to be proficient with a variety of symbols (# && \ ; '"') and sequences of characters (i.e. for i in range(len(array)): ) that differ substantially from standard English grammar. It is commonplace for a student in a CS1 course to miss minor details, such as forgetting a semicolon (;) or unbalanced braces ({[()}), resulting in compilation errors. As such, while a student may understand the concept and be able to internalize what needs to be done, the problem of translating that internalization to source code is commonly the first error the student will encounter.
The only conceivable way to get better at something is to practice it; which leads to a dilemma - "How do I solve problems if I don't know how to solve problems?" One common instructional approach is the use of worked examples. Instructors will introduce worked examples in the form of completed code as part of their in-class or in-lab materials. While the appropriate level of detail for these examples is open to discussion they are typically in advance of what students are expected to produce for an assignment and exist to illustrate concepts.
Images were used to prevent "copying and pasting" code from one source to another, a common practice amongst computer scientists. For novice students, this can be detrimental. A student may be tempted to copy code they find on websites, such as StackOverflow.com, without fully understanding the code or which parts are relevant to their problem. This can lead to further issues as the student may begin debugging code they did not write nor understand (and potentially never worked at all). By offering more examples to the students, an instructor can narrow this temptation by providing examples in similar context without the student blindly copying the code. The exercise forces the student to build the code before giving them an opportunity to reuse the code.
User: demo@demo.com
Pass: demo!demo