CSS Computer Science (Optional) — Paper-I, Section-A, Topic II subtopic. Precedes actual coding in the problem-solving lifecycle.

Steps to Define a Problem Systematically

  1. Problem statement — state clearly and precisely what needs to be solved
  2. Requirements analysis — identify what inputs are available and what outputs are expected
  3. Constraints identification — note any limits (time, memory, valid input ranges)
  4. Decomposition — break the problem into smaller, manageable sub-problems
  5. Identify inputs/outputs (I/O) explicitly — define data types and formats
  6. Design the solution — using algorithms, flowcharts, or pseudocode
  7. Verify against test cases — before implementation, mentally trace through sample inputs

Why This Step Matters

Worked Example

Problem (as given): "Write a program to process student marks." This is too vague to code directly. Applying the steps:

  1. Problem statement: Compute the average of a student's marks in N subjects and assign a grade.
  2. Requirements analysis: Input = number of subjects N and N marks (0–100 each); Output = average marks and a letter grade.
  3. Constraints: N must be a positive integer; each mark must be in the range 0–100.
  4. Decomposition: Sub-problems = (a) read marks, (b) compute average, (c) map average to a grade, (d) display result.
  5. I/O definition: Input — integer N, then N floating-point marks; Output — one float (average) and one character/string (grade).