WBCHSE HS Modern Computer Application study materials
WBCHSE HS Modern Computer Application study resources

WBCHSE HS Modern Computer Application common mistakes

WBCHSE HS Modern Computer Application · Understand the traps and how to avoid them.

Mistake 1

In decimal-to-binary conversion of a fractional value such as 0.6875, writes the recorded bits in the order they were produced (0.1101₂) or stops after two or three multiplications, giving 0.101₂, instead of 0.1011₂.

The integer part is built by reading remainders upward, and that habit is carried over to the fractional part, where the carry bits must be read downward. Students also stop as soon as the fraction 'looks small' rather than continuing until it reaches exactly 0 or the required precision.

What to do instead

Use a two-column table: divide the integer part by 2 and read remainders bottom-to-top; multiply the fraction by 2, record the carry bit, and read top-to-bottom. Continue until the fractional part becomes 0 (0.6875 → 0.1011) or the asked-for precision is reached, then check by converting back with negative powers of 2.

Mistake 2

Applies De Morgan's law by negating each term without changing the operator - writing (A·B)′ = A′·B′ or (A+B)′ = A′+B′ - and simplifies A + A′B to A′B or to A + B without justification.

The complement bar over a whole expression is read as if it sat on each variable separately, and the identity A + A′B = A + B is memorised as a shape rather than derived, so the complemented term is mishandled.

What to do instead

Always turn the bar into a bracket first, then apply the rule: break the bar and swap · for + and + for · - (A·B)′ = A′ + B′. Verify any simplification with a four-row truth table for two variables: A + A′B and A + B give identical output columns, A′B does not.

Mistake 3

Lists the memory hierarchy in the wrong order (claiming RAM is faster than cache, or that registers hold the most data) and calls ROM volatile 'because it keeps data permanently'.

The speed–cost–capacity trade-off is learned as a bare list of names, so 'bigger' gets mentally mapped to 'faster'. ROM's non-volatility is also confused with the idea of temporary storage.

What to do instead

Memorise the ladder in one direction - register → cache → main memory (RAM) → secondary storage - noting that speed and cost per bit fall while capacity rises at each step. Tag every level volatile or non-volatile using one rule: volatile means contents vanish at power-off, so RAM is volatile and ROM, HDD, SSD and pen drive are not.

Mistake 4

Classifies a compiler, interpreter or assembler as an operating system (or as application software), and defines multiprogramming as 'running two programs at exactly the same instant on two CPUs'.

The words 'software' and 'system' pull everything into one bucket, and the prefix 'multi-' is read as 'simultaneous' rather than 'several jobs resident in memory with the CPU switched between them'.

What to do instead

Draw a three-branch tree: system software (operating system, language translators - compiler/interpreter/assembler, utilities), application software, and firmware. Attach one sentence to each OS term: multiprogramming = several jobs in memory, CPU switched when one waits for I/O; multitasking = time-sliced switching; multiprocessing = two or more CPUs executing truly in parallel.

Mistake 5

Writes scanf("%d", n) for an int variable or scanf("%f", &x) where x is a float, then reports that the program crashes or prints garbage; similarly uses %d in printf to display a float value.

scanf is learned by copying printf, where the bare variable name is correct. The 'address of' operator has no everyday analogue, and the format codes %d/%f/%c/%s are not firmly tied to visible data types.

What to do instead

Adopt the rule 'scanf always needs an address': int → scanf("%d", &n); float → scanf("%f", &x); char → scanf(" %c", &c); string → scanf("%s", name) with no & because an array name is already an address. Keep a two-column printf/scanf specifier table and actually compile each program instead of writing it only on paper.

Mistake 6

Traverses an array of n elements with for(i = 0; i <= n; i++), and reverses or copies a string with a loop that runs to the declared array size instead of stopping at the terminating '\0'.

The number of elements and the largest valid index are mentally merged, and because index 0 is valid, n looks like a plausible last index. Strings are treated as arrays of 'as many characters as declared' rather than null-terminated sequences.

What to do instead

State the valid index range before writing the loop: n elements occupy indices 0 to n−1, so the condition is i < n. For strings, loop while (s[i] != '\0') and always reserve one extra element when declaring a char array; hand-trace with a three-character word to confirm the terminator is copied.

Mistake 7

Describes a stack as FIFO (or a queue as LIFO), evaluates a postfix expression without tracking which pop is the left operand, and claims a linear search on sorted data is as good as binary search.

Stack and queue are memorised as word pairs without a physical model; postfix evaluation is done left to right without noting that the first pop is the right operand. 'Linear' is misread as 'on a line, therefore ordered'.

What to do instead

Anchor each structure to a picture: stack = pile of plates, push/pop only at the top (LIFO); queue = ticket line, enqueue at rear, dequeue at front (FIFO). In postfix evaluation always write pop2 operator pop1 with the note 'second pop is left operand'. Add the complexity row: binary search on sorted data O(log n), linear search O(n).

Mistake 8

Filters missing values with WHERE marks = NULL (which returns no rows) and puts a group condition in WHERE, e.g. SELECT dept, COUNT(*) FROM emp WHERE COUNT(*) > 2 GROUP BY dept.

NULL is treated as an ordinary value like 0 or blank, and the logical order of evaluation (FROM → WHERE → GROUP BY → HAVING → SELECT) is unknown, so WHERE and HAVING appear interchangeable.

What to do instead

Fix two rules: unknown values are tested only with IS NULL / IS NOT NULL; row filters go in WHERE and group filters in HAVING (SELECT dept, COUNT() FROM emp GROUP BY dept HAVING COUNT() > 2). Also remember COUNT(*) counts rows while COUNT(col) skips NULLs, and only grouped columns or aggregates may appear in the SELECT list.

Mistake 9

Places a switch at the network layer and a router at the data-link layer, calls a hub an 'intelligent' device that filters frames by MAC address, and uses IP address and MAC address interchangeably.

All three devices are boxes with ports, so the layer distinction is learned as a list without the criterion 'which address does it read?'. IP and MAC both look like long numbers on a network diagram.

What to do instead

Tie each device to the address it inspects: hub - no address, repeats bits to all ports (physical layer); switch - MAC address (data-link layer); router - IP address (network layer). For addresses, remember MAC is the permanent 48-bit hardware address burned into the NIC, while IP is a logical address assigned per network that can change.

Mistake 10

Uses presentational HTML (a <font> tag, colour and align attributes) whenever asked to design a page, and labels JPEG as lossless while calling GIF lossy.

Old tutorials and the browser's tolerance of deprecated tags make presentational markup look acceptable, and compression types are remembered by file extension rather than by what the algorithm does to the data.

What to do instead

Adopt one sentence: HTML gives structure and meaning, CSS gives appearance - so use

,

,

    and place colour, font and layout in a style rule. For graphics, sort by behaviour: JPEG is lossy (suited to photographs), PNG and GIF are lossless (GIF limited to 256 colours, with simple animation); always state the reason, e.g. 'JPEG discards fine detail to shrink a photograph'.