What do A-level students, that have not done GCSE, struggle with? I will be teaching key-stage-3 pupils, in a school with no key-stage 4 or 5 in the computing subjects. Some of these pupils may wish to do computing at key-stage-5 at another school. 

Does anyone have experience of teaching A-level students, that have not done GCSE computer-science? Or even University teachers teaching students with no prior experience (Please give context in your answer).

What can I do to better prepare them? While still giving age appropriate lessons.



Other factors: Because of the size of the computing department, I will have less time with them than I have had in other schools (one hour a week for 1/3 of a year).

Translation: key-stage


key-stage 3: age 11→14
key-stage 4: age 15→16, first external exams, GSCE, level 1 and 2.
key-stage 5: age 16→18, (A-level, level 3)
Insufficient programming experience is the thing that impedes progress at A-Level, in my experience. 

The current UK A-Levels from OCR exam board (less so AQA) emphasises "Computational Thinking" (CT), such as abstraction, as a theme of the course. CT, as delivered in the course material, has some overlap with stages in system development stages such as analysis. Also there is another strand "problem solving" and another "computational methods". There are more "traditional" topics such as data structures and algorithms. There are questions in the exam where a student has to analyze, correct, modify or create from scratch a pseudocode "snippet" to address a particular small-scale algorithmic problem such as navigating a tree data structure. 

With that context, the most basic exercises in the course are usually beyond those A-Level students with little prior exposure to programming. The rigours of getting code to run or compile without syntax errors or fix basic logical errors is an alien task to these students and they often give up, submitting source code that does not compile or run (if Python). These students often have no "framework" of what an algorithm is; to take input data and transform it in some way. Lack of this "mental framework" means CT is just "pile of words" to neo-programmers; they have no concrete experience against which to relate abstraction, decomposition, recursion, concurrency etc. Often assignments are submitted, which if in a programming language don't run, let alone produce correct outputs under any inputs. Pseudocode assignments are very difficult to mark because of a host of basic syntax errors. For some, submitting "something" is "job done" by the student because the time to develop the necessary skills, understanding, approach, identifying and diagnosing errors is just not "there". Pseudocode is used because the exam uses it rather than a specific language such as Java or C# or C++ or .... to "level the field" among all candidates who may have been taught by someone with knowledge or preferences for a specific language.

There is also a requirement to produce and document a non-trivial program / system - weighted at 20% of the final course mark. Those students with no programming background make slow progress in all stages of the development and the resulting code is usually rather limited in technical complexity - although there is ongoing debate on teacher's forums as to the necessity for "complexity" in the project.

One possible explanation for this (and it's just my opinion) is the inexperienced students haven't had exposure to 1) short term failure of their efforts, i.e. their programs don't work, but 2) the reassurance that eventually, with effort, they can fix their "local" errors and solve the overall problem. So, some prior programming experience develops the right perseverence mindset which I feel is more important than "good" programming style or wide/deep knowledge. Continued engagement will refine the skill.

It is entirely possible for a student with no programming background to develop those technical and problem-solving skills over 18 months - but it is rare - and often the student will drop out feeling the course is completely inaccessible. However, if the above sounds entirely negative our highest achieving student last year had no programming background prior to starting the course.