MV Abitur Computer Science common mistakes
MV Abitur Computer Science · Understand the traps and how to avoid them.
In recursion tasks, tracing only the first call and its immediate return instead of writing out the full call stack down to the base case and back up, so the returned value or the number of calls is wrong.
Candidates read the recursive definition as if it were a loop and mentally 'run it once'. The unwinding phase, where partial results are combined, is invisible in the code text and is where the actual computation happens.
What to do instead
For every recursive method, draw a table with one column per active call (parameters) and fill it top-down until the base case, then fill return values bottom-up. Always state the base case and the reduction step separately, and check that each recursive call strictly moves toward the base case.
Confusing pass-by-value with pass-by-reference when predicting output: assuming a method that reassigns an object parameter or modifies an array element changes the caller's variable in every case.
The distinction between the reference being copied and the object being shared is taught abstractly, and many candidates only memorise 'objects are passed by reference', which is imprecise for Java-like languages.
What to do instead
Use a memory diagram: draw the caller's variable, the copied parameter, and the heap object with arrows. Reassigning the parameter moves only the copy's arrow; mutating through it changes the shared object. Practise one example of each of the four combinations (primitive/object x reassign/mutate).
Writing SQL that returns wrong rows because aggregate functions are mixed with non-aggregated columns without GROUP BY, or because WHERE is used where HAVING is required.
Candidates translate the German task wording word by word ('alle Kunden mit mehr als drei Bestellungen') into a WHERE clause on a COUNT, which is not allowed because WHERE filters rows before grouping.
What to do instead
Follow a fixed order: FROM/JOIN, WHERE (row filter), GROUP BY, HAVING (group filter), ORDER BY. Underline the phrase in the task that refers to groups versus single rows before writing anything, and always test mentally with one group that has zero matches.
Drawing a UML class diagram with associations that carry no multiplicities, or using inheritance arrows in the wrong direction (arrow pointing from superclass to subclass).
Candidates focus on getting the boxes and attribute lists right and treat the connecting lines as decoration; the direction rule is easily inverted because the German wording 'erbt von' suggests flow from child to parent.
What to do instead
Adopt a checklist for every line: type (association, aggregation, composition, inheritance), multiplicities on both ends, navigation direction, and label. For inheritance, say the sentence aloud: 'the arrow points to the generalisation, the triangle touches the superclass'.
In polymorphism questions, predicting that a superclass-typed variable calls the superclass method even though the object was created from the subclass.
Candidates equate the declared type with the runtime type. Static typing makes the declaration visually dominant, and dynamic dispatch is a concept they can recite but rarely apply to a concrete code snippet.
What to do instead
For any call obj.m(), write two lines: 'declared type = ...' and 'actual object = ...'. Method selection uses the actual object at runtime; the compiler only checks the declared type. Work through a small hierarchy with an overridden method and one non-overridden method to see both rules at once.
Converting a Boolean expression into a circuit or truth table with the wrong operator precedence, e.g. reading A AND B OR C as A AND (B OR C).
In mathematics multiplication binds tighter than addition, and candidates transfer that habit inconsistently; also the overline for negation is often applied to too small a subexpression.
What to do instead
Fully parenthesise every expression before drawing gates: NOT first, then AND, then OR, then XOR/XNOR, and write brackets explicitly. Verify by evaluating the truth table for one row where the readings differ, and derive the DNF from the table as a cross-check.
Describing the von Neumann cycle as 'the CPU executes the program' without naming the phases and the roles of PC, IR, MAR/MDR and the bus, or claiming data and instructions travel on separate buses.
The model is familiar from broad descriptions, so candidates stop at slogans. The shared-bus property, which is the whole point of the bottleneck, is the detail most often lost.
What to do instead
Memorise the five phases (fetch, decode, fetch operands, execute, write back) and for each name the register and bus involved. State explicitly that instructions and data share the same memory and bus, which is why the von Neumann bottleneck exists.
Constructing a DFA or regular expression that accepts a superlanguage of the required language, e.g. accepting any word containing 'ab' when 'exactly one ab' was required.
Candidates test their automaton on two or three positive examples and stop. Negative examples, which reveal over-acceptance, are the ones that expose the error.
What to do instead
For every construction, invent at least three words that must be rejected (including the empty word and near-misses) and run them through the automaton state by state. For regular expressions, argue why no additional word can match, not just that the intended ones do.
Confusing the roles of encryption, hashing and digital signatures, e.g. stating that a password database should store encrypted passwords that can be decrypted for comparison, or that a signature provides confidentiality.
All three are introduced in the same security unit and share vocabulary (keys, ciphertext). Candidates remember 'security' as one mechanism rather than three with distinct goals.
What to do instead
Build a three-row table: goal (confidentiality, integrity check, authenticity), key used (public/private/symmetric/none), reversibility, and typical use. State for each scenario which goal is required, then pick the mechanism from the table.
Answering data-protection scenarios with general statements ('data must be protected') instead of applying the specific principles: purpose limitation, data minimisation, legal basis, and the rights of the data subject.
Candidates treat the socio-legal domain as an essay and do not realise that the exam expects named principles applied to the given case, similar to how a technical term is applied.
What to do instead
Use a fixed four-step scheme for every scenario: which personal data, which legal basis or consent, which principle is violated or satisfied (minimisation, purpose limitation, storage limitation), and which right the person can exercise (information, erasure, objection). Name the principle explicitly in the answer.