Programming Resources

Ruby (+59)
SilasBarta (-12) /* Haskell */ NOT fast moving!
XiXiDu (+1517) Added 'Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms' by Robert Sedgewick
XiXiDu (+1999) Added a novice section for people with little to no math and programming background to get started.
XiXiDu (+1531/-697) Moved "The Art of Computer Programming" to the Algorithm section. Instead added "Computer Architecture: A Quantitative Approach" to the "How computers work" section. Further added "Introduction to the Theory of Computation" to Computer Science.
XiXiDu (+19/-189) Removed the numerical labels. In some cases it was misleading. Also makes it easier to add new items in-between. Further added a "Haskell Cheat Sheet".
gwern (+285) /* R */ +CMU
XiXiDu (+4)
XiXiDu (+1680/-586) Added the book "Algorithmic Adventures" as suggested by Viliam Bur
XiXiDu (+133) Added an "EASY" label.

Programming knowledge is not mandatory for LessWrong but computer science and programming is a popular topic among LessWrong members and it is also instrumentally useful to understand how computers work and how to program them. This post contains a collection of Programming Resources

The ubiquity of computers in everyday life in the 21st century justifies the centrality of programming languages to computer science education. Programming languages is the area that connects the theoretical foundations of computer science, the source of problem-solving algorithms, to modern computer architectures on which the corresponding programs produce solutions.  Given the speed with which computing technology advances in this post-Internet era, a computing textbook must present a structure for organizing information about a subject, not just the facts of the subject itself.  In this book, Michael Scott broadly and comprehensively presents the key concepts of programming languages and their implementation, in a manner appropriate for computer science majors.

This easy-to-use, fast-moving tutorial introduces you to functional programming with Haskell. You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications. Real World Haskell takes you through the basics of functional programming at a brisk pace, and then helps you increase your understanding of Haskell in real-world issues like I/O, performance, dealing with data, concurrency, and more as you move through each chapter.

Software developers and computer scientists have eagerly awaited this comprehensive revision of Robert Sedgewick’s landmark texts on algorithms. Sedgewick has completely revamped all five sections, illuminating today’s best algorithms for an exceptionally wide range of tasks. This shrink-wrapped package brings together Algorithms in C, Third Edition, Parts 1-4 and his new Algorithms in C, Third Edition, Part 5. Together, these books are definitive: the most up-to-date and practical algorithms resource available. Sedgewick masterfully blends theory and practice, making Bundle of Algorithms in C, Third Edition an essential resource for computer science researchers, students, and working developers alike. The first book introduces fundamental concepts associated with algorithms; then covers data structures, sorting, and searching. The second book focuses entirely on graphing algorithms, which are critical for a wide range of applications, including network connectivity, circuit design, scheduling, transaction processing, and resource allocation. Together, these books present nearly 2,000 new exercises, hundreds of new figures, and dozens of new programs. In both books, Sedgewick focuses on practical applications, giving readers all the information, diagrams, and real (not pseudo-) code they need to confidently implement, debug, and use the algorithms he presents.

Novice: Getting Started

EASY

This section is meant for people with little to no background in mathematics, programming and computer science.

In this course you will learn key concepts in computer science and learn how to write your own computer programs in the context of building a web crawler.

There is no prior programming knowledge needed for this course. Beginners welcome!

At the end of this course you will have a rock solid foundation for programming in Python and built a working web crawler. This course will prepare you to take many of Udacity's more advanced courses.

“Invent Your Own Computer Games with Python” is a free book (as in, open source) and a free eBook (as in, no cost to download) that teaches you how to program in the Python programming language. Each chapter gives you the complete source code for a new game, and then teaches the programming concepts from the example.

“Invent with Python” was written to be understandable by kids as young as 10 to 12 years old, although it is great for anyone of any age who has never programmed before.

The book intends to show a layman the basic mechanical principles of how computers work, instead of merely summarizing how the different parts relate. He starts with basic principles of language and logic and then demonstrates how they can be embodied by electrical circuits, and these principles give him an opening to describe in principle how computers work mechanically without requiring very much technical knowledge. Although it is not possible in a medium sized book for layman to describe the entire technical summary of a computer, he describes how and why it is possible that elaborate electronics can act in the ways computers do. In the introduction, he contrasts his own work with those books which "include pictures of trains full of 1s and 0s."

The new standard for computer architects, designers, and industry management. This book offers a new approach to understanding computer architecture, emphasizing the quantitative aspects of design and practical trade-offs that must be made. Readers will learn the principles and engineering fundamentals that allow designers to make the right design choices.

This work is not about computer programming in the narrow sense, but about the algorithms and methods which lie at the heart of most computer systems. At the end of 1999, these books were named among the best twelve physical-science monographs of the century by American Scientist, along with: Dirac on quantum mechanics, Einstein on relativity, Mandelbrot on fractals, Pauling on the chemical bond, Russell and Whitehead on foundations of mathematics, von Neumann and Morgenstern on game theory, Wiener on cybernetics, Woodward and Hoffmann on orbital symmetry, Feynman on quantum electrodynamics, Smith on the search for structure, and Einstein's collected papers.

Michael Sipser's emphasis on unifying computer science theory - rather than offering a collection of low-level details - sets the book apart, as do his intuitive explanations. Throughout the book, Sipser builds students' knowledge of conceptual tools used in computer science, the aesthetic sense they need to create elegant systems, and the ability to think through problems on their own.

This work is not about computer programming in the narrow sense, but about the algorithms and methods which lie at the heart of most computer systems. At the end of 1999, these books were named among the best twelve physical-science monographs of the century by American Scientist, along with: Dirac on quantum mechanics, Einstein on relativity, Mandelbrot on fractals, Pauling on the chemical bond, Russell and Whitehead on foundations of mathematics, von Neumann and Morgenstern on game theory, Wiener on cybernetics, Woodward and Hoffmann on orbital symmetry, Feynman on quantum electrodynamics, Smith on the search for structure, and Einstein's collected papers.

1.

2.

3.

4.

5.

1.

2.

3.

4.

5.

1.

2.

3.

4.

5.

6.

1.

2.

3.

1.

2.

3.

4.

5.

  • Khan Academy Introduction to programming and computer science (using Python) EASY

    1.

2.

3.

4.

5.

6.

7.

8.

9.

1.

2.

5.

6.

7.

1.

2.

3.

4.

5.

6.

1.

2.

1.

4.

5.

6.

7.

8.

1.

2.

3.

4.

1.

2.

3.

8. CMU OLI: "Probability & Statistics"; introduction to statistics, heavy on problems & exercises; R is one of the supported languages but is not a focus of the course - one is probably best off first taking even a brief introduction to R syntax & functions like Code School's "Try R".

1. Algorithmic Adventures

There is a considerable, satisfying and underappreciated depth in the science of computing, it offers so much more than simply a driving licence for using a computer. The author of this book is a top researcher working on the fundamentals of informatics, and he has considerable experience teaching complex subjects in a simple manner. In this book he invites the reader to explore the science of computing, convinced that a good explanation of even the most basic techniques can demonstrate the power and magic of the underlying principles. The author starts with the development of computer science, algorithms and programming, and then explains and shows how to exploit the concepts of infinity, computability, computational complexity, nondeterminism and randomness. Finally, he offers some insight into emerging computing paradigms such as biological computing and quantum computing. This book is a fascinating read for students of all levels, and for those curious to learn about the science and magic of algorithmics and its role in other scientific disciplines.

2. UdacityEASY

Udacity is a private educational organization founded by Sebastian Thrun, David Stavens, and Mike Sokolsky, with the stated goal of democratizing education It is the outgrowth of free computer science classes offered in 2011 through Stanford University. As of May 2012 Udacity has six active courses. The first two courses ever launched on Udacity both started on 20th February, 2012, entitled "CS 101: Building a Search Engine", taught by Dave Evans, from the University of Virginia, and "CS 373: Programming a Robotic Car" taught by Thrun. Both courses use Python.

3. The Annotated Turing: A Guided Tour Through Alan Turing's Historic Paper on Computability and the Turing Machine

2.4. New Turing Omnibus (New Turning Omnibus : 66 Excursions in Computer Science)

3. UdacityEASY

Udacity is a private educational organization founded by Sebastian Thrun, David Stavens, and Mike Sokolsky, with the stated goal of democratizing education It is the outgrowth of free computer science classes offered in 2011 through Stanford University. As of May 2012 Udacity has six active courses. The first two courses ever launched on Udacity both started on 20th February, 2012, entitled "CS 101: Building a Search Engine", taught by Dave Evans, from the University of Virginia, and "CS 373: Programming a Robotic Car" taught by Thrun. Both courses use Python.

4.5. Introduction to Artificial Intelligence

5.6. Computability and Logic

Resources that can be understood with little or no knowledge of computer science and programming are marked EASY.

1. CODE The Hidden Language of Computer Hardware and SoftwareEASY

3. UdacityEASY

Khan Academy Introduction to programming and computer science (using Python)EASY

1. Invent Your Own Computer Games with PythonEASY

1. C++ Programming in Easy StepsEASY

Load More (10/25)