Weird Computer Science

Computer science is powerful, ubiquitous, logical…and sometimes very, very weird. Join Dr. Charles “Smoov” Isbell of the Georgia Institute of Technology and Dr. Michael “Curly” Littman of Brown University on a tour of the stranger side of computing. Quirks, quarks, bar bets and circuits made of falling dominoes — watch and learn about the oddest aspects of computing.

Ep 1: Quantum Computing: The fundamental unit of computing is a “bit” – a 1 or a 0. We can create those binary states with electronics, or even something as simple as dominoes. But a new kind of computing uses quantum physics, which isn’t as simple as a 1 or a 0. What can we do with a quantum computer?

Ep 3: SAT Solvers: There are a lot of real-world problems that require solutions to “SATisfy constraints,” or follow certain rules. There is no mathematical shortcut: a program might have to try every solution until hitting the right one. The bigger the problem, the longer it takes to solve. Why do SAT solvers work so quickly, then?
Ep 5: Halting Problem: As early as the 1930s, mathematicians were able to conceive of problems that are logically impossible for computing machines to solve. These are called incomputable problems, and they aren’t just theoretical — there are real life examples. What is the halting problem, and why is it inherently unsolvable?
Ep 2: Neural Networks: Neural networks are a kind of machine learning program that puts data through layers of decision-making to come to the correct answer. But how do the programs know they have the right answer? And what happens when a programmer builds more decision layers than a problem technically needs?
Ep 4: Bitcoin: What is money? And can an algorithm perform the functions of money? How do blockchains allow people to transfer value from one person to another reliably and anonymously? The answer is a combination of encryption, record-keeping and a system that rewards the community for policing itself.
Ep 6: Y Combinator: Programmers often use a concept called recursion, which involves solving a problem by designing an algorithm that uses itself to solve a subproblem. Some programming languages have recursion built in, and one way for recursion to arise is using a transformation known as the as the Y Combinator. And it is seriously weird.