CMSC 31100-1: Big Ideas in Computer Science
Autumn 2006
Potential topics
As long as the schedule is open, I'll type in potential topics that
occur to me, in case someone wants to take them, promote them, attack
them, ... You can think about them, even if we don't take any of them
up in class.
- The program/data [in]distinction. (Stored-program computer,
universal machine, S-m-n theorem, LISP representations, partial
evaluation, point evaluation functionals in analysis, program metrics
based on operator/operand counts, Language of Thought Hypothesis,
...)
- Quantum computation as a physics experiment. (Does computational
complexity limit quantum coherence?)
- The genetic code as a programming language.
- Immune reaction as pattern matching.
- Many ways of connecting computation and reasoning. (Automated
deduction, logic programming, deductive database, formulae as types,
Π-2 definitions, proof normalization, constructive
proof, proof as recursive enumeration.)
- Philosophical meaning of uncomputability and
incompleteness.
- Computations that kill. (E.g., the Terac disaster.)
- Optimistic computation and virtuous cycles. (Memory hierarchy,
networking, parallel computation.)
- The engineering dynamics of the computing business. (Why have
programmed general-purpose devices almost always beaten specialized
circuits (my ceiling fan runs Unix)?)
- Computation rules. ("Architecture is politics," John Perry
Barlow. "Architecture is policy," me. "Code is law," Larry Lessig. How
programmers may create company policy while executives make illusory
decisions. To say nothing of politicians.)
- Correctness vs. safety. (All programs are wrong. How can we design
programs so that the errors are least harmful?)
- Human interactions mediated by computing. (Not the obvious stuff,
such as email. How does a continually changing piece of code and/or
database provide for particular types of co-operation, conflict, and
exercise of power between the different parties who create and use it?
The three most important issues in interactive software design are
binding time, binding time, and binding time.)
- The physics of computation. (Reversible minimal energy
computation. The thermodynamic cost of erasing
information.)
- Top-down vs. bottom-up vs. sideways design. (The serious
differences in good design for applications vs. infrastructure, model
vs. interaction.)
- How trivial can a model of computation be? (2 and 3 counter
machines. Combinator calculus.)
- Computational characterizations of life. (Not simulations of life
as we know it. Computational definitions of what it means to be
alive.)
- Computational aesthetics.
- Automatic programming. (This problem has been solved repeatedly,
but each solution changed the nature of programming so that it was no
longer a solution.)
- Why unrealistic models of computation are realistic. (Asymptotics
are empirically predictive of practical behavior. They also capture
invariants under rapid technological change.)
- The big picture is always bigger than you think. (At some points
in history, the fastest way to solve a particular problem is to drink
coffee and listen to lots of music for 10 years waiting for faster
algorithms and computers.)
- What do we really need supercomputers for? (Patterns of human
interaction may be more important than problem
structure.)
- Halting problem undecidablity as a very short Python
program.
- Hilbert & Descartes were both talking about computation, and
saying approximately the same thing.
- Who said that the universal set is enumerable?(Conventional
asymptotics in computability theory become impractical in certain
places. E.g., in practice a set may be recognizable (decidable) but
not listable(recursively enumerable). Maybe sometimes we shouldn't
assume that we're working inside of an effectively listable
universe. E.g., logical constructions are essentially computations,
but arguably not in a listable universe. Dana Scott's meagre
sets.)
- Overdefined elements in Scottery. (This is a Turing Award waiting
to be won. Semantics based on Scottery with underdefined values, and
only a trivial use of a small number of overdefined values, can be
expressed as a coarsening of Tarskian semantics. But rich structures
of overdefineds are new, and can represent localized
inconsistency. So, why doesn't anybody study them?)
- Information can be measured in bits.