Welcome to the Analysis of Algorithms course! (CS6161)

If anyone wants to add into this class, I'll be happy add them in (please Email me and I'll give you permission to enroll in SIS, or bring to me a course-action form and I'll sign it in order to add you into this course). 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 (as long as there are enough chairs/space in the room :) ).

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

Our textbook is Cormen et al's Introduction to Algorithms, 3rd Edition (2009). For your convenience, a searchable PDF version of this book is available on the course Collab Web site (under "resources"), but please respect copyright laws and purchase your own copy. Some of the puns in the Cormen algorithms textbook are explained in here.

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.

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 20 of these articles / videos / books by the end of the semester (and any above 20 will count towards extra credit).

One particularly good article there is "Who Can Name the Bigger Number?". Please read this article ASAP, and for EMail to homework.cs6161@gmail.com two 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.cs6161@gmail.com a two 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 on the course Collab site).

Another great easy-reading fun book on infinities and other deep and subtle mathematical concepts is Rucker's "Infinity and the Mind" (also available as a searchable PDF on the course Collab site).

Finally a fascinating Pulitzer-Award -winning book about logic, intelligence, self-reference, and paradoxes is "Godel, Escher, Bach" Mind" (also available as a searchable PDF on the course Collab site).

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.cs6161@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 two per week (due on 5pm each Monday), and at most two per day, to a minimum total of at least 20 for the entire semester (and any above 20 will count towards extra credit). Book writeups will receive more extra credit than shorter papers / video writeups.

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 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!


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