Thursday, March 26, 2009

Introduction to CS

Today I attended a curriculum revision meeting at my school. In particular, two new courses were discussed, and I feel that their quality will be paramount to the possible success of the revision effort. The courses are Introduction to CS and Problem Solving. The aim of the former course is to introduce incoming students to the algorithmic way of thinking and its applications in CS, as well as to introduce them to basic programming skills. Historical remarks on, and context for, the material covered in the course will be given to put it into perspective.

Can any of my readers point out suitable textbooks for such a course and/or examples of courses you are familiar with that have a similar emphasis?

Any experience report on problem solving courses would also be most welcome. Thanks in advance!

7 comments:

Barak A. Pearlmutter said...

"Computational Beauty of Nature" by Gary Flake, MIT Press.

Mohammad said...

Hi Luca,
When I was a freshman, I took two courses on Foundations of Computer Science (I and II), and I believe the textbook for the course was Aho and Ullman's Foundations of Computer Science. I searched on the net and it seems that the book is now out of print and available online:
http://infolab.stanford.edu/~ullman/focs.html

Cheers,

Anonymous said...

For problem solving, IOI and ACM ICPC are nice sources.
I agree with Mohammad, I have studied (read enjoyed!) the same book when I started studying computer science. I would also suggest "Concrete Mathematics" by Graham, Knuth, Patashnik's. I also like courses titled "Great Ideas in Computer Science", which is becoming more common.

Maybe it is time for a new book.

Anonymous said...

A book by Sedgewick and Wayne, coming from an Intro CS course at Princeton is pretty good in terms of using real-world examples that are actually interesting and less contrived than other attempts I've seen.

The book is available in hyperlinked and downloadable form here: http://www.cs.princeton.edu/introcs/home/

(Disclaimer: I am not from or affiliated with Princeton in any way, but I have helped teach a course based on this book in the past.)

Anonymous said...

There is a course called "Problem Solving in CS" which is given by Tom Henzinger at EPFL:
http://mtc.epfl.ch/courses/ProblemSolving-2008/
The course is dedicated to new PhD students.

Silvio said...
This comment has been removed by the author.
Silvio said...

Hi Luca,

As a Python fan I cannot help but signal "How to Think Like a Computer Scientist: Learning with Python" which is available at http://openbookproject.net/thinkCSpy/

Another book I liked is "The Practice of Programming" by Brian Kernighan and Rob Pike, published by Addison-Wesley. The book's website is at http://plan9.bell-labs.com/cm/cs/tpop/

I would also suggest "How to Solve It" by George Polya; however, that's a self-improvement manual for teachers rather than a textbook for students.

Best regards,

Silvio