CSS Computer Science (Optional) — Paper-I, Section-A, Topic I, p.22-24. Covers: Types of Software.
Definition
- Software: a set of instructions, programs, and associated data that tells computer hardware what to do — intangible (cannot be physically touched), unlike hardware.
- Program: one set of instructions written to perform a single task; "software" is the broader umbrella term, often covering one or many programs plus their supporting data/documentation.
Three Broad Categories (Classification Table)
| Category |
Role |
Examples |
| System Software |
Manages hardware so other software can run |
OS, device drivers, utilities |
| Programming Software |
Used by programmers to write/translate/debug code |
Compiler, interpreter, assembler, debugger, IDE |
| Application Software |
Performs specific end-user tasks |
MS Word, Photoshop, browsers |
1. System Software
Manages/controls hardware so application software can run — the intermediary between hardware and user/applications.
- Operating System (OS)
- Definition: the master program — manages hardware resources (CPU, memory, storage, I/O) and provides the user/application interface.
- How it works: schedules CPU time among processes, allocates/protects memory, manages the file system, handles I/O via a privileged kernel.
- Variants: single-user vs multi-user; single-tasking vs multitasking; real-time OS (time-critical control); mobile OS.
- Examples: Windows, macOS, Linux, Android, iOS.
- Note: lets applications avoid dealing with raw hardware directly — but costs its own CPU/memory overhead to run.
- Device Drivers
- Definition: hardware-specific program that translates generic OS commands into instructions a specific device understands.
- How it works: sits between the OS and the device — a missing/outdated driver means partial or no hardware function.
- Examples: printer driver, GPU driver, network adapter driver.
- Utility Software
- Definition: maintains, configures, or optimizes the system rather than performing a user task.
- Variants: antivirus, disk cleanup/defragmentation, backup tools, file compression/archiving, system monitors.
- Examples: Windows Defender, WinRAR, CCleaner, Time Machine.
2. Programming Software (Programming Tools)
Used by programmers to write, translate, and debug other software — treated as a distinct third category.
- Compiler
- How it works: translates the entire source code to machine code before execution → produces a standalone executable.
- Examples: GCC (C/C++), javac (Java → bytecode).
- Pros/Cons: fast execution (translated once ahead of time) — but slow to compile, and errors surface together only after the full scan.
- Interpreter
- How it works: translates and executes source code line-by-line at runtime — no separate executable produced.
- Examples: CPython, early JavaScript engines.
- Pros/Cons: easy interactive testing, errors reported at the exact line — but slower overall execution than compiled code.
- Assembler
- How it works: near one-to-one translation of assembly mnemonics (MOV, ADD, JMP) into machine code.
- Examples: NASM, MASM.
- Use: performance-critical/hardware-specific code — embedded systems, device drivers.
- Debugger
- How it works: set breakpoints to pause execution, step through code line by line, inspect/modify variables at runtime.
- Examples: GDB, the Visual Studio debugger.
- Use: tracing logical errors that don't show up as syntax errors.
- IDE (Integrated Development Environment)
- Definition: bundles a code editor, compiler/interpreter, and debugger into one tool.
- Examples: Visual Studio, Eclipse, PyCharm, Android Studio.
- Pros/Cons: raises programmer productivity considerably — but resource-heavy, with its own learning curve.
3. Application Software
End-user programs designed to perform specific tasks, running on top of system software.