Perkovic'sIntroduction to Programming Using Pythonis more than just an introduction to programming. It is an inclusive introduction to Computer Science that takes the pedagogical approach of the right tool for the job at the right moment, and focuses on application development.
The book's approach is hands-on and problem-oriented, with practice problems and solutions appearing throughout the text. The text is imperative-first, but does not shy away from discussing objects early where appropriate. Discussions of user-defined classes and Object-Oriented Programming appear later in the text, when students have more background and the concepts can be motivated.
The book includes a chapter on problem solving and classical algorithms, and ways to apply core skills to application development. The last three chapters introduce a broad array of topics through the context of web crawling and search engines, including recursion, regular expressions, depth-first search, Google's MapReduce framework, GUI widgets, HTML parsers, SQL, and multicore programming.