Puzzle 23: Hashing
Hashes are used everywhere in computer science. They are used for efficient data structures, data integrity checks, and cryptographic security. This puzzle explores common hashing techniques and applications.
New computer science crosswords, design notes, and exhibits
Hashes are used everywhere in computer science. They are used for efficient data structures, data integrity checks, and cryptographic security. This puzzle explores common hashing techniques and applications.
I noticed that the previous puzzles, "Randomness in Computing", "Computer Vision", and "Ideas from Notable Computer Papers", covered fairly specialized topics that I and perhaps other engineers may not have deep familiarity with. I wanted to make a puzzle that I felt many developers who have worked on websites would…
Since CERN made the Web freely available in 1993, it has transformed how people share information. This puzzle explores the fundamental technologies and concepts behind the modern Web.
!Cern first website
A lot of the code I write is deterministic. Most of the time, I don’t encounter randomness unless I’m using a random number generator or sampling from a list. This made me curious about data structures and algorithms that use randomness as part of their design.
When I think of computer vision broadly, I usually think of facial recognition, autonomous vehicles, medical imaging, and robotics.
Randomness is often added to deterministic algorithms to improve performance, reduce memory usage, or make impractical computations practical. In practice, these benefits outweigh tradeoffs such as approximate results or variable running times.
Computer vision emerged in the 1960s as a subfield of artificial intelligence. The field draws heavily on mathematics, physics, and signal processing. Today, it powers applications such as medical imaging, satellite imagery, and robotics.
A lot of concepts in computer science become common knowledge because they are so fundamental to the field. They are often easy to explain and understand after the fact, especially because of the number of educational resources available.
Many ideas that began as research papers and shaped computer science are now accepted as common knowledge. This puzzle covers notable research papers that proposed ideas so foundational they are now taken for granted.
I was excited to write about Computer Architecture because it was one of the few topics that highlights the hardware that makes computers work. For many software engineers, a lot of time is spent writing programs in high-level programming languages. As a result, I don't spend much time exploring low-level…
This computer architecture puzzle explores the hardware, architectures, and design principles that shape modern processors. Processors have improved in performance since the Intel 4004, the first commercial microprocessor, was released in 1971.
Computer security is a topic that I have some practical experience with through auth tokens, authorization, encryption, and hashing. Exposure to these concepts is a relatively common experience in backend development. Ultimately, I have working knowledge of some of these topics with much of the underlying complexity abstracted away.
Computer security builds on foundational disciplines such as cryptography and covers domains like access control, network security, and application security. This puzzle explores fundamental concepts spanning different parts of the field.
I renamed Puzzle 7, "Operating Systems", to "A History of Operating Systems" because the puzzle focused on different consumer operating systems rather than operating system concepts. This created a gap in the archive since I didn't have a puzzle focused on the concepts themselves.
Operating systems manage limited resources and hide significant complexity by providing useful abstractions. Techniques like multitasking and virtual memory allow many programs to share hardware resources efficiently.
I didn’t know about Queuing Theory before researching my last puzzle "Computer Networks." I was reading a Wikipedia article about Network congestion and the term popped up.
Queuing theory sits at the intersection of CS and operations research. It appears in OS resource scheduling, network congestion, and distributed load balancing. Many performance optimizations reduce to managing computation under limited resources.
My past two puzzles, "Classical Natural Language Processing" and "Algorithms in Context", focused on fairly abstract and specialized topics. I wanted this puzzle to tackle something more familiar, approachable, and concrete. Even if people are unfamiliar with specific networking terminology, it’s a topic many programmers have exposure to simply because…
Networks underpin how computers communicate with each other. Infrastructure like submarine cables, content delivery networks, and Internet exchange points allow us to video call across the world, stream media, and exchange information in real time.