Computer Science
From Boozled
Contents |
Description
It should be possible to collect all the material required to complete a Degree in computer science. Please don't cut and paste content from other sites unless it's appropriate and definitely not if it's not got the appropriate license. We know this will mean we get dead links but that the internet. Please cite all references and use links to all external material.
I expect to lean heavily on the MIT Free Online Course Materials. I wish the Open University could afford to open up their courses in the same way. Ideally I would like to have material from a broad range of course or universities if possible.
Curriculum
This is where I intend to give some routes through the courses once there is enough material here. For now I recommend people start with either HtDP or SICP but don't assume you need to do both. If you are new to programming or want to improve your programming then HtDP is a good choice and starts off easily enough for most. If you have been programming for some time and have some background Mathematics then I would choose SICP.
If you are happy to design your own curriculum then have a look at the ACM Curricula Recommendations. In particular CS2001 and the CS2008 update to CS2001. There are also some sample Curricula at Berkeley (see chapter 4) and the Bachelor of Science in Mathematics with Computer Science/Course 18-C at MIT
It's safe to start with either SICP or HtDP because both teach some fundamentals that are required for other Computer Science topics, namely, programming skills. While programming is not the most important aspect of Computer Science it is necessary to have some programming skills to get the most from it, at least thats my experience so far.
Courses Materials
6.000 How To Design Programs
This is based on How To Design Programs or HtDP, a free book. There is some more information on this book, HtDP at Wikipedia. This book appears to be becoming the preferred course text for a first course in programming. It start off gently enough but gets progressively harder. SICP starts off easy (first 10%) then gets hard, then very hard. I would personally recommend people start with HtDP first and if they feel the need to tackle SICP then do so.
Matthias Felleisen Course is based on this text.
Why not SICP Another Power Point on why SICP is a bad first choice course.
Some more interesting reading about Why HtDP is a good first choice course. Some of the slides are excellent.
I am noticing a theme where people (in particular people related with HtDP) are quite hard on SICP. I have no idea if this view is justified yet because I have not studied both books and have only had a biased view for HtDP from online material so far.
6.001 Structure and Interpretation of Computer Programs
This is based on Structure and Interpretation of Computer Programs or SICP, a free book. There is some more information on this book at SICP at Wikipedia. MIT used to run their 6.001 Course using this book, hence the same name. For those that would like to see what this book is about there is the There is also * SICP Lectures freely available online.
Background about the MIT 6.001 course
This book has been used for the following courses, MIT 6.001, Caltech CS 1, and Berkeley CS 61. This kind of gives an idea of the caliber of the book.
Email List
Join the SICP Mailing List
Further Reading
You can find another list of free reading resource here
Please let me know if any pages I point at are infringing copyrights etc and I will remove the links. I do a cursory check of the pages but it's not exhaustive.
Programming and Languages
- Early Draft of Concepts, Techniques, and Models of Computer Programming
- Parsing Techniques, a Practical Guide
- Programming Languages: Application and Interpretation Free Book!
- The Scheme Programming Language Free Book!
- Practical Common Lisp by Peter Seibel Free Book! Excellent resource on LISP.
- Comon Lisp the Language 2nd Edition Free Book!
- A practical Theory of Programming Free book!
- Developing Applications With Ocaml Free Book!
- Object Oriented Systems Development Free Book!
- Designing and Building Parallel Programs Free Book!
- How to be a Programmer: A Short, Comprehensive, and Personal Summary
Machine Learnging
- Introduction to Machine Learning Free Book!
- Machine Learning, Neural and Statistical Classification Free Book!
- Information Theory, Inference, and Learning Algorithms Free Book!
Compilers
- Lets Build a Compiler Tutorial
- Compilers and Compiler Generators, an introduction with C++ Free Book!
Tools
- Subversion Free Book!
Papers and Opinions
- Paper on SICP and why it is sometimes the wrong first choice for a computing course.
- Paper on SICP This is the same paper as the one above. It is here to avoid dead links
- Scheme Publications Some Hard reading.
Non Free Resources
List of Books the Author Considers Fundamental to Comp Sci.
Free Resources
- CS2001 Curriculum from the ACM (pdf)
- SICP Lectures
- 6.001 Structure and Interpretation of Computer Programs at MIT
- Structure and Interpretation of Computer Programs The online book.
- SICP at Wikipedia
- The Scheme Programming Language This is an excellent free book.
- Teach Scheme Excellent place to start learning Scheme.
- www.scheme.com A lot of material on Scheme here. This includes some free books and Tutorials
- PLT Scheme Email Archive A decent list if you are interested in Scheme. Quite a few interesting historical discussions.
- Why Scheme and not C\C++ Java etc.
- Computer Science: Abstraction to Implementation Free Book!
- Peter Norvigs Site There are a few interesting articles on this site.
- List of Important Computer Science publications at Wikipedia
- Data Structures and Algorithms with Object-Oriented Design Patterns in Python Free book!
- A Computer Science Canon List of the authors favorite papers.
- Springer Reading Room Register for Free.


