DEV Community

Cover image for 100+ Computer Science Concepts Explained
Ali Shirani
Ali Shirani

Posted on

100+ Computer Science Concepts Explained

Okay, hold onto your keyboards, aspiring tech wizards and seasoned code slingers! You've just stumbled upon the ultimate cheat sheet to understanding the digital voodoo that powers our world.

Ever felt like software engineering is just a series of happy accidents and Stack Overflow prayers? Like you're piloting a jumbo jet with a vague understanding of "wings good, ground bad"? You're not alone! But what if I told you that behind all that "magic," there's actual science?

Welcome to Computer Science 101: The Lightning Round! We're about to demystify over 100 crucial concepts that form the bedrock of all that garbage code you've been lovingly crafting. Forget dry textbooks; we're making this fun, fast, and (hopefully) unforgettable.

Ready to level up your nerd cred? Let's dive in!

⚙️ The Bare Metal & The Building Blocks: How Computers Actually Think

First things first, what IS a computer?

  1. Turing Machine: Imagine an infinitely long piece of tape holding ones and zeros, with a device that can read and write to it. That's the theoretical granddaddy of all computers, capable of computing... well, anything!
  2. CPU (Central Processing Unit): The brain of your computer. Crack it open (don't actually!), and you'll find...
  3. Transistors: Billions of microscopic on/off switches etched onto silicon. The fundamental switch. Image description
  4. Bit: The state of one transistor (on or off, 1 or 0). The smallest piece of information.
  5. Byte: A group of 8 bits. Can represent 256 different values (e.g., all the characters on your keyboard).
  6. Character Encoding (ASCII/UTF-8): Standards that map characters (like 'A', 'b', '$') to binary values. When you type, this is what's happening.
  7. Binary (Base-2): The computer's native counting system using only 0s and 1s.
  8. Hexadecimal (Base-16): A more human-readable way to represent binary. Uses 0-9 and A-F. One hex character can represent a 4-bit group, also known as a...
  9. Nibble: Half a byte (4 bits). Yes, really.
  10. Machine Code: The raw binary instructions that the CPU directly executes. Your fancy Python or Java eventually becomes this.
  11. RAM (Random Access Memory): Think of it as a neighborhood of houses, where each house (memory location) stores a byte. The CPU can quickly read from and write to any "address." It's volatile, meaning data is lost when power is off. Image description
  12. Input/Output (I/O): How the computer interacts with the world.
    • Input Devices: Keyboard, mouse.
    • Output Devices: Monitor, printer (more on this later, shudder).

🖥️ Talking to the Machine: Operating Systems & Your First "Hack"

Most of us don't talk directly to hardware. Thank goodness for...

  1. Operating System (OS) Kernel (Linux, macOS, Windows): The master controller. Manages all hardware resources.
  2. Device Drivers: Software that lets the OS kernel communicate with specific hardware (like your graphics card or Wi-Fi).
  3. Shell: Your first entry point to "hack the mainframe" (or just your laptop). A program that exposes OS services to you. It "wraps" the kernel. Image description
  4. Command Line Interface (CLI): Text-based way to interact with the shell. You type commands, it gives output.
  5. Secure Shell (SSH) Protocol: Lets you securely connect to and control remote computers over a network via the CLI.

🗣️ Choosing Your Weapon: Programming Languages

Time to write some code!

  1. Programming Language: A tool using abstraction (simplifying complex systems layer by layer) to make computers usable for humans.
  2. Interpreted Languages (e.g., Python, JavaScript): An "interpreter" program reads and executes your code line by line.
  3. Compiled Languages (e.g., C++, Java, Go): A "compiler" translates your entire program into machine code (or an intermediate bytecode) before execution. This often results in faster performance.
    • Executable File: The output of a compiler, runnable by the OS. Image description

🧱 The Building Blocks of Code: Data Types & Variables

Now we're getting into the nitty-gritty of coding itself.

  1. Data Types: Human-friendly ways to represent data (instead of raw bytes).
  2. Variable: A named placeholder for a piece of data, allowing you to store and reuse it.
  3. Dynamic Typing (e.g., Python): The language automatically figures out a variable's data type at runtime.
  4. Static Typing (e.g., C++, Java): You must explicitly declare a variable's data type in your code. Catches errors earlier!
  5. Memory Allocation: Reserving space in RAM for your variables and data.
  6. Pointer: A special variable whose value is the memory address of another variable. Used for low-level memory control (handle with care!).
  7. Garbage Collector: A feature in many modern languages (Java, Python, C#) that automatically manages memory allocation and deallocation, freeing up memory when objects are no longer referenced. Prevents many headaches!
  8. Integer (int): Represents whole numbers (e.g., 5, -10, 0).
    • Signed Int: Can be positive or negative.
    • Unsigned Int: Can only be positive (or zero).
  9. Floating-Point Number (float): Represents numbers with decimal points (e.g., 3.14, -0.001). Uses a form of scientific notation.
  10. Double: A floating-point type that uses double the memory, offering more range or precision.
  11. Character (char): Represents a single character (e.g., 'a', '$', '7').
  12. String: Represents a sequence of characters (e.g., "Hello, world!").
  13. Endianness (Big-Endian vs. Little-Endian): The order in which bytes are stored in memory for multi-byte data types.
    • Big-Endian: Most significant byte at the smallest memory address.
    • Little-Endian: Least significant byte at the smallest memory address.

🗃️ Organizing Your Digital Stuff: Data Structures

How you store and organize data is CRUCIAL for efficient programs.

  1. Data Structure: A particular way of organizing and storing data in a computer so that it can be accessed and modified efficiently.
  2. Array (or List in Python): An ordered collection of items, like a shopping list. Items are accessed by an index (usually starting from 0). Image description
  3. Linked List: A list where each item (node) contains data and a pointer to the next item in the sequence.
  4. Stack: Follows LIFO (Last-In, First-Out). Like a stack of plates – you add (push) to the top and remove (pop) from the top.
  5. Queue: Follows FIFO (First-In, First-Out). Like a line at a grocery store – the first one in is the first one out. Image description
  6. Hash Table (or Map, Dictionary): A collection of key-value pairs. Instead of an integer index, you use custom keys to access values. Super useful!
  7. Tree: A hierarchical data structure with a root node and child nodes, forming branches. Efficient for searching (e.g., Binary Search Tree).
  8. Graph: A collection of nodes (vertices) connected by edges. Can represent complex relationships (e.g., social networks, road maps).

💡 Making Things Happen: Algorithms & Control Flow

Data structures are great, but they don't do anything on their own. Enter algorithms!

  1. Algorithm: A step-by-step procedure or formula for solving a problem or accomplishing a task.
  2. Function (or Method, Subroutine): A named block of code that performs a specific task. It can take inputs (arguments or parameters) and return an output.
  3. Operators: Symbols that perform operations on values (e.g., + for addition, == for equality, > for greater than).
  4. Expression: A piece of code that produces a value (e.g., 2 + 2 evaluates to 4; a > b evaluates to true or false).
  5. Boolean: A data type with only two possible values: true or false.
  6. Statement: A piece of code that performs an action but doesn't necessarily produce a value (e.g., an if statement, a loop).
  7. Conditional Logic (If/Else Statement): Executes different blocks of code based on whether a condition is true or false. Image description
  8. Loop (While, For): Repeats a block of code multiple times.
    • While Loop: Repeats as long as a condition is true.
    • For Loop: Often used to iterate over items in an iterable (like an array or list).
  9. Void Function: A function that doesn't return a value. It just performs an action.
  10. Recursion: When a function calls itself. Needs a base condition to stop, otherwise it leads to an infinite loop and...
  11. Call Stack: A special area of memory that keeps track of active function calls. Each function call adds a "frame" to the stack.
  12. Stack Overflow Error: Occurs when the call stack runs out of space, often due to infinite recursion. Image description
  13. Big O Notation: A standard way to describe the performance (efficiency) of an algorithm as the input size grows.
    • Time Complexity: How the runtime of an algorithm scales with input size.
    • Space Complexity: How the memory usage of an algorithm scales with input size.
  14. Brute Force Algorithm: Tries every possible solution until the correct one is found. Often simple but inefficient.
  15. Divide and Conquer Algorithm (e.g., Binary Search, Merge Sort): Breaks a problem into smaller, similar subproblems, solves them, and combines the results.
  16. Dynamic Programming: Solves complex problems by breaking them into simpler subproblems, storing the results of subproblems (memoization) to avoid re-computation.
  17. Greedy Algorithm (e.g., Dijkstra's Shortest Path): Makes the locally optimal choice at each step with the hope of finding a global optimum.
  18. Backtracking Algorithm: Incrementally builds solutions, abandoning a path (backtracking) as soon as it determines it cannot lead to a valid solution (like a rat in a maze).

🧐 Thinking in Code: Programming Paradigms & OOP

There are different "styles" or ways to think about and structure your code.

  1. Programming Paradigm: A fundamental style of computer programming.
  2. Declarative Programming (e.g., SQL, HTML, often seen in Functional Programming): Describes what the program should accomplish without specifying how to do it (control flow).
  3. Imperative Programming (e.g., C, Python in procedural style): Describes how to accomplish a task using explicit sequences of statements (control flow like if, while).
    • Procedural Programming: A type of imperative programming that structures code into procedures (functions).
  4. Multi-Paradigm Language (e.g., Python, JavaScript, C++, Scala): Supports multiple programming paradigms.
  5. Object-Oriented Programming (OOP): A paradigm based on the concept of "objects," which can contain data (fields or properties) and code (procedures or methods). Image description
  6. Class: A blueprint for creating objects. Defines properties and methods.
  7. Object: An instance of a class. An actual chunk of data in memory.
  8. Encapsulation: Bundling data (properties) and methods that operate on the data within a single unit (object), and restricting direct access to some of an object's components.
  9. Inheritance: A mechanism where a new class (subclass or derived class) inherits properties and methods from an existing class (superclass or base class). Promotes code reuse.
  10. Polymorphism: ("Many forms") The ability of an object to take on many forms. Often, it means a common interface for different underlying forms (data types).
  11. Abstraction (in OOP): Hiding complex implementation details and showing only essential features of the object.
  12. Design Patterns: Reusable solutions to commonly occurring problems within a given context in software design.
  13. Heap (Memory): An area of memory used for dynamic memory allocation, where objects are typically stored. Unlike the call stack, it can grow and shrink as needed.
  14. Pass by Reference: When passing an object to a function, you're passing a reference (memory address) to the original object, not a copy. Changes inside the function affect the original object.
  15. Pass by Value: When passing a simple data type (like an int) to a function, a copy of the value is passed. Changes inside the function don't affect the original variable.

⚡ Doing Multiple Things: Concurrency & Parallelism

Modern CPUs are beasts! Let's use their power.

  1. Thread (CPU Thread): A virtual core that allows a physical CPU core to run multiple sequences of instructions seemingly simultaneously.
  2. Parallelism: Literally executing multiple tasks on different CPU cores at the exact same time. Requires multi-core processors and language support.
  3. Concurrency: The ability of a system to handle multiple tasks by making progress on them in overlapping time periods, even on a single core. This is often achieved by switching between tasks rapidly.
    • Event Loop (e.g., Node.js, browser JavaScript): A concurrency model that waits for and dispatches events or messages in a program.
    • Coroutines (e.g., Python asyncio, Kotlin): Functions that can suspend their execution and resume later, allowing other code to run in the meantime. Image description

☁️ The Bigger Picture: The Cloud, Networks, & The Internet

Your code doesn't live in a vacuum. It connects to the world!

  1. Virtual Machine (VM): Software that emulates a physical computer system. Allows running multiple "virtual" computers on a single piece of powerful hardware. The backbone of cloud computing.
  2. The Cloud: A network of remote servers hosted on the Internet to store, manage, and process data, rather than a local server or a personal computer.
  3. Internet Protocol (IP): The principal communications protocol for relaying datagrams (packets) across network boundaries.
  4. IP Address: A unique numerical label assigned to each device connected to a computer network that uses the IP for communication.
  5. URL (Uniform Resource Locator): A web address (e.g., https://www.google.com).
  6. DNS (Domain Name Service): A global database that translates human-readable domain names (URLs) into machine-readable IP addresses. The "phonebook of the Internet."
  7. TCP (Transmission Control Protocol): A core protocol of the Internet suite. Provides reliable, ordered, and error-checked delivery of a stream of octets (bytes) between applications running on hosts communicating via an IP network.
  8. TCP Handshake: The process by which two computers establish a TCP connection before exchanging data.
  9. Packet: A small unit of data transmitted over a network.
  10. SSL/TLS (Secure Sockets Layer / Transport Layer Security): Cryptographic protocols designed to provide communications security over a computer network. The 'S' in https://.
  11. HTTP (Hypertext Transfer Protocol): The foundation of data communication for the World Wide Web. A client (e.g., your browser) sends a request, and a server sends a response (e.g., an HTML webpage).
  12. API (Application Programming Interface): A set of rules and protocols that allows different software applications to communicate with each other.
  13. REST (Representational State Transfer): An architectural style for designing networked applications, commonly used for building web APIs. Uses standard HTTP methods (GET, POST, PUT, DELETE) and maps URLs to server-side resources.
  14. HTML (HyperText Markup Language): The standard markup language for documents designed to be displayed in a web browser. Describes the structure of a web page.
  15. CSS (Cascading Style Sheets): Describes how HTML elements are to be displayed on screen, paper, or in other media. Handles the presentation and styling.
  16. JavaScript (JS): A high-level, often just-in-time compiled language that conforms to the ECMAScript specification. Crucial for interactive web pages and increasingly used on servers (Node.js).
  17. Server: A computer or system that provides resources, data, services, or programs to other computers, known as clients, over a network.
  18. Client: A piece of computer hardware or software that accesses a service made available by a server.
  19. Database: An organized collection of structured information, or data, typically stored electronically in a computer system.
    • SQL (Structured Query Language): The standard language for managing and manipulating relational databases.
    • NoSQL Databases: Databases that do not use SQL as their primary query language and often don't adhere to a strict relational schema (e.g., document databases, key-value stores).
  20. Firewall: A network security system that monitors and controls incoming and outgoing network traffic based on predetermined security rules.
  21. Version Control (e.g., Git): A system that records changes to a file or set of files over time so that you can recall specific versions later. Essential for collaborative software development.
    • Repository (Repo): A storage location where versions of your project files are kept.
  22. IDE (Integrated Development Environment): Software application that provides comprehensive facilities to computer programmers for software development (e.g., VS Code, IntelliJ, Eclipse). Typically includes a code editor, debugger, and build automation tools.
  23. Debugging: The process of finding and resolving defects or problems ("bugs") within a computer program that prevent correct operation.

🖨️ And Finally, The Real Final Boss...

  1. Mother Effin' Printers: The bane of every tech-savvy person's existence. You'll need to learn how these arcane devices work inside and out because, inevitably, someone will ask you to fix theirs. And as a newly minted Computer Science connoisseur, it's your solemn duty. Good luck. Image description

Phew! You made it! That was a whirlwind tour through the digital cosmos. While this list is just scratching the surface, hopefully, some of that "magic" now feels a little more like understandable science.

What concepts blew your mind? Which ones do you use every day? Did we miss any of your "favorites"? Let us know in the comments below!

Top comments (0)