Machines are complex and getting more complex. How to build ever more complex machines?
- Humans are stupid and will remain stupid.
- Machines are fundamentally limited too
- A proper teamwork of humans and machines
We will cover the machine part using Linux as a case study.
Why do we care about complexity
Humanities is powered by ever more complex artifacts
Engineering & technology is about building and managing ever more complex artifacts.
Research itself is ever more complex
Coping with complexity shapes many important aspects of the social and political systems we live in.
Growing complexity of software anticipates the success of the open-source movement. ``Given enough eye balls, all bugs are shallow''
Globalization: the need of more human minds to cope with complexity and the need of more consumers anticipate globalization and perhaps even space colonization. (Why is Moore's Law dead?)
central planning vs. free market: high complexity of modern economical activities requires free market; high complexity of modern government anticipates democracy.
What has become ``simpler''?
Interfaces with humans, especially interfaces that become simpler to reach a broader audience. Underneath each simpler interface, a more complex mechanism is often required.
- Programming language as interface between programmers and machines: from Assembly used by skillful hackers/graduate students to Python used by amateur developers and high-school graduates
- User interface of computers: from command line (keyboard) used by experts to graphical user interface (keyboard+mouse) to touch-based graphical user interface (touchscreen) used by everybody
- Music as a medium between composer (producer) and audience (consumer): from sophisticated Classical to arguably simpler Pop.
- The audience expanded from aristocrats to bourgeoisie to everybody. Popular music, by definition, is music enjoyed by a large audience. It has to be more accessible than the Classical music.
- Technology made it possible for a consumer to enjoy music many more hours a day: need for a lot of ``simpler'' music.
Math, Science and Engineering
- Mathematicians often discover ``simpler'' (more accessible) proofs of important theorems.
- Scientific breakthroughs, e.g., Newton's laws of motion, Maxwell's equation, and Einstein's theory of relativity, often systematize the empirical knowledge available at their time, in a way ``simplify'' our understanding of the universe. At the same time, they often ``predict'' an even more complex universe.
- Algorithmic breakthroughs can reduce the complexity (measured by number of steps) of solving a problem. The resulting ``faster'' algorthms, however, are not necessarily easier to understand (or implement).
Complexity shifted from one place to another.
- Shifting complexity away from human (high-level programming language, user interface)
- Shifting complexity from hardware to software: CISC vs. RISC architecture: RISC architecture allows simpler/more regular hardware but requires more complex compilation (software).
What will we cover in this course?
- Program: why programs are infested with bugs and how to treat them? What can be done with a program? what cannot?
- Psychology: limitations of human mind: complexity is always relative to human mind; all bugs are made by humans.
- Philosophy: what can be known? what can be thought? what can be said?
- Research: How complexity affects all aspects of conducting research and communicating its results
What will you do?
- Read a lot of papers
- Participate in presentation/debate
- Labs writing programs in C and Rust