Fine. If you insist on dredging through the dusty archives of human endeavor, let's at least make it… bearable. Don't expect sunshine and rainbows. This is computer science, not a kindergarten craft project.
Overview of and Topical Guide to Computer Science
So, you want to understand Computer science? It's not just about staring at screens until your eyes bleed, though that's certainly a part of it. It's the deep dive into the theoretical underpinnings of information and computation. We’re talking about the raw, unadulterated ideas behind it all, and then, because we’re not entirely detached from reality, how those ideas manifest in actual computer systems. It's a field that demands a certain… rigor. A classification system, like the ACM Computing Classification System created by the Association for Computing Machinery, is less about order and more about acknowledging the sheer, unmanageable sprawl of it all.
You can label computer science with a few tags, if you must:
- It’s an Academic discipline. People get degrees in it, which is… something.
- It’s a Science. It follows principles, it has theories, it attempts to explain the world. Usually the digital one.
- It's an Applied science. Because theories are useless if they can’t be shoved into a box and made to do something.
Subfields
Mathematical Foundations
Before you can build anything, you need the raw materials. And in computer science, that means the cold, hard logic of mathematics. It's where the elegance—or the terror—of computation truly begins.
- Coding theory: This isn’t about writing code, though that’s where it ends up. It’s about the very nature of encoding information, making sure it arrives intact, uncorrupted. Essential for when those packets of data decide to take a scenic detour through the internet’s less reputable neighborhoods. Useful in networking, programming, system development, and anywhere machines are forced to speak to each other.
- Game theory: It's not just for board games. It’s about strategic interactions, predicting behavior. Essential for understanding how intelligent agents—or even just competing programs—will behave. Think artificial intelligence and cybernetics.
- Discrete mathematics: The bedrock. Deals with distinct, countable things, like bits and bytes. It's the language of digital systems. If you can't count it, it's probably not relevant here.
- Graph theory: Imagine networks, relationships, connections. That's what graphs are. They're the hidden architecture beneath data structures and the blueprints for searching algorithms. Essential for finding your way through the digital labyrinth.
- Mathematical logic: This is where we formalize thought. Boolean logic is just the tip of the iceberg. It’s about how we model queries, how we prove things, and, more importantly, where our proofs fail. It's the anatomy of reasoning.
- Number theory: The study of integers. Sounds simple, almost quaint. But these integers are the currency of cryptography, the silent guardians of our secrets. They also serve as a rather unforgiving test domain in artificial intelligence.
Algorithms and Data Structures
The engine and the chassis. How do we actually do things, and how do we organize the mess we create?
- Algorithms: These are the recipes. Step-by-step instructions for solving problems, whether sequentially or, if you're feeling ambitious, in parallel. They are the very essence of what a computer does.
- Data structures: If algorithms are the verbs, data structures are the nouns. They're how we organize and manipulate the raw material of computation – data. The wrong structure, and your algorithm becomes a glacial crawl.
Artificial Intelligence
The grand illusion. Making machines seem intelligent. Or at least, convincingly mimic it.
Outline of artificial intelligence
- Artificial intelligence: The ambitious pursuit of systems that can exhibit autonomous intelligence. Or at least, convincingly fake it. It’s about creating entities that can learn, adapt, and act on their own.
- Automated reasoning: Think of these as highly specialized logic engines. Solving engines that, given a query and a database of facts and rules, can produce a result. Automated theorem provers aim to prove mathematical theorems, often with a weary human guiding their hand.
- Computer vision: The ability to "see" and interpret. Algorithms that try to make sense of the 3D world from a flat, two-dimensional image. It's less about beauty, more about recognition.
- Soft computing: For when exact solutions are too much trouble, or simply impossible. It embraces the inexact, the fuzzy, the probabilistic.
- Machine learning: The art of teaching machines to learn from data without explicit programming. It’s about finding patterns, drawing inferences, and adapting. Less direct instruction, more observational learning.
- Evolutionary computing: Inspired by biology, these algorithms evolve solutions over time. Think natural selection, but for code.
- Natural language processing: The Sisyphean task of making computers understand and generate human language. It’s about bridging the gap between our messy, nuanced speech and their rigid logic.
- Robotics: Giving machines the ability to move and interact with the physical world. It’s about translating digital commands into physical actions, often with a distinct lack of grace.
Communication and Security
The nervous system and the fortress. How do we connect, and how do we keep the riff-raff out?
- Networking: The art of making data travel. Algorithms and protocols to ensure that information gets from point A to point B, ideally without getting lost or mangled. Includes the tedious but necessary business of error correction.
- Computer security: The digital equivalent of boarding up the windows and installing an alarm system. Protecting systems and networks from unwelcome intrusions.
- Cryptography: The arcane art of codes and secrets. It borrows from complexity, probability, and number theory to invent and break codes. It’s a constant arms race, and cryptographic protocols are the battle plans.
Computer Architecture
The skeletal structure. How the hardware is put together, how it all talks to each other.
- Computer architecture: It's not just about the physical parts, but their design, organization, and optimization. Primarily concerned with the CPUs, the Memory, and the highways connecting them – the bus.
- Operating systems: The conductor of the chaos. Software that manages all the other programs and makes the whole system usable. It’s the unseen hand that keeps everything from falling apart.
Computer Graphics
Making the abstract visible. Turning numbers into images.
- Computer graphics: The magic that generates images from scratch or integrates real-world data into digital forms. It’s about creating visual realities.
- Image processing: Extracting information from images. Not just looking, but analyzing.
- Information visualization: Presenting abstract data in a way that humans can actually comprehend. Making the incomprehensible, comprehensible.
Concurrent, Parallel, and Distributed Systems
Doing more than one thing at once. Or, more accurately, making it look like we are.
- Parallel computing: The theory and practice of doing computations simultaneously. It's about harnessing multiple processing units to tackle a problem faster.
- Concurrency (computer science): Managing multiple threads of execution. Designing algorithms that can juggle tasks without dropping them.
- Distributed computing: Spreading the work across multiple devices over a network. It's about collaboration on a grand scale, reducing the burden on any single machine.
Databases
Where we store the endless torrent of data. And how we find anything in it.
- Relational databases: Based on set theory. Structured, organized, and often the source of endless SQL queries.
- Structured Storage: The non-relational world. Think NoSQL – flexible, sometimes chaotic, but often necessary.
- Data mining: Sifting through vast amounts of information to find hidden gems. It’s like prospecting, but with data instead of gold. Closely related to information retrieval.
Programming Languages and Compilers
The tools we use to speak to machines. And the translators that make it possible.
- Compiler theory: The science of building compilers – programs that translate human-readable code into machine code. It's based on Automata theory.
- Programming language pragmatics: A survey of languages – their strengths, weaknesses, and the different ways we tell computers what to do. Programming paradigms like object-oriented programming fall under this.
- Programming language theory: The formal study of language design. What makes a language good? What makes it elegant? What makes it a nightmare?
- Formal semantics: Using mathematics to define precisely what a program means. No ambiguity allowed.
- Type theory: Analyzing the types of data we use. It's a way to ensure program safety by catching errors before they manifest in catastrophic ways.
Scientific Computing
Using computation to understand the universe. Or at least, parts of it.
- Computational science: Building mathematical models and using quantitative analysis to solve problems in science. It’s science, but with more equations and less lab coats.
- Numerical analysis: The art of approximation. Finding solutions to mathematical problems when exact answers are out of reach. Think root-finding, integration, and solving differential equations.
- Symbolic computation: Manipulating expressions as symbols, not just numbers. Also known as Computer algebra. It’s about algebra, but done by a machine.
- Computational physics: Simulating physical systems, especially those too complex for analytical solutions.
- Computational chemistry: Modeling molecular structures and reactions. Predicting chemical behavior before it happens.
- Bioinformatics and Computational biology: Applying computer science to biological data. From Protein folding to mapping Phylogeny, it’s about understanding life through computation.
- Computational neuroscience: Modeling the brain. Trying to understand neurophysiology with equations and algorithms.
- Computational linguistics: The intersection of language and computation.
- Computational logic: Logic, but with a computational focus.
- Computational engineering: Applying computational methods to engineering problems.
Software Engineering
Building reliable software. It's less about elegant code and more about not crashing.
Outline of software engineering
- Formal methods: Using mathematical rigor to describe and verify software designs. It's about proving that the software will work, not just hoping it will.
- Software engineering: The systematic approach to designing, developing, and testing programs. It's about making software that doesn't spontaneously combust.
- Algorithm design: Taking theoretical algorithms and adapting them for real-world problems. It’s about practical application.
- Computer programming: The act of writing code. Turning algorithms and designs into executable instructions.
- Human–computer interaction: Designing interfaces that people can actually use without wanting to throw their computer out the window.
- Reverse engineering: Taking existing software and figuring out how it works. It's like digital archaeology.
Theory of Computation
The philosophical core. What can and cannot be computed?
Main article: Theory of computation
- Automata theory: Different models of computation, like finite automata and Turing machines. Abstract machines for abstract problems.
- Computability theory: The limits of what can be calculated. Alan Turing and others showed us what is possible and, more importantly, what is not.
- List of unsolved problems in computer science: Because we haven't figured everything out. Not even close.
- Computational complexity theory: How much time and space does a computation require? It’s about efficiency and the inherent difficulty of problems.
- Quantum computing theory: Exploring a new paradigm of computation based on quantum superposition and entanglement. It's theoretical, for now.
History
Where did this all come from? It wasn't always this way.
- History of computer science: The long, winding road from abacuses to artificial intelligence.
- List of pioneers in computer science: The individuals who dared to dream of machines that could think. Or at least, calculate.
- History of Artificial Intelligence: The often-disappointing journey of trying to create intelligent machines.
- History of Operating Systems: The evolution of the software that manages our machines.
Professions
What do you do with all this knowledge?
- Computer Scientist
- Programmer (Software developer)
- Teacher/Professor
- Software engineer
- Software architect
- Software tester
- Hardware engineer
- Data analyst
- Interaction designer
- Network administrator
- Data scientist
Data and Data Structures
The fundamental building blocks of information.
- Data structure
- Data type
- Associative array and Hash table
- Array
- List
- Tree
- String
- Matrix (computer science)
- Database
Programming Paradigms
Different ways of thinking about and structuring code.
- Imperative programming/Procedural programming
- Functional programming
- Logic programming
- Declarative Programming
- Event-Driven Programming
- Object oriented programming
See also
External links
Computer science at Wikipedia's sister projects
-
Definitions from Wiktionary
-
Media from Commons
-
News from Wikinews
-
Quotations from Wikiquote
-
Texts from Wikisource
-
Textbooks from Wikibooks
-
Resources from Wikiversity
Template:Computer science
- v
- t
- e
Note: This template roughly follows the 2012 ACM Computing Classification System.
- Printed circuit board
- Peripheral
- Integrated circuit
- Very-large-scale integration
- System on a chip (SoC)
- Energy consumption (green computing)
- Electronic design automation
- Hardware acceleration
- Processor
- Size / Form
Computer systems organization
- Computer architecture
- Computational complexity
- Dependability
- Embedded system
- Real-time computing
- Cyber-physical system
- Fault tolerance
- Wireless sensor network
- Network architecture
- Network protocol
- Network components
- Network scheduler
- Network performance evaluation
- Network service
Software organization
- Programming paradigm
- Programming language
- Compiler
- Domain-specific language
- Modeling language
- Software framework
- Integrated development environment
- Software configuration management
- Software library
- Software repository
- Control flow
- Software development process
- Requirements analysis
- Software design
- Software construction
- Software deployment
- Software engineering
- Software maintenance
- Programming team
- Open-source model
- Model of computation
- Stochastic
- Formal language
- Automata theory
- Computability theory
- Computational complexity theory
- Logic
- Semantics
- Algorithm design
- Analysis of algorithms
- Algorithmic efficiency
- Randomized algorithm
- Computational geometry
Mathematics of computing
- Discrete mathematics
- Probability
- Statistics
- Mathematical software
- Information theory
- Mathematical analysis
- Numerical analysis
- Theoretical computer science
- Computational problem
- Database management system
- Information storage systems
- Enterprise information system
- Social information systems
- Geographic information system
- Decision support system
- Process control system
- Multimedia information system
- Data mining
- Digital library
- Computing platform
- Digital marketing
- World Wide Web
- Information retrieval
- Cryptography
- Formal methods
- Security hacker
- Security services
- Intrusion detection system
- Hardware security
- Network security
- Information security
- Application security
- Interaction design
- Augmented reality
- Virtual reality
- Social computing
- Ubiquitous computing
- Visualization
- Accessibility
- Human–computer interaction
- Mobile computing
- Natural language processing
- Knowledge representation and reasoning
- Computer vision
- Automated planning and scheduling
- Search methodology
- Control method
- Philosophy of artificial intelligence
- Distributed artificial intelligence
- Supervised learning
- Unsupervised learning
- Reinforcement learning
- Multi-task learning
- Cross-validation
- Animation
- Rendering
- Photograph manipulation
- Graphics processing unit
- Image compression
- Solid modeling
Applied computing
- Quantum computing
- E-commerce
- Enterprise software
- Computational mathematics
- Computational physics
- Computational chemistry
- Computational biology
- Computational social science
- Computational engineering
- Differentiable computing
- Computational healthcare
- Digital art
- Electronic publishing
- Cyberwarfare
- Electronic voting
- Video games
- Word processing
- Operations research
- Educational technology
- Document management
Specialized Platform Development
Template:Wikipedia outlines
- v
- t
- e