Subjects‎ > ‎

Computer Science

Intro to CS


BOINC Wiki Distributed computing wiki - Doesn't really have to do with programming does it? BOINC is similar to folding@home. Perhaps a Timewaster?

TopCoder - Software Development Contests and holds Tutorials as well. Obscure categorization

"Free" Technology Academy [v] Courses which seem to require payment.... The free materials are perhaps decent, I have not looked over them in depth. /g/'s IT resources

The New Boston [v] Programming, Software Tutorials, Science Tutorials (YouTube channel) - Might go in General catagory

What CompSci Students Should Know

Non-Technical CompSci Reading List

Recommended Computer Science Research Papers

BetterExplained A blog containing tips in articles - Math, Programming, WebDev. Maybe another that should go under General

Google Code University - Seems like it can go under General for the variety of topics included

Scratch A very gentle pseudo programming language



Charles Petzold, Code: The Hidden Language of Computer Hardware and Software [g] [a]

Brian Kernighan and Dennis Ritchie (K&R), The C Programming Language [f] [f 2.0] [g] [a]

K.N. King, C Programming: A Modern Approach [f] [a]

Al Aho and Jeff Ullman, Foundations of Computer Science [f] [g] [a] [This text combines the theoretical foundations of computing with essential discrete mathematics.]

J. Campbell and P. Gries and J. Montojo and G. Wilson, Practical Programming: An Introduction to Computer Science Using Python [f] [g] [a]

D. Knuth, The Art of Computer Programming [f] [g] [a]

Richard Blum, The Linux Command Line and Scripting Bible [f]

Ron White, How Computers work (9th Edition) [f]

Eric Lehman and Tom Leighton, Mathematics for Computer Science [f]

Algorithm Design and Analysis

Algorithm Design, Kleinberg and Tardos

Introduction to Algorithms, Cormen et al [f]

Introduction to Algorithms: A Creative Approach, Manber

Artificial Intelligence

Artificial Intelligence, a Modern Approach, Russell and Norvig [f] [solutions]

Paradigms of Artificial Intelligence Programming, Norvig [f]


Applied Combinatorics on Words, Lothaire

Automata Theory, Languages, and Computation,Hopcroft et al

Formal Language: A Practical Introduction by Webber

Introduction to the Theory of Computation by Sipser

Languages and Machines: An Introduction to the Theory of Computer Science by Sudkamp

Category Theory

Abstract and Concrete Categories: The Joy of Cats by Adamek et al

Category Theory by Awodey

Category Theory for Computer Scientists by Pierce


Compilers: Principles, Techniques and Tools by Aho et al

Engineering a Compiler by Cooper and Torczon

Modern Compiler Implementation by Appel

Computability Theory

Computability and Logic by Boolos and Jeffrey

Introduction to the Theory of Computation by Sipser

Computational Geometry: Computational Geometry: Algorithms and Applications by de Berg et al

Computer Architecture

Computer Architecture - A Quantitative Approach by Patterson and Hennessy

Computer Organization by Hamacher et al

Computer Systems - A Programmer's Perspective by Bryant and O'Hallaran

Structured Computer Organization by Tanenbaum

Computer Graphics

Computer Graphics: Principles and Practice by Foley et al

Fundamentals of Computer Graphics by Shirley and Marschner

Real-Time Rendering by Akenine-Moller et al

Computer Vision

Computer Vision: Algorithms and Applications by Szeliski

Computer Vision: A Modern Approach by Forsyth

Machine Vision: Theory, Algorithms, Practicalities by Davies


Cryptography Engineering by Schneier et al

Modern Cryptography by Katz and Lindell

Database Theory

Database Management Systems by Ramakrishnan and Gehrke

Database Systems: The Complete Book by Garcia-Molina et al

Distributed Programming

Distributed Systems: Concepts and Design by Dollimore et al

Introduction to Reliable Distributed Programming by Guerraoui and Rodrigues

Principles of Concurrent and Distributed Programming" by Ben-Ari

Functional Programming

Introduction to Functional Programming using Haskell by Bird and Wadler

Learn You a Haskell for Great Good by Lipovaca

The Little Schemer and The Seasoned Schemer by Friedman and Felleisen

ML for the Working Programmer by Paulson

Harold Abelson, Computer Science: Structure and Interpretation of Computer Programs [f] [g] [a]

General Logic

Logic for Computer Science: Modelling and Reasoning About Systems by Huth and Ryan

Mathematical Logic for Computer Scientists by Ben-Ari

Human-Computer Interaction: Designing the User Interface: Strategies for Effective Human-Computer Interaction by Shneiderman

Information Theory

Information Theory by Cover and Thomas

Information Theory and Reliable Communication by Gallager

Information Theory, Inference, and Learning Algorithms by MacKay


Computational Complexity by Papadimitriou

Computational Complexity: A Modern Approach by Arora and Barak

Introduction to the Theory of Computation by Sipser

Lambda Calculus: Lambda Calculi: A Guide for Computer Scientists by Hankin

Logic Programming

Prolog Programming for Artificial Intelligence by Bratko

The Art of Prolog: Advanced Programming Techniques by Shapiro

Machine Learning

Bayesian Reasoning and Machine Learning by Barber

Data Mining: Practical Machine Learning Tools and Techniques, by Witten and Frank

The Elements of Statistical Learning: Data Mining, Inference, and Prediction by Hastie et al

Introduction to Machine Learning by Alpaydin

Machine Learning by Mitchell

Mining of Massive Datasets by Ullman and Rajamaran

Pattern Recognition and Machine Learning by Bishop and Pattern Classification by Duda and Hart

Natural Language Processing

Foundations of Statistical Natural Language Processing by Manning and Schutze

Speech and Language Processing by Jurafsky and Martin


Computer Networking by Kurose and Ross

Computer Networks by Tanenbaum and Wetherall

Numerical Methods: Numerical Recipes in C: The Art of Scientific Computing by Press et al

OO Program Design: Design Patterns, Elements of Reusable Object-Oriented Software by Gamma et al

Operating Systems: Operating System Design and Implementation by Tanenbaum

Operations Research

Convex Optimization by Boyd and Vandenberghe

Linear Programming and Network Flows by Bazaraa et al

Pi Calculus: Communicating and Mobile Processes: The Pi Calculus by Milner

Program Analysis: Principles of Program Analysis by Nielson et al

Programming Language Concepts and DesignConcepts, Techniques and Models of Computer Programming by Van Roy and Haridi

Essentials of Programming Languages by Friedman et al

Modern Programming Languages: A Practical Introduction by Webber

Programming Languages: Application and Interpretation by Krishnamurthi

Programming Language Pragmatics by Scott

Programming Language Semantics

Formal Semantics of Programming Languages by Winskel

Foundations for Programming Languages by Mitchell

Semantics Engineering with PLT Redex by Felleisen

Semantics of Programming Languages: Structures and Techniques by Gunter

Quantum Computation

Quantum Computation and Quantum Information by Nielson and Chuang

Randomized Algorithm Design and Analysis

Randomized Algorithms by Motwani and Raghavan

Probability and Computing, Randomized Algorithms and Probabilistic Analysis by Mitzenmacher and Upfal

Security Engineering: Security Engineering by Anderson

Software Engineering: Software Engineering by Sommerville

Term Rewriting: Term Rewriting and All That by Baader and Nipkow

Type Theory

Foundations for Programming Languages by Mitchell

Types and Programming Languages by Pierce

Reference Books

Code Complete: A Practical Handbook of Software Construction by McConnell

Crystal Clear: A Human Powered Methodology for Small Teams by Cockburn

How to Design Programs by Felleisen et al

The Mythical Man Month by Brooks

The Pragmatic Programmer by Hunt and Thomas

Refactoring: Improving the Design of Existing Code by Fowler et al

Why Programs Fail: A Guide to Systematic Debugging by Zeller

List of Compilers/IDEs

Microsoft Visual Studio Express  - IDE General

wxDev-C++ / Dev-C++ - IDE

Code::Blocks - crossplatform C++ IDE

GCC - just a compiler

NASM - Netwide Assembler, just compiler

FASM - flat Assembler, IDE and compiler

Vim / Emacs / Notepad++ - Text editors that can be extended into an IDE

Eclipse - General IDE

Netbeans - General IDE

QTCreator - Cross Platform IDE

Computation Theory

Youtube - Real World Turing Machine

Play Hookey Basic Comp Thoery - Perhaps should go under "Engineering" page with "Electronics" because it doesn't have much emphasis on computing Control & Embedded Systems

The Elements of Computing Systems

Youtube/ Coderisland - Intro to Theory of Computation (Advanced)


Google Code Search for code

Wolfram Alpha/Web & Computer Systems

Pro/g/rammer's /g/uide

Programming TI calculators/BASIC [Often these calculators are the students' first glimpse to the programming world.]

Thinking in Java & Thinking in C++ [b] Contains links to two free BOOKS

Higher Computing for Everyone Teaches programming using the C language

Carl Herold | Higher Computing For Everyone [e] Basics of Programming With Focus On C - Same as the link above

Open Data Structure

How to Think Like a Computer Scientist: Learning with Python - Introduction to programming for absolute beginners, using the Python language

Become a Programmer, Motherfucker 

Starting to Program

Codeacademy Learn coding in a simple and interactive way. No need to set up an IDE for this. Currently has a focus on scripting

Practices / Challenges / Contests

CodingBat Practice your Java and Python coding skills with the excersies. All compiling and code is run in on the server giving "real-time" responses!
Project Euler [e] Practice Coding (With Number Theory)
Ace Delos
Hack This Site Train your 1337 hacking skills on this site legally


A Layman’s Explanation of P=NP

Youtube/ MIT’s Introduction to Computer Science & Programming

Cellular Automata Comprehensive cellular automata site with lots of resources

Conway's Game of Life Cellular automata wiki

Practice exams for intro to CS University course

Dictionary of Algorithms

Cryto Handbook

Bayesian Reasoning and Machine Learning

Carnegie Mellon's 15-112: Fundamentals of Programming - It has a syllabus and the schedule of the class containing what students have learned. 

C, C++, C#

Learn C++ [e] Starting C++ C & C++

Teach Yourself C++ in 21 Days

Youtube/ SkyeShatter [v] C++ reference & other site pages include tutorials

A C# Crash Course

XNA Tutorials same author as the C# Crash Course


Javanotes [e] Starting Java

The Java Tutorials [e] Concise Java Mathematics & Java


Learn Python The Hard Way [e] Starting Python Book

Invent with Python [b] Beginner-level free Python book with a focus on game programming Python Documentation Index

The Python Tutorial

Learn Python tutorial

Online Python Tutor View python code executed step by step to see how it works (for people new to programming)


Learn You a Haskell for Great Good! Guide to Haskell

Real World Haskell Real Work Haskell


The basics of FORTRAN

Other Languages CMD Prompt Basics

Practical Common Lisp Android

Computational Science TU Delft course. Teaches how to use MATLAB via physics BSc problems.

Web Development

Opera: Web Standards Curriculum Complete beginner to having a solid grounding in standards-based Web design, including HTML, CSS, and JavaScript development

MySQL Reference Manual [b]

Webdev Reference & Documentation From Mozilla

J-Query and Javascript tutorials [v]

Ruby on Rails Optimized open-source web framework

YUI Theater [v] Lectures on web technologies

W3Schools Web development tutorials on HTML, XML, scripting, services, and building.

HTML Pastebin Lessons


Learn to Subnet Learn to Subnet

Beej's Guide to Network Programming A nice tutorial on programming with sockets. Inside is also how to make a simple server and client!

Linux / *nix

Compilation of Linux/Ubuntu Resources by Reddit

Slackware Linux Essentials [b]  The slackware book is in essence a tutorial for installing and learning Slackware, which is considered to be one of the most learning intensive distributions of GNU/Linux available. There is a saying, "If you learn Redhat, you know Redhat. If you learn Slackware, you know Linux." If you take a quick glance through the ebook, you'll realize that anyone interested in Linux will find relevant information here such as partitioning hard drives, compiling the kernel and software. how to use bash, installing and editing windows managers and desktop environments, or managing network connections and protocols. The Slackware ebook is hands down the most important tool I came across as I began learning about Linux. -Anonymous

UNIX in 10 Minutes Starting Unix

The Linux Documentation Project

Game Development

DirectX Tutorial Tutorial for learning DirectX, geared toward game development

The Ultimate Indie Game Developer Resource List A bunch of links for independent game developers

OpenGL Shading Language

OpenGL Tutorial


Cheat-Sheets Cheat sheets for many programming languages

DevCheatSheet Tons of cheatsheets for lots of programming languages, frameworks, editors, environments, and more

C++ Reference C++ Term Reference

Self-Taught Computer Scientist A reading list for those who want to be computer scientists. General coverage. Also includes books that don't have to do directly with learning CS but rather gives the mindset of a computer scientist.

CompSci Intro Books

Subpages (1): Intro to CS