These tutorials walk you through writing medium-size software projects from scratch, step by step. The projects are based on real open-source software projects, and most of the tutorials stay true to the original source code. Every line of code is explained in detail, allowing you to thoroughly understand the project’s entire codebase.
The CS Education Library project at Stanford is an online library which collects and organizes computer science education materials, and gives them away for free.