Awesome Naming 
Famously...
There are only two hard things in Computer Science: cache invalidation and naming things.
― Phil Karlton
Concepts in computer science are usually nothing tangible so it's no surprise that naming things is hard. Nevertheless, we do come up with clever, creative and funny names. Some of them so established, we never pause and admire.
This is a curated list for when naming things is done right.
Contents
- Computer Graphics
- Data Structures and Algorithms
- Design Patterns and Anti Patterns
- Functions
- IT Security
- Machine Learning and Artificial Intelligence
- Programming Languages and Programming Language Theory
- Theoretical Computer Science
- Tools, Applications, Libraries, Frameworks
- User Interface Design
- Other
Computer Graphics
- Gift wrapping algorithm - An algorithm for constructing the smallest shape that wraps a collection of points.
Data Structures and Algorithms
- Backtracking - When you explore a search space and you reach a dead end, you follow your tracks back to the last crossroad and try the other way.
- Brute force - Violence is actually almost always a solution but not a very clever one.
- Greedy algorithm - An algorithm that finds a solution by always picking the currently best looking option without thinking too much about past and future decisions.
- Hill climbing - Starting somewhere in the hilly "landscape" of solutions you go in the direction of steepest ascent until reaching the top of a hill. You might miss higher hills though.
- Israeli Queue - A type of priority queue and a reference to the infamously unorganized queues in Israel. Here items can cut in line when they have already waiting friends.
- Stack - Like with a stack of pancakes you can only add and remove items from the top of this data structure.
- Tree - A hierarchically organized data structure. From the root item the other items branch out into nodes and leaves. A collection of trees is often called a forest.
- Queue - In this data structure items are always added at the end and removed at the front as if the items were waiting in line.
Design Patterns and Anti Patterns
- Adapter - Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.
- Facade - Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying structure.
- Promise - A representation of a result that is available in the future, unless there are errors. Like in reality, promises are broken sometimes.
- Shotgun surgery - A programming antipattern where in a single change you wildly add code everywhere in your codebase.
- Spaghetti Code - A program with a tangled and hard-to-follow stucture.
Functions
- fold - Like a blanket being folded up, this function iterates a collection and in each step combines the current item with everything that has already been folded.
- munch - Parser function that greedily consumes an input stream until it's satisfied.
- trampoline - Continuously runs functions which itself return functions. Like a child on a trampoline that returns and bounces back up.
- zip - Merges two lists into one list of pairs like the interlocking teeth of a zipper.
IT Security
- Backdoor - A method of bypassing normal authentication in a computer system.
- Computer virus - A computer program that self replicates by infecting other computer programs similar to the behavior of biological viruses.