Equivalent of Szabo and Ostlund book for DFT
I can recommend the book of Yang and Parr, although I am not sure it deals  with plane wave bases at all. In principle, a DFT code is not really different from a HF code. In fact, you can use exactly identical codes, just replacing the Coulomb and exchange integrals by numerical integration of some functional. E.g., if you choose $X\alpha$-LDA, than your exchange functional is
$$K = C_\alpha \left(\frac{3}{\pi}\right)^\frac{1}{3} \int \rho(\mathbf{r})^\frac{4}{3} \mathrm{d}\mathbf{r}$$
You can evaluate your density numerically, choose any numerical integration scheme and obtain the exchange energy. That works even, if you still calculate the Coulomb integrals the HF way. However, you wouldn't save much time since you still have the $\mathcal{O}(N^4)$ step in the Coulomb integrals, where $N$ is the number of basis functions. But once you integrate the Coulomb integrals numerically, you have basically a working DFT code.

There is a number of papers about choosing the correct grids and integration schemes for numerical integration. Once, I read one that compared the radial grids quite well, but sadly I don't remember the reference. But the buzz words would be e.g. Becke grid, (Treutler?-)Ahlrichs grid or simply Gauss quadrature for the radial integration (most of the grids are a form of Gauss quadrature, though). For the angular integration there is e.g. the Lebedev grid, but its calculation is a little more involved.

My suggestion, based on teaching experience, is to write first a HF code in a Gaussian basis. Then you pimp it with a numerical integration scheme and something like $X\alpha$. In the next step, you replace your Coulomb integrals. Lastly, you can switch from a Gaussian basis to the basis of plane waves. The last step only changes your matrix elements but not the algorithm (HF/DFT) itself. Since you first implemented a HF code for a Gaussian basis, you can always check your algorithm before going into uncharted waters.