Frequently Asked Questions

Frequently Asked Questions


This document contains answers to some frequency (and infrequently) asked questions.



General Questions

Q. Is the textbook available now?

A. Yes. The textbook was published in June 2015. If you're a faculty member considering adoption, please visit the Pearson website.

Q. Why Python? Why not Java or C or C++ or C# or Ruby or Matlab?

A. The programs that we are composing are very similar to their counterparts in several other languages, so our choice of language is not crucial. We use Python because it is widely available, widely used, embraces a full set of modern abstractions, and has a variety of automatic checks for mistakes in programs, so it works well for students learning to program. There is no perfect language and you certainly will find yourself programming in other languages in the future. We have published a Java version of this textbook.

Q. Do I need previous programming experience?

A. No, the book and this booksite start from the beginning. If you have prior programming experience, you can move through Chapter 1 at a more rapid pace, but you are likely to find the examples worthy of careful study.

Q. Do I need any special math or science background?

A. No, we assume only a basic high school background. Our approach reinforces and takes advantage of students' preparation in high-school math and science as they learn programming.

Q. I discovered what I think is a typo or error. Whom should I contact?

A. Please check the errata list and fill out a bug submission form. We appreciate your feedback.

Q. Are there solutions to all of the exercises?

A. No, we've linked to the ones we have written. Feel free to contribute to the community and submit a solution to any of the exercises.

Q. I'm an instructor. Can I use your material for my class?

A. If you adopt the book, you are free to use and adapt any of the material for your needs. Otherwise, please email the authors to request permission.

Q. How can I contact the authors?

A. Send e-mail to Bob Dondero.



Python

Q. What version of Python are you using?

A. At the time we composed this booksite there were two main (but partially incompatible) versions of Python in widespread use: Python 2.7 and Python 3.4. All of our code works with both of those versions.

Q. What are the differences betweeen Python 2 and 3?

A. The What's New in Python 3.0 page provides a thorough description.

Q. Is there an official specification of the Python language?

A. Yes, but it's quite technical. Here is the Python 2.7 Language Reference and the Python 3.4 Language Reference.

Q. Where can I find documentation for the Python standard library?

A. Here is documentation for the Python 2.7 Standard Library and for the Python 3.4 Standard Library. As you become a more proficient Python programmer, this will become an essential reference.

Q. Is there a good integrated development environment for novices?

A. We recommend IDLE, the integrated development environment that is bundled with Python, but only as a source code editor. More sophisticated IDEs such as Eclipse are overkill for an introductory course, but are widely used by professional programmers.

Q. Should I use a debugger?

A. Reasonable people disagree on this one. We recommend that people who are first learning to program not use a debugger.

Q. Is there a Python FAQ?

A. Here is the offical Python FAQ.

Q. How does Python compare in terms of speed to C or C++ or Java or Perl?

A. The answer depends greatly on the type of application you're running. As a rule of thumb, C and C++ are blazingly fast, and Java, Perl, and Python are slower. No benchmark is perfect, but The Computer Language Shootout Benchmarks is a good starting point.



Creating the Booksite

Q. The program links contain syntax-highlighted versions of the code. How was that accomplished?

A. We used GNU source-highlight to automatically produce the syntax-highlighted versions.

Q. How did you create the screen output drawings in the textbook and booksite?

A. We used our stddraw module, as described in the textbook and booksite.