Ask HN: Trivia questions about Computer Science
I like these kinds of discussions, but sometimes when I&#x27;ve tried to brainstorm along these lines I felt like everything exploded (not in the sense of &quot;going wrong&quot; but in the sense of &quot;becoming very big very quickly&quot;). Sometimes it feels like there are just a few concepts to get across to achieve computer literacy, and then when we try to list them, it turns out there are many more than we thought! :-)<p>What is an algorithm?<p>What is a CPU?<p>What is a pointer?<p>What is a bug?<p>Why is software usually so fragile or unreliable?<p>Why&#x2F;how is it possible to break into computers over a network?<p>What is encryption?<p>What is a loop?<p>What is a variable?<p>What is Boolean logic?<p>What is a data type?<p>Why is 2+2 different from &quot;2&quot;+&quot;2&quot; and &quot;2+2&quot; in Python?<p>What is a programming language?<p>How many programming languages are there and where do they come from?<p>Why do people want more than one programming language?<p>Why do people say that programming languages are or aren&#x27;t &quot;more powerful&quot; than one another? How about &quot;more efficient&quot;?<p>What does it mean to say that a language is &quot;higher level&quot; or &quot;lower level&quot; compared to another?<p>What is a bus?<p>Why do computers use powers of two to measure so many things?<p>Why do computer scientists like to count starting with 0?<p>What is the difference between bitwise and Boolean logic operations, in languages that distinguish them?  (E.g. | versus ||, or &amp;&amp; versus &amp;, or ~ versus !.)<p>What is a cache?<p>What is a proxy?<p>What is a server?<p>What is a network layer?<p>What is an address?<p>What are layers of abstraction in general, and why are they so important in computing? Why do people criticize or discourage &quot;layering violations&quot; or &quot;breaking abstraction barriers&quot;?<p>What is a protocol?<p>What is a file format?<p>What is a file?<p>What is a formal language or formal grammar?  Why is parsing so important and so difficult?<p>What is a software object?<p>What is a library?<p>What is &quot;structured&quot; versus &quot;unstructured&quot; data?<p>What is an API?<p>How do programmers think and talk about correctness of programs, and how do they try to confirm whether their programs are correct?<p>What is an operating system?<p>What are emulation and virtualization?<p>What is a data structure?<p>What is computational complexity?<p>What are some of the software tools that we use in developing or distributing software, in addition to compilers?<p>Why did E. W. Dijkstra dislike GOTO so much, and what did he propose as an alternative?<p>What is a Turing machine? How about von Neumann architecture?<p>What is serialization?<p>What is the difference between front-end and back-end development in a web application?<p>How are computers better or more powerful today than they were in the past?<p>What are logic gates?<p>What is a race condition?<p>Why is Google paying for some programs that are currently in C or C++ to be rewritten in other languages such as Rust?<p>What&#x27;s an instruction set? Why are there multiple different instruction sets? Why does Intel add more stuff to its instruction set over time? How does the same program work on different CPUs if they have slightly or completely different instruction sets?<p>What are hardware, software, and firmware?<p>What does it mean for a computer, or a video game console, or a program, to be &quot;8-bit&quot;, &quot;16-bit&quot;, &quot;32-bit&quot;, or &quot;64-bit&quot;? Is an 8-bit program or computer somehow unable to ever represent or calculate with numbers higher than 255?<p>What&#x27;s this &quot;P=NP&quot; problem and why are people so obsessed with it?<p>If computers are deterministic, how can they do something random or unpredictable, like having a game be different every time you play it?<p>D. E. Knuth has been writing a huge book about programming for decades, which people find very deep and impressive, but which very few people have read or find a practical need to consult very often. Why is this book so prestigious if so few people make practical use of it? What kind of knowledge is contained in it? How are people able to become programmers and accomplish things without mastering very much of that knowledge?<p>What is data compression? How does it work?<p>How does a device like a laptop or a phone get software updates? Who makes those updates? How does the device find the updates and know that they are genuine?<p>What&#x27;s the difference between the World Wide Web and the Internet? Who runs the Internet?<p>What&#x27;s a chip? Who designs them? How are they made? What do they do?<p>What are &quot;analog&quot; and &quot;digital&quot;? What&#x27;s meant by converting between them? How does that happen?<p>Why do people say that analog copies accumulate errors, but digital copies don&#x27;t?<p>How does a computer represent images?<p>How does a computer represent video?<p>How does a computer represent sounds?<p>What is &quot;user space&quot;?<p>What is a &quot;buffer&quot; or &quot;buffering&quot;? How is that related to video streaming? How is it related to &quot;buffer overflows&quot;?<p>What is &quot;Turing completeness&quot;? Why do some people describe it as either good or bad? How is it related to the Turing machine?<p>Stretch goals! What are the Church-Turing thesis and the Curry-Howard isomorphism?