## Why CS 48300 is important (and even exciting!)

Michael Sipser, in the preface to his textbook,
*Introduction to the Theory of Computation*,

explains why this course is important, and exciting:

Welcome!

You are about to embark on the study
of a fascinating and important subject:
the theory of computation.
It comprises the fundamental mathematical properties
of computer hardware, software, and certain applications thereof.
In studying this subject we seek to determine what can and cannot
be computed, how quickly, with how much memory,
and on which type of computational model.
The subject has obvious connections with engineering practice,
and, as in many sciences,
it also has purely philosophical aspects.

…

Theory is relevant to practice.
It provides conceptual tools that practitioners use
in computer engineering.
…
Confronted with a problem that seems to require
more computer time than you can afford?
Think back to what you learned about *NP-completeness*.
Various application areas,
such as modern cryptographic protocols,
rely on theoretical principles that you will learn here.

Theory is also relevant to you because it shows you a new, simpler,
and more elegant side of computers,
which we normally consider to be complicated machines.
The best computer designs and applications are conceived with elegance in mind.
A theoretical course can heighten your aesthetic sense
and help you build more beautiful systems.

Finally, theory is good for you because studying it expands your mind.
Computer technology changes quickly.
Specific technical knowledge, though useful today,
becomes outdated in just a few years.
Consider instead the abilities to think,
to express yourself clearly and precisely,
to solve problems,
and to know when you haven't solved a problem.
These abilities have lasting value.
Studying theory trains you in these areas.

Practical considerations aside,
nearly everyone working with computers is curious
about these amazing creations, their capabilities, and their limitations.
A whole new branch of mathematics has grown up in the past 30 years
to answer certain basic questions.
Here's a big one that remains unsolved:
If I give you a large number, say, with 1000 digits,
can you find its factors (the numbers that divide it evenly),
in a reasonable amount of time?
Even using a supercomputer,
no one presently knows how to do that in all cases
*within the lifetime of the universe!*
The factoring problem is connected to certain codes
in modern cryptosystems.
Find a fast way to factor and fame is yours!