It is difficult for many students to master basic concepts in computer science and programming. A large portion of the confusion can be blamed on the complexity of the tools and materials that are traditionally used to teach CS1 and CS2. This textbook was written with a single overarching goal: to present the core concepts of computer science as simply as possible without being simplistic.
Perhaps the greatest source of complexity in introductory CS courses is the use of traditional systems languages such as C++ and Java. These languages evolved to solve problems that arise in large-scale programming where the primary emphasis is on structure and discipline. They were not designed to make writing small or medium-scale programs easy. The recent rise in popularity (in industry, if not necessarily in academia) of scripting languages, such Python, suggests an alternative. Python is flexible and makes experimentation easy. Solutions to simple problems are simply and elegantly expressed. Python is a great laboratory for the neophyte programmer.
Python is a natural choice as a first programming language because its basic structures are very clean and well-designed. The concepts carry over directly to subsequent study of systems languages such as Java and C++. Python is a real-world language that is feely available for virtually every programming platform and comes standard with its own easy-to-use integrated programming environment. Python allows students to focus on the primary skills of algorithmic thinking and program design without getting bogged down in arcane language details.
Key features of this book:
* Extensive use of computer graphics. Students love working on programs that include graphics. This book presents a simple-to-use graphics package (provided as a Python module) that allows students to both learn the principles of computer graphics and practice object-oriented concepts without the complexity inherent in a full-blown graphics library.
* Interesting examples. The book is packed with complete programming examples to solve real
problems.
* Readable prose. The narrative style of this book introduces key computer science concepts in
a natural way as an outgrowth of a developing discussion.
* Flexible spiral coverage. Since the goal of the book is to present concepts simply, each chapter
is organized such that students are introduced to new ideas in a gradual way, giving them time
to assimilate an increasing level of detail as they progress.
* Extensive end-of-chapter problems. Exercises at the end of every chapter provide ample opportunity
for students to both reinforce chapter material and practice new programming skills.
ABOUT THE AUTHOR
|
| John Zelle | My current interests are mainly in the languages and environments used in computer science education. I am an advocate of extensive programming as a foundation of the CS curriculum. I am convinced that students learn better starting with very high-level, dynamically-typed, interactive language environments. At Wartburg, we use Python in our introductory (CS 1) course. If you're interested, check out my Teaching with Python page.
Recently, I have been working with undergraduates on research in the area of virtual reality. Working with Dr. Charles Figura in Physics, we are developing a VR lab (called SVEN) "on a shoe-string." We currently have projects in stereoscopic projection, position tracking, and remote viewing robotics. You can find out more on the SVEN page.
In a former life, I was an AI researcher. My work focused on combining explanation-based learning (EBL) and inductive logic programming (ILP) to learn search-control heuristics for knowledge-based systems expressed as definite-clause logic programs. Two specific applications of this framework are: dynamic optimization of Prolog programs (improving efficiency) and natural language acquisition (improving accuracy). For an in-depth look, see my machine learning publications. |