e5a2d674fd184bc80964590200df3783 practical_programming.pdf