Teaches techniques for writing computer programs in higher level programming languages to solve problems of interest in a range of application domains.