We discuss the demand for intelligent systems to assist both teachers and students in the teaching and learning of computer programming, then describe the design, implementation of Nooblab, an integrated system offering instruction, a programming test bed and assessment for several programming languages, and its deployment in real university classroom situations. The system also logs every interaction which each student has with it, providing a rich set of data for analysis. Initial results from its use within real courses are presented and discussed, along with proposals for future developments involving incorporating machine learning paradigms into the system.