stackoverflow-book Languages java javascript scala ruby python tools npm git Math Software Architecture Theory DataBases