CSS Prepare

optional · CSS study notes

🗄️ OLD — Software Types & Programming Languages (consolidated)

⚠️ SUPERSEDED: This page's content has been split into individual topic pages matching the exact textbook outline. See the main P-I.I. Introduction to Computing index for the current granular pages. Keeping this only for reference.


CSS Computer Science (Optional) — Paper-I, Section-A, Topic I (Introduction to Computing). Covers: Types of Software, Types of Programming Languages.

Types of Software

Software is broadly classified into three categories based on its purpose:

1. System Software

Manages and controls the computer's hardware so that application software can run. It acts as an intermediary between hardware and the user/applications.

  • Operating System (OS): the core system software — manages hardware resources (CPU, memory, storage, I/O), provides a user interface, and runs other programs (e.g., Windows, macOS, Linux, Android)
  • Device Drivers: small programs that let the OS communicate with specific hardware (printer driver, graphics card driver)
  • Utility Software: performs maintenance tasks — antivirus, disk cleanup, backup tools, file compression

2. Programming Software (Programming Tools)

Used by programmers to write, translate, and debug other software. Often treated as a distinct third category since it doesn't fit neatly under "system" or "application."

  • Compiler: translates entire source code into machine code before execution
  • Interpreter: translates and executes source code line-by-line at runtime
  • Assembler: translates assembly language into machine code
  • Debugger: helps programmers find and fix errors by stepping through code execution
  • IDE (Integrated Development Environment): a bundled toolset combining a code editor, compiler/interpreter, and debugger (e.g., Visual Studio, Eclipse)

3. Application Software

End-user programs designed to perform specific tasks, running on top of system software.

  • General-purpose applications: word processors, spreadsheets, web browsers
  • Specialized applications: accounting software, CAD software, medical imaging software
  • Custom/bespoke applications: built for a specific organization's unique needs

Comparison table

AspectSystem SoftwareApplication Software
PurposeManages hardware, provides platformPerforms specific user tasks
DependencyRuns independently of applicationsDepends on system software to run
ExamplesWindows, Linux, device driversMS Word, Photoshop, browsers
User interactionMostly indirect (background)Directly used by the end user

Types of Programming Languages

Programming languages are classified by generation (how close to hardware they are) and by translation method/paradigm.

By Generation

GenerationDescriptionExample
1GL — Machine LanguageRaw binary instructions the CPU executes directly; no translation needed; extremely hardware-specificBinary opcodes
2GL — Assembly LanguageUses mnemonic codes (MOV, ADD) instead of raw binary; requires an assembler to convert to machine codeAssembly
3GL — High-Level LanguageHuman-readable syntax, portable across machines; requires a compiler/interpreterC, C++, Java, Python
4GL — Very High-Level LanguageTask-specific, closer to natural language, often used for database queries/report generationSQL
5GL — Constraint/Logic-BasedPrograms specify goals/constraints rather than step-by-step instructions; the system determines how to achieve themProlog

By Translation Method

  • Compiled languages: entire program translated to machine code before execution — faster execution, but must fully recompile after any change (C, C++)
  • Interpreted languages: translated and executed line-by-line — easier to debug interactively, but generally slower (Python, JavaScript in early engines)
  • Hybrid (bytecode-based): compiled to an intermediate bytecode, then run by a virtual machine (often with Just-In-Time compilation) — combines portability with reasonable speed (Java, C#)

By Programming Paradigm

  • Procedural: code organized as a sequence of instructions/procedures (C, Pascal)
  • Object-Oriented (OOP): code organized around objects/classes that bundle data and behavior (C++, Java)
  • Functional: computation expressed as evaluation of mathematical functions, avoiding changing state (Haskell, parts of Python)
  • Logic-based: programs are facts and rules, and results are derived through inference (Prolog)
  • Scripting: typically interpreted, lightweight, used for automation and "gluing" systems together (Bash, Python, JavaScript)

MCQ Traps

  • Programming/translation tools (compiler, assembler, IDE) form a distinct third category — don't lump them under "system software" even though they support system-level work.
  • 1GL needs no translator; 2GL needs an assembler; 3GL+ needs a compiler or interpreter — a very commonly tested sequence.
  • Java is not purely interpreted — it compiles to bytecode first, then the JVM interprets/JIT-compiles that bytecode (hybrid model), a frequent trick-question setup.
  • SQL is a 4GL, not a 3GL — its task-specific, near-natural-language design is what pushes it up a generation.

Self-Test Questions

  1. Name the three broad categories of software and give one example of each.
  2. Differentiate a compiler from an interpreter.
  3. Place C, SQL, and Prolog into their correct programming language generations.
  4. Why is Java described as a "hybrid" between compiled and interpreted languages?
  5. Give one example each of a procedural, object-oriented, and functional language.