From the bluebook:
Time: 11:35-12:50 MW
CS201 is the basic introductory course for Computer Science; in particular, it is not a "service'' course on programming, or computer literacy, or whatever. Its purpose is to teach the principles of computing and information processing, with attention given to all levels of the computing hierarchy: from machines, to operating systems, to programming languages, to theory of computation. Details about course coverage can be found in the syllabus.
The pre-requisite of CPSC 112 is not strictly necessary -- if you have done any programming at all, you should be fine, and even if you've done none at all, you may still be fine. It will be more important for you to be pretty good at thinking abstractly. I hesitate to say "good at math", because most people will equate that to having a strong background in calculus, whereas we will not use any calculus at all in this course. If you're a logical thinker, and are good at solving problems, you should be fine. If you have any questions about your preparedness, feel free to email me with a description of your background.
There are two required textbooks for the course:
The New Turing Omnibus -- 66 Excursions in Computer Science
The Haskell School of Expression --
Both books should be available now in the Yale Book Store -- if not, please let me know.
This is not a programming course per se, indeed an underlying theme is that Computer Science is more than just programming. On the other hand, programs are concrete manifestations of many abstractions underlying Computer Science, and thus it is helpful to use a programming language to convey many of the ideas in this course. We will use the functional language Haskell for this purpose. You will find that Haskell is quite a bit different from other programming languages that you have used, but it is well suited to this course, and will hopefully expand your understanding of what a programming language is. Pretty everything you'd ever want to know about Haskell can be found at the website haskell.org.
(Other instructors teaching this course use the Scheme programming language. In some ways Haskell can be viewed as a strongly-typed variant of Scheme.)
The Haskell implementation that we will use is called GHC, and it is installed in the Department's educational computing cluster (call the Zoo), which is located on the third floor of A.K. Watson Hall (the Computer Science Department, at 51 Prospect Street). You can also easily download your own version of GHC from haskell.org/ghc.
Please visit: zoo.cs.yale.edu/cgi-bin/accounts.pl to register for this class in the Zoo, even if you already have an account in the Zoo. By registering for the class, a work directory will be created for you earmarked for this class.
Details on how to use Haskell and GHC will be forthcoming.
Web Page and Newsgroup:
This web page (plucky.cs.yale.edu/cs201)
will the source of programming assignments, solutions, and other relevant
information. Be sure to check
the website regularly -- it may contain
important information, such as hints for and/or corrections to homework assignments!
We will also use the Yale "classes*v2" server, at
classesv2.yale.edu, for general