Hypertext Markup Language (HTML)
HTML defines the structure and contents of a web page. Use HTML tags to display content on a web page.
Overview | Beginner’s Guide | Full Reference Documentation
Cascading Style Sheets (CSS)
CSS defines the style and presentation of a web page. Use CSS to define how HTML elements look.
Overview | Beginner’s Guide | Full Reference Documentation
JavaScript
JavaScript defines the behavior of a web page. Use JavaScript to react to mouse clicks and other user interactions.
Overview | Beginner’s Guide | Full Reference Documentation
Further Reading and Resources
Books
Websites
- Codecademy: Accessible tutorials for JavaScript, HTML, CSS and many programming languages
- Code Combat: Learn JavaScript by playing a game
- CSS Diner: You can practice the basics of CSS through a series of 32 challenges.
- CodinGame: Helps you work on problem solving skills and learn programming basics through a turn-basedgame.
Tools and Technologies
Programming Text Editors
- Visual Studio Code: VS Code, is a source-code editor made by Microsoft with the Electron Framework, for Windows, Linux and macOS.
- CodePen: Web page to play around with HTML, CSS, and JavaScript
- JSFiddle: Web page to play around with HTML, CSS, and JavaScript
- Sublime Text: Cross-platform text editor
- Notepad++: Windows-only free text editor
- TextMate 2: Mac-only text editor
Hosting
- Site44: Host static web pages on Dropbox
- Heroku: Hosting for full web apps (advanced, but arguably the easiest way to deploy dynamic web apps)
Advanced Tools and Debuggers
- Chrome Developer Tools: Debug and inspect the contents of your web page in the Google Chrome browser.
- Firefox Developer Tools:Debug and inspect the contents of your web page in the Firefox browser.
- LT Debug from LambdaTest
- Airbrake
- dbForge SQL Tools
Meta-Lists
- 25 Free Computer Science Ebooks
- Cheat Sheets (Free)
- Free Tech Books
- Microsoft Press: Free E-Books
- MindView Inc
- O’Reilly’s Open Books Project
- TechBooksForFree.com
- Theassayer.org
- Wikibooks: Programming
Graphics Programming
- DirectX manual (draft)
- Learning Modern 3D Graphics Programming (draft)
- GPU Gems
- GPU Gems 2 — ch 8,14,18,29,30 as pdf
- GPU Gems 3
- Graphics Programming Black Book
- ShaderX series
Language Agnostic
- 97 Things Every Programmer Should Know
- 97 Things Every Programmer Should Know — Extended
- Algorithms and Data-Structures (PDF)
- Algorithms (draft)
- The Architecture of Open Source Applications
- The Art of Unix Programming
- Best Kept Secrets of Peer Code Review
- Binary Trees
- Category Theory for Computing Science
- The Cathedral and the Bazaar
- Clever Algorithms
- Communicating Sequential Processes (PDF) — Tony Hoare
- Compiler Construction (PDF)
- Computer Musings (lectures by Donald Knuth)
- Data Structures and Algorithms: Annotated Reference with Examples
- Database Fundamentals (PDF)
- Data-Intensive Text Processing with MapReduce (PDF)
- The Definitive Guide to Building Code Quality
- Designing Interfaces by Jennifer Tidwell
- Digital Signal Processing For Engineers and Scientists
- Distributed systems for fun and profit
- Domain Driven Design Quickly
- Don’t Just Roll the Dice
- Essentials of Metaheuristics by Sean Luke
- Essential Skills for Agile Development
- A Field Guide To Genetic Programming
- Flow based Programming
- Foundations of Computer Science — Al Aho and Jeff Ullman
- Foundations of Programming
- Getting Real
- Getting started with Open source development (PDF)
- The Great Tree List Recursion Problem
- Guide to the Software Engineering Body of Knowledge
- How Computers Work
- How to Design Programs
- How to Think Like a Computer Scientist
- How to Write Parallel Programs
- How to write Unmaintainable Code
- I Am a Bug
- An Introduction to the Theory of Computation
- Introduction to Functional Programming (class lectures and slides)
- Introduction to Information Retrieval
- Is Parallel Programming Hard, And, If So, What Can You Do About It?
- Learn to Program
- Let’s Build a Compiler
- Linkers and loaders
- Linked List Basics
- Linked List Problems
- Mathematical Logic — an Introduction (PDF)
- Matters Computational
- Mining of Massive Datasets
- NASA Manager Handbook for Software Development (PDF)
- NASA Software Measurement Handbook
- Object-Oriented Reengineering Patterns
- Online Course Materials
- OO Design
- Operating Systems and Middleware (PDF and LaTeX)
- Patterns and Practices: Application Architecture Guide 2.0
- Patterns of Software: Tales from the Software Community (PDF)
- Planning Algorithms
- PNG: The Definitive Guide
- Pointers And Memory
- Producing Open Source Software
- Programming Languages: Application and Interpretation
- Programming Methodology
- Programming Pearls
- Project Oberon (PDF)
- Seamless Object-Oriented Software Architecture
- Security Engineering
- Structure and Interpretation of Computer Programs
- Summary of the GoF Design Patterns
- The Little Book of Semaphores — Allen B. Downey
- The TCP/IP Guide
- Think Bayes: Bayesian Statistics Made Simple — Allen B. Downey
- Think Stats: Probability and Statistics for Programmers (PDF, code written in Python) — Allen B. Downey
- Think Complexity — Allen B. Downey
- Type Theory and Functional Programming
- Understanding IP Addressing: Everything you ever wanted to know (PDF)
Android
Autotools
ASP.NET MVC
Assembly Language
- Programming from the Ground Up (PDF)
- Paul Carter’s Tutorial on x86 Assembly
- Software optimization resources by Agner Fog
Bash
- Advanced Bash-Scripting Guide
- Bash Guide for Beginners by Machtelt Garrels
- Lhunath’s Bash Guide
- The Command Line Crash Course (also a Powershell reference)
C / C++
- Beej’s Guide to Network Programming
- Beej’s Guide to C Programming
- The C book
- C++ Annotations
- C++ GUI Programming With Qt 3
- CS106X Programming Abstractions in C++
- Essential C
- Introduction to Design Patterns in C++ with Qt 4 (PDF)
- Learn C the hard way
- Matters Computational: Ideas, Algorithms, Source Code, by Jorg Arndt
- The new C standard — an annotated reference
- Object Oriented Programming in C (PDF)
- Software optimization resources by Agner Fog
- Thinking in C++, Second Edition
- Also see: The Definitive C++ Book Guide and List
Clojure
CoffeeScript
ColdFusion
D / DTrace
DB2
- Getting started with DB2 Express-C (PDF)
- Getting started with IBM Data Studio for DB2 (PDF)
- Getting started with IBM DB2 development (PDF)
Delphi / Pascal
Django
Emacs
Erlang
Flex
F Sharp
- The F# Survival Guide
- F Sharp Programming in Wikibooks
- Real World Functional Programming (MSDN Chapters)
Forth
Git
Go
Grails
Haskell
HTML / CSS
Java
- Java Application Development on Linux by Carl Albing and Michael Schwarz(PDF)
- How to Think Like a Computer Scientist
- The Java EE6 Tutorial (PDF)
- Java Thin-Client Programming
- Sun’s Java Tutorials
- Thinking in Java
- OSGi in Practice (PDF)
- Category wise tutorials — J2EE
- Introduction to Programming Using Java — David J. Eck
- Effective Java
- Introduction to Programming Using Java
JavaScript
- Crockford’s JavaScript
- Eloquent JavaScript
- Essential Javascript & jQuery Design Patterns for Beginners
- JavaScript Essentials
- jQuery Fundamentals (starts with JavaScript basics)
- Mozilla Developer Network’s JavaScript Guide
- JavaScript Allongé
- Learning JavaScript Design Patterns
- O’Reilly Programming JavaScript Applications — Early Release
JavaScript (Node.js specific)
LaTeX
Linux
- Advanced Linux Programming
- GNU Autoconf, Automake and Libtool
- GTK+/Gnome Application Development
- The Linux Development Platform (PDF)
- Linux Device Drivers by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman
- The Linux Kernel Module Programming Guide
- Secure Programming for Linux and Unix
Lisp
- Common Lisp the Language, 2nd Edition
- Common Lisp: A Gentle Introduction to Symbolic Computation — David S. Touretzky
- Common Lisp Quick Reference
- Let Over Lambda — 50 Years of Lisp
- Natural Language Processing in Lisp
- On Lisp
- Practical Common Lisp
- Successful Lisp: How to Understand and Use Common Lisp — David Lamkins
- Sketchy LISP — Nils Holm
Lua
- Programming In Lua (for version 5)
Mathematica
Maven
- Better Builds with Maven
- Maven by Example
- Maven: The Complete Reference
- Repository Management with Nexus
- Developing with Eclipse and Maven
Mercurial
.NET (C# / VB / Nemerle / Visual Studio)
- C# Essentials
- C# Programming — Wikibook
- C# Yellow Book (intro to programming)
- Charles Petzold’s .NET Book Zero
- Data Structures and Algorithms with Object-Oriented Design Patterns in C#
- Entity Framework
- Moving to Microsoft Visual Studio 2010
- Nemerle
- Programmer’s Heaven C# School Book (covers C# 1.0 and 2.0)
- Threading in C#
- Visual Basic Essentials
- Visual Studio Tips and Tricks (VS 2003–2005 only)
NoSQL
- CouchDB: The Definitive Guide
- The Little MongoDB Book
- The Little Redis Book
- The Little Riak Book
- Graph Databases
Oberon
- Programming in Oberon (PDF)
Objective-C
OCaml
- Introduction to Objective Caml (PDF)
- Objective Caml for Scientists (first chapter only)
- Unix System Programming in OCaml
- Developing Applications With Objective Caml
Oracle Server
- Oracle’s Guides and Manuals
Oracle PL/SQL
- PL/SQL Language Reference
- PL/SQL Packages and Types Reference
- Steven Feuerstein’s PL/SQL Obsession — Videos and Presentations
Parrot / Perl 6
- Using Perl 6 (work in progress)
Perl
- Beginning Perl
- Embedding Perl in HTML with Mason
- Essential Perl
- Extreme Perl
- Higher-Order Perl
- The Mason Book
- Modern Perl 5
- Perl & LWP
- Perl for the Web
- Perl Free Online EBooks (meta-list)
- Perl The Hard Way
- Practical mod_perl
- Web Client Programming with Perl
PHP
- PHP Essentials
- Practical PHP Programming (wiki containing O’Reilly’s PHP In a Nutshell)
- Symfony2
- Zend Framework: Survive the Deep End
PowerShell
Prolog
- Adventure in Prolog
- Applications of Prolog
- Building Expert Systems in Prolog
- Introduction to Prolog for Mathematicians
- Learn Prolog Now!
- Logic, Programming and Prolog (2ed)
- Natural Language Processing in Prolog
- Natural Language Processing Techniques in Prolog
- Prolog Programming A First Course
- Prolog Techniques
- Simply Logical
- Visual Prolog 7.2 for Tyros
PostgreSQL
Python
- Byte of Python
- Data Structures and Algorithms in Python
- Dive into Python
- Dive into Python 3
- Hacking Secret Cyphers with Python — Al Sweigart
- How to Think Like a Computer Scientist: Learning with Python
- Invent Your Own Computer Games With Python — Al Sweigart
- Learn Python The Hard Way
- Natural Language Processing with Python
- Python Bibliotheca
- Python for Fun
- Python for Informatics: Exploring Information
- Python for you and me
- Snake Wrangling For Kids
- Think Python (PDF) — Allen B. Downey
R
Ruby
- Learn Ruby the hard way
- MacRuby: The Definitive Guide
- Mr. Neighborly’s Humble Little Ruby Book
- Programming Ruby
- Ruby Best Practices
- Why’s (Poignant) Guide to Ruby (mirror)
Ruby on Rails
Rust
Scala
- Exploring Lift (published earlier as “The Definitive Guide to Lift”, PDF)
- Lift
- Pro Scala: Monadic Design Patterns for the Web
- Programming in Scala, First Edition
- Programming Scala
- Scala By Example (PDF)
- A Scala Tutorial for Java programmers (PDF)
- Xtrace
- Another tour of Scala
Scheme
- Concrete Abstractions: An Introduction to Computer Science Using Scheme
- The Scheme Programming Language Edition 3, Edition 4
- Simply Scheme: Introducing Computer Science
Sed
Smalltalk
- Dynamic Web Development with Seaside
- Free Online Smalltalk Books (meta-list)
- Squeak By Example (Smalltalk IDE)
Subversion
SQL (implementation agnostic)
- Developing Time-Oriented Database Applications in SQL
- Use The Index, Luke!: A Guide To SQL Database Performance
- Learn SQL The Hard Way
Teradata
Vim
- A Byte of Vim
- Vim Recipes
- Vi Improved — Vim by Steve Oualline
- Learn Vimscript the Hard Way
Websphere
Windows Phone
- Programming Windows Phone 7
- Reproducible Research
- Makefiles
- Make for Reproducibility
- Why use Make
- O’Reilly Make Book
- Minimal Make, A Quick Tour
- Make for R and LaTeX
- Software Carpentry Make Lessons
- Misc
- Best Practices for Software and Reproducible Research
- Reproducible Research is Still a Challenge
- How to (not) collaborate
- Research Paper on Pull-Request Workflow
- 10 Things every grad student should do
- R package for Reproducible Workflows
- Research Practice
- The Researchers Bible
- How to do research at MIT AI Lab
- Bioinformatics
- Genomics Papers from Leek Group
- Testing
- Python
- Getting Started with Automatic Testing
- Getting Started Testing
- Perl
- Unit Testing in Perl
- Meta Resources
- Coding
- Code Essentials
- Google’s Technical Development Guide
- Code Review
- Software Carpentry Code Review
- GitHub Flow and Code Review
- Fernando Perez Code Review
- 11 Best Practices
- Machine Learning
- Misc.
- The Zen of Gradient Descent
- 14 Data Mining Books
- Basics of Machine Learning
- Social Media Mining
- Introductory Primar to Machine Learning
- Introductory to Statistical Learning
- Elements of Statistical Learning
- Neural Nets/Deep Learning
- Deep Learning Book
- Deep Learning Annotated Bibliography
- Universite de Sherbrooke Neural Networks Class
- Deep Learning Book
- Deep Learning with JS
- Intro to Deep Learning with Python and Theano
- Parallel Processing
- Parallel Processing in multiple languages
- Coding Guidelines
- Example of Good Code Guidelines
- Good Coding Guidelines
- Linear Algebra
- First Course in Linear Algebra
- Linear Algebra in Four Pages
- MIT OCW Linear Algebra
- Statistics
- Probability Cheat Sheet
- Steins Paradox
- Warning Signs in Experimental Design
- Causal Inference Book
- Statistical Inference for Everyone
- Probabalistic Programming and Bayesian Methods for Hackers
- Discrete Math
- Notes on Discrete Math
- Python
- Python for Big Data
- Python Patterns
- Python Argparse Cookbook
- Learn Python the Hard Way
- Perl
- Data Munging with Perl
- Perl in 2 hours 30 minutes
- Higher Order Perl
- Algorithms
- Learn Algorithms
- Khan Academy Algorithms
- MIT OCW Intro to Algorithms
- Data Science/Big Data
- R and Pandas compared
- Mathematical Theory of Data Science
- Data Science Masters
- Python for Data Science
- Common Excel Tasks using Pandas
- Data Visualization
- Data Visualization with JS
- Command Line Tools for Data Science
- Small Datasets
- Graphs from SQL
- Learn SQL the Hard Way
- R
- R Cookbook
- R Packages
- Things I Wish I Knew When Starting R
- Matlab
- Matlab Cookbook
- Vim
- Vim Tutorial and Introduction
- Learn to Speak Vim
- Series of Articles on Learning Vim
- Git/GitHub
- A Practical Introduction to Git
- Git — The Simple Guide
- Git Cheat Sheet
- Git Cheat Sheet from GitHub
- Pro Git
- Software Carpentry Git & GitHub Lesson
- Collaboration on GitHub
- GitHub Flow
- GitHub Guides
- Misc.
- Twitter NLP Library
- LaTex
- Not So Short Introduction to LaTex
- LaTex Wikibook
- Introduction to Tex and Friends
- Short Guide for LaTex Math
- WriteLaTex Introductino to LaTex
- Learn LaTex by Doing
- Tex Introduction
Required Reading (Online resources)
- Learn JavaScript Essentials (for all skill levels) One clear path to JavaScript mastery #article
- The Two Pillars of JavaScript Part 1: Prototypal OO #article
- The Two Pillars of JavaScript Part 2: Functional Programming #article
- JavaScript Objects An excellent explanation of inheritance in JavaScript by Kyle Simpson #article
- How to Use ES6 for Universal JavaScript Apps A Babel config walkthrough #article
- Unapply attack Make your JS apps more secure by freezing builtins. #article
- JavaScript Application Architecture on the Road to 2015 Addy Osmani #article
- Modularity A pragmatic take on the tiny modules vs batteries included approach
- Computer Science in JavaScript by Nicholas C. Zakas #article
- The Dao of Immutability The Way of the Functional Programmer #article
- Reactive MVC and the Virtual DOM Great read, even if you’re not a React user. #article
- Introduction to Reactive Programming #article
- The General Theory of Reactivity What is all this talk about reactive? Functional? Promises? This is the beginning of a reactive programming bible. #article
- Why Functional Programming Matters by John Hughes, 1984 #paper #pdf
- ES6 Generators A series of blog posts by Kyle Simpson #article
- Typed JavaScript Excellent post about the state of typed JavaScript by Axel Rauschmayer #article
- ES6 Modules: The Final Syntax by @rauschma #article
- javascript-sdk-design A guide for people building JavaScript client SDKs #article
- Advanced Performance Audits with DevTools In-depth perf case studies with Paul Irish #article
Required Viewing
- Classical Inheritance is Obsolete: How to Think in Prototypal OO by Eric Elliott #talk
- Composition Over Inheritance by Mattias Petter Johansson #video
- Everything You Never Wanted to Know About JavaScript Numbers by Bartek Szopka #talk
- Asynchronous Programming at Netflix Jafar Husain #talk
- What is Reactive Programming? Jafar Husain explains reactive programming #talk
- Introduction to Reactive Programming by André Staltz #video #course
- Immutability: Putting The Dream Machine To Work by David Nolen #talk
- The Essence of FRP by Conal Elliott #talk
- JavaScript API Design Principles by Ariya Hidayat #talk
- Delivering the Goods Paul Irish on one of the most important but overlooked topics in the development world today — page load times. #talk
- Supercharging Page Load by Jake Archibald #video
- Slay’n the Waste Monster by Colt McAnlis #talk
- Simplicity Matters A later version of the influential talk, “Simple Made Easy” by Rich Hickey #talk
- Making WebGL Dance by Steven Wittens #talk
- The Pixel Factory by Steven Wittens #talk
Exercises
- FreeCodeCamp Learn to build apps & work on not-for-profit projects. #exercises
- LearnRx #exercises
Spec
- ES5 Spec An annotated, hyperlinked version of the ES5 spec
- ES6 Spec ECMAScript® 2015 Language Specification
Books
- JavaScript for Kids by Nick Morgan
- Eloquent JavaScript by Marijn Haverbeke
- JavaScript: The Good Parts by Douglas Crockford
- Effective JavaScript by David Herman
- Learn JavaScript Universal App Development with Node, ES6, & React by Eric Elliott
- Programming JavaScript Applications by Eric Elliott
- JavaScript: The Definitive Guide by David Flanagan
- You Don’t Know JS by Kyle Simpson
- Understanding ECMAScript 6 by Nicholas C. Zakas
- JavaScript Allongé by Reginald Braithwaite
- Node.js in Action by Mike Cantelon, Marc Harter, T.J. Holowaychuk and Nathan Rajlich
- High Performance Browser Networking by Ilya Grigorik #book
- “Seven Languages in Seven Weeks” Learn different ways of solving problems and you’ll deepen your understanding of JavaScript. #book
- The Dream Machine: J.C.R. Licklider and the Revolution That Made Computing Personal by M. Mitchell Waldrop
- WebGL Fundamentals by Greggman — An interactive online book about graphics programming.
Dev tools & collaboration
- nvm First install this…
- Node Then install Node (with nvm). You’ll need this even if you’re a front-end dev.
- npm Install lots of other things with npm. The package manager for JavaScript. Comes with Node.
- Atom Nice, hackable editor by GitHub.
- Node Inspector Debug Node code with the Chrome debug tools — save-live-edit true
- TraceGL Powerful runtime analysis of live JavaScript code
- Tern Static analysis in JavaScript
- JSDoc Pair with Tern for static analysis
- Slate Generate beautiful API docs for your apps
- Slack Chat for teams, with GitHub and Google hangouts integration
- Gitter Like Slack, but better for OSS projects and free chat.
- Airety Better developer interviews via pair programming.
- PrettyDiff
- Babel Repl The Babel REPL with compiled output
- Nitrous.IO Online IDE in the cloud with collaboration & Docker containers
- Koding Online cloud development platform with video & audio collaboration
Building
- Browserify Bundle modules for the browser.
- Webpack Similar to Browserify, with more batteries included and a config file. Supports live patching rebuilds.
- How to use NPM as a Build Tool
- pre-commit Easily configure pre-commit hooks for your package
Testing / Lint / Quality checkers
- ESLint The pluggable linting utility for JavaScript and JSX.
- JSCS Linter with a focus on automatic fixes and built-in style guide presets.
- babel-eslint Allow ES6 features to pass ESLint.
- eslint-plugin-no-class Forbid the ES6 class keyword. Why?
- ESLint no-inferred-methodname A custom rule for a common problem. #code
- Istanbul Code coverage reporting
- tape Dead simple unit testing #code
- faucet Prettify unit testing output (like what comes from tape).
- Supertest The best way to test HTTP endpoints.
Transpilers
- Babel Transpile ES2015 (ES6), ES7 to ES5, JSX to React.
- TypeScript TypeScript’s structural types are worth a look, but I don’t use it.
- Emscripten Frequently used for C/C++ JavaScript ports.
- ES6 tools Addy Osmani’s ES6 Tools list.
JavaScript environments
- Node.js Server side JavaScript and more
News
- JavaScript Scene
- JavaScript Weekly
- Node Weekly
- HTML5 Weekly
- EchoJS
- JavaScript Live
- JavaScript.com News
- Node Module Of The Week
- JavascriptKicks
- 5 Minutes of Javascript
Contests
- DemoJS The JavaScript demoscene party
- JS1k JavaScript demos in 1k of memory
- JS13k Games JavaScript games in 13k of memory
- FightCode game program virtual battle bots and climb the leaderboard
- Node Knockout The legendary Node competition