Welcome to the Theory of Computation course! (CS3102)

We can still add some people into the class, as long as we don't exceed the room/seats capacity (please Email me an explanation why you would like to add this class, and I'll give you permission to enroll in SIS). If you would like to audit this course, or just informally sit in on any of the lectures, that's fine too. Basically, I never turn away anyone who seeks knowledge.

All CS3102-related materials (some slide sets) will be posted at the CS3102 Web site. Several problem sets are already posted there.

Our textbook is Sipser's Introduction to the Theory of Computation, Second Edition (published in 2005). (The Third Edition of this book recently came out, but it is similar and much more expensive than the Second Edition, so we will use the Second Edition instead.) For your convenience, a searchable PDF version of the textbook is available (but please respect copyright laws and also purchase a copy).

Please read the very useful handout, which lists the definitions of most of the important concepts that we will cover in this class. Please refer to this handout throughout the course.

Here are some fun articles and videos that you should read / watch, covering numerous fascinating topics in algorithms, theory, exotic computation models, technology, and possible CS technology futures. These essays and videos will introduce you to many new ideas and will help expand your mind, your thinking processes, and your problem-solving skills. You can read these essays at leisure over the course of the semester (say several articles / videos per week - they are pretty short), but please finish reading at least 36 of these articles / videos / books by the end of the semester (and any above 36 will count towards extra credit).

One particularly good article there is "Who Can Name the Bigger Number?". Please read this article ASAP, and EMail to homework.cs3102@gmail.com 1 or 2 paragraphs describing what new or surprising things you learned from this article.

Please also watch the "Time Management" video lecture of Randy Pausch (given at UVa in Nov 2007), as well as his "Last Lecture". The "Time Management" video in particular is the best talk on this topic that I ever heard, and the hour that you spend watching it will pay you back by a factor of thousands over your career in terms of time saved and productivity gains. The slides for the "Time Management" lecture are available also, along with more information about Randy Pausch. (BTW, Randy's lectures and book are required reading for all entering students at CMU.)

Another fascinating video that I'd like you to watch is "Powers of Ten", which presents a wonderful visual depiction of the power of exponentials, in terms of the scale of the physical universe. Also play with the related interactive app Scale of the Universe. Please watch these three videos (and app) ASAP (and please Email to homework.cs3102@gmail.com a couple of paragraphs describing what new / surprising things you learned from each.

I also included on the CS Readings Web page links to good Wikipedia articles on various topics relevant to this course, as well as links to several good books. For example, a good classic (and easy to read) tutorial book on problem solving is Polya's "How to Solve It" (also available as a searchable PDF here).

Another great easy-reading fun book on infinities and other deep and subtle mathematical concepts is Rucker's "Infinity and the Mind" (also available in searchable PDF format here).

Finally a fascinating Pulitzer-Award -winning book about logic, intelligence, self-reference, and paradoxes is "Godel, Escher, Bach" Mind" (also available in searchable PDF format here).

In addition, you will find selected TED talks on the reading list, covering a wide range of topics and ideas in science, technology, engineering, and education. Some of these articles / Web pages / books / videos are required reading (highlighted in red font), while the rest are "electives". Please EMail to homework.cs3102@gmail.com a short summary of each submission (1-2 pagraraphs per paper / video / Web page, and 1-2 pages per book), at the rate of at least three per week (due on 5pm each Monday), to a minimum total of at least 36 for the entire semester (and any above 36 will count towards extra credit). Book writeups will receive more extra credit than shorter papers / video writeups. The readings item types should constitute a diverse mix, with a minimum of at least 15 videos, at least 15 papers / Web sites, and at least 6 books.

If you come across additional great articles / Web pages / books / videos that you think also belong on this list, please let me know, and I'll consider adding them.

To dive deeper into cutting-edge research in algorithms and theory, please refer to recent papers from the leading algorithms and theory conferences and journals.

Remember: while I can *introduce* you to lots of cool ideas, it is then up to you to do the remaining "heavy lifting" yourself - i.e., following up on class discussions by reading up on these topics in greater detail, going to other sources, solving lots of problems, working in groups, etc. (Classroom time is relatively short, and as researchers and scientists, a lot of of your individual learning needs to occur outside of the classroom.)

I hope that you enjoy the above materials and resources as much as I do!

Finally, please start working on the problem sets and please work in study groups on these problems. Keep in mind that many of the midterm and final exam questions will come almost verbatim from these problem sets!

An interesting (extra-credit) problem is to write a program (say in C++ or Java) that prints itself out (i.e., prints its own source code exactly), without reading any files, buffers, input devices, Web sites, or any other external input sources. In other words, the self-contained compiled code should print out verbatim its own source code, without accessing any external data sources whatsoever. This is a simple example of artificial self-replication, a rich and fascinating topic pioneered by John von Nuemann.

I look forward to sharing with all of you a fascinating journey of discovery, insights, and problem solving!

Gabe


Dr. Gabriel Robins
Professor of Computer Science
Department of Computer Science
School of Engineering and Applied Science
University of Virginia
151 Engineer's Way
P.O. Box 400740
Charlottesville, VA 22904-4740
(434) 982-2207
robins@cs.virginia.edu