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, USA

robins@cs.virginia.edu
www.cs.virginia.edu/robins
Phone: (434) 982-2207, Fax: (434) 982-2214
Office: 210 Olsson Hall
Gabe's vitae / resume (NIH Biosketch)


CS6161 - Analysis of Algorithms Blog, UVa

Questions and answers regarding the CS6161 Analysis of Algorithms course material will be accumulated in this file throughout the semester. Please browse through it often.
Welcome to the Algorithms course! (CS6161)

All CS6161-related materials (including the problem sets) will be posted at the CS6161 Web site. The first three problem sets are already posted there.

If I am missing any CS6161 students in my Emails' "to:" list (or if you prefer to receive Email at a different address than the usual UVa-assigned Email address), please let me know and I'll modify my CS6161 Email list accordingly. The class Email list will serve as a primary means of communication among us for this course, so it is important that the CS6161 Email list includes *everyone* in the class (whether they are enrolled for a grade, auditing, or just sitting in on some lectures).

Please review the very useful handout reviewing some of the definitions of important concepts that we will use in this class, and refer to it throughout the course.

I posted some fun articles that I would like you to read, covering fascinating topics in theory, algorithms, exotic computation models, possible CS technology futures, etc. These essays will introduce you to many new ideas and will help expand your mind and your thinking processes. You can read these essays at leisure over the course of the semester (say two to three articles per week - they are pretty short), but please finish reading all of these essays by the end of the semester. One particularly good article there is "Who Can Name the Bigger Number?" Please read this article ASAP, and for extra-credit submit a paragraph describing what new or surprising things you learned from this article. (All essays / articles / videos that you read / watch in connection with this class are worth one extra-credit point each.)

I also included on that CS Readings Web page some 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". Another great easy-reading fun book on infinities and other deep and subtle mathematical concepts is Rucker's "Infinity and the Mind". I highly encourage everyone to read these two books. (These two books are probably one of the best ways to spend ten bucks that I can think of.)

I also compiled links to more advanced topics in CS theory and algorithms (from the leading conferences and journals on these topics).

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 & scientists, a lot of of your individual learning needs to occur outside of the classroom.)

If you haven't done so already, please 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. His "Time Management" lecture slides are also available. More information about him is available at the Randy Pausch Legacy Web page. (BTW, Randy's lectures & book are required reading for all entering students at CMU.) Please watch these two videos ASAP (and for extra-credit submit a paragraph describing what new / surprising things you learned from each).

Finally, 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.

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

Finally, as I mentioned in class, start working on the problem sets (posted on the class web site) ASAP, and please work in groups on these problems. Recall that I promised that most of the midterm & final exam questions will come verbatim from these problem sets.

Thanks,

Gabe

p.s. Here is the extra credit problem which is due next Tuesday (Aug 30):

"Write a C (or C++ or Java) program that prints itself out (i.e., your program should print out an exact *verbatim* copy of its own source code, without reading *any* files, keyboard, memory, etc.) Discuss a practical application of this problem."


The questions in this file are organized by the following categories; you may peruse this file sequentially, or jump directly to the category of your choice by clicking on one of the following links:

General administrative Q and A


The best way to see the latest state-of-the-art in theory and algorithms research is to look at the most recent papers published at the top theory & algorithms conferences and journals, namely:

Most of the citations in the Web pages above do not include only titles and abstracts rather than the full text / PDF of the actual paper, but if you do a Google search for the paper's title (and/or author list), you'll very quickly find the full text / PDF of the actual paper (usually located off of the author's home page).

To do specific topic searches for CS papers, two great online bibliographic search resources are Citeseer and Google Scholar, which data-mine the Web's publication archives and rank the papers by the number of citations (i.e., how many other papers refer to a given paper), so the most relevant papers tend to be listed first (like Google search does). It also provides the PDF/PS to most of the papers there (hundreds of thousands of CS papers in all). I highly recommended both Citeseer and Google Scholar as literature-searching resources!

Keep in mind that the sources listed above contain thousands of very interesting papers (as well as hundreds of thousands of other papers), so you can spend a lifetime on these sites and still not read everything. So please don't get lost or discouraged by this mountain of knowledge.

If you want a more gentle introduction to recent theory and algorithms research, I recommend starting with the Sipser theory textbook, and the Cormen et al. algorithms textbook (especially the "advanced topics" chapters) and tracking down the original papers mentioned in the "Chapter Notes" at the end of each chapter, and also looking at more recent papers published in those same conferences and journals, etc.) Some of the puns in the Cormen algorithms textbook are explained in http://mitpress.mit.edu/algorithms/profjokes.html - Enjoy! :)


Note: "extra credit" points will not hurt those who don't receive them in this class, since as I explained in class once, at the semester's end, I take a first pass and assign grades while *completely ignoring* extra credit points for everyone; then, I take a second pass and raise (but never lower) the grades of those who received enough extra credit points to bring them up into a higher category w.r.t. the first pass.

This is really the only fair way to implement "extra credit" so it is exactly that, namely "extra" (i.e., so it does not hurt those who didn't earn it). Also, I have no grades "quotas" - if everyone aces the course, then everyone will receive A's.

So, please view extra-credit as the positive and helpful opportunities that they are intended to be.

For the project, I offer one extra credit point for every day that you turn it in early (last day to turn it in is the day of the final).


Our CS6161 TA is Michael Skalak and his Email is mskalak13@gmail.com. Michael will conduct weekly problem-solving sessions over (free!) pizza, on Wednesdays at 7:00pm - 9:00pm, and I strongly encourage everyone to attend these sessions.

Please feel free to ask Michael questions about any of the materials (my office hours are right after each class meeting, or by appointment, or generally whenever you can catch me in my office - please don't be hesitant to find the TA or myself whenever you need help).


Q and A regarding the handouts/slides


Q and A regarding the project


General technical Q and A


Q and A regarding problem set 1


Q and A regarding the midterm


Q and A regarding the final


Return to Gabriel Robins' home page


EMail to EMail to robins@cs.virginia.edu