The book is particular as this:
How long is the course using this book?
The first edition of the book was based on a single one-semester course.
The current edition is suitable for a two-semester introductory computer science sequence.
What kind of students is this book written for? And why does this book cover so many topics?
The book is aimed at students with little or no prior programming experience who have a desire to understand computational approaches to problem solving. For some of the students the material in this book will be a stepping stone to more advanced computer science courses. But for many of the students it will be their only formal exposure to computer science.
Because this will be the only formal exposure to computer science for many of the students, we emphasize breadth rather than depth. The goal is to provide students with a brief introduction to many topics, so that they will have an idea of what’s possible when the time comes to think about how to use computation to accomplish a goal.
The readers are armed by these:
What skill and knowledge should the student take away from this book?
The main goal of this book is to help students become skillful at making productive use of computational techniques. They should learn to use computational modes of thoughts to frame problems and to guide the process of extracting information from data. The primary knowledge they will take away from this book is the art of computational problem solving.
What is the pervasive[^ pervasive] themes of the book?
- systematic problem solving,
- the power of abstraction, and
- computation as a way of thinking about the world
[^ pervasive]: Per-va′sive (pẽr-vā′sĭv) Tending to pervade, or having power to spread throughout; of a pervading quality. “Civilization pervasive and general.” M. Arnold.
What should I have been able to act when finished reading this book?
- Learned a language, Python, for expressing computations, 【not for showing off tricks and professional behaviors】
- Learned a systematic approach to organizing, writing, and debugging medium-sized programs, 【I don’t think I have gotten this, but when I wrote out “TetraCamTion”, I think I had got some of the systematic approach.】
- Developed an informal understanding of computational complexity, 【The formal one is Knuth’s?】
- Developed some insight into the process of moving from an ambiguous problem statement to a computational formulation of a method for solving the problem, 【That’s it. I spend a lot of time thinking in this process.】
- Learned a useful set of algorithmic and problem reduction techniques,
- Learned how to use randomness and simulations to shed light on problems that don’t easily succumb to closed-form solutions, and 【Not to say there is no closed-form solution, but saying that it is not easy to find one with limited time.】
- Learned how to use computational tools (including simple statistical, visualization, and machine learning tools) to model and understand data. 【It is the time of big data. We must know how to dig out information and knowledge from data.】
2020-05-25
2020-06-22
LS0tCnRpdGxlOiAwMCBQUkVGQUNFIGFuZCBBQ0tOT1dMRURHTUVOVFMKc3VidGl0bGU6IAphdXRob3I6IEpvaG4gUXUKZGF0ZTogMjAyMC0wNS0yNQpzbHVnOiBwcmVmYWNlLWFuZC1hY2tub3dsZWRnbWVudHMKdGFnczoKLSAKY2F0ZWdvcmllczoKLSBtaXQ2MDAKLSBJQ1BQIGJvb2tub3Rlcwp0eXBvcmEtcm9vdC11cmw6IC4uLy4uL3N0YXRpYwpzaG93X3RvYzogeWVzCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIFRoZSBib29rIGlzIHBhcnRpY3VsYXIgYXMgdGhpczoKCiMjIyBIb3cgbG9uZyBpcyB0aGUgY291cnNlIHVzaW5nIHRoaXMgYm9vaz8KClRoZSBmaXJzdCBlZGl0aW9uIG9mIHRoZSBib29rIHdhcyBiYXNlZCBvbiBhIHNpbmdsZSBvbmUtc2VtZXN0ZXIgY291cnNlLiAKClRoZSBjdXJyZW50IGVkaXRpb24gaXMgc3VpdGFibGUgZm9yIGEgdHdvLXNlbWVzdGVyIGludHJvZHVjdG9yeSBjb21wdXRlciBzY2llbmNlIHNlcXVlbmNlW15kaWZmX2Zyb21fJ3NlcmllcyddLgoKW15kaWZmX2Zyb21fJ3NlcmllcyddOiAqKnNlcXVlbmNlKio6ICBUaGUgc3RhdGUgb2YgYmVpbmcgc2VxdWVudDsgc3VjY2Vzc2lvbjsgb3JkZXIgb2YgZm9sbG93aW5nOyBhcnJhbmdlbWVudC4gKkhvdyBhcnQgdGhvdSBhIGtpbmcgQnV0IGJ5IGZhaXIgc2VxdWVuY2UgYW5kIHN1Y2Nlc3Npb24/KiAtIFNoYWsuICpTZXF1ZW5jZSBhbmQgc2VyaWVzIG9mIHRoZSBzZWFzb25zIG9mIHRoZSB5ZWFyLiogLSBCYWNvbi4gfCAqKnNlcmllcyoqOiBBIG51bWJlciBvZiB0aGluZ3Mgb3IgZXZlbnRzIHN0YW5kaW5nIG9yIHN1Y2NlZWRpbmcgaW4gb3JkZXIsIGFuZCBjb25uZWN0ZWQgYnkgYSBsaWtlIHJlbGF0aW9uOyBzZXF1ZW5jZTsgb3JkZXI7IGNvdXJzZTsgYSBzdWNjZXNzaW9uIG9mIHRoaW5nczsgYXMsICphIGNvbnRpbnVvdXMgc2VyaWVzIG9mIGNhbGFtaXRvdXMgZXZlbnRzLiogICpEdXJpbmcgc29tZSB5ZWFycyBoaXMgbGlmZSBhIHNlcmllcyBvZiB0cml1bXBocyouICAtICBNYWNhdWxheS4KCiMjIyBXaGF0IGtpbmQgb2Ygc3R1ZGVudHMgaXMgdGhpcyBib29rIHdyaXR0ZW4gZm9yPyBBbmQgd2h5IGRvZXMgdGhpcyBib29rIGNvdmVyIHNvIG1hbnkgdG9waWNzPwoKVGhlIGJvb2sgaXMgYWltZWQgYXQgc3R1ZGVudHMgd2l0aCBsaXR0bGUgb3Igbm8gcHJpb3JbXnByaW9yXSBwcm9ncmFtbWluZyBleHBlcmllbmNlIHdobyBoYXZlIGEgZGVzaXJlIHRvIHVuZGVyc3RhbmQgY29tcHV0YXRpb25hbCBhcHByb2FjaGVzW15hcHByb2FjaF0gdG8gcHJvYmxlbSBzb2x2aW5nLiBGb3Igc29tZSBvZiB0aGUgc3R1ZGVudHMgdGhlIG1hdGVyaWFsIGluIHRoaXMgYm9vayB3aWxsIGJlIGEgc3RlcHBpbmcgc3RvbmVbXnN0ZXBwaW5nLXN0b25lXSB0byBtb3JlIGFkdmFuY2VkIGNvbXB1dGVyIHNjaWVuY2UgY291cnNlcy4gQnV0IGZvciBtYW55IG9mIHRoZSBzdHVkZW50cyBpdCB3aWxsIGJlIHRoZWlyIG9ubHkgZm9ybWFsIGV4cG9zdXJlIHRvIGNvbXB1dGVyIHNjaWVuY2UuCgpCZWNhdXNlIHRoaXMgd2lsbCBiZSB0aGUgb25seSBmb3JtYWwgZXhwb3N1cmUgdG8gY29tcHV0ZXIgc2NpZW5jZSBmb3IgbWFueSBvZiB0aGUgc3R1ZGVudHMsIHdlIGVtcGhhc2l6ZSBicmVhZHRoIHJhdGhlciB0aGFuIGRlcHRoLiBUaGUgZ29hbCBpcyB0byBwcm92aWRlIHN0dWRlbnRzIHdpdGggYSBicmllZiBpbnRyb2R1Y3Rpb24gdG8gbWFueSB0b3BpY3MsIHNvIHRoYXQgdGhleSB3aWxsIGhhdmUgYW4gaWRlYSBvZiB3aGF04oCZcyBwb3NzaWJsZSB3aGVuIHRoZSB0aW1lIGNvbWVzIHRvIHRoaW5rIGFib3V0IGhvdyB0byB1c2UgY29tcHV0YXRpb24gdG8gYWNjb21wbGlzaCBhIGdvYWwuCgpbXnByaW9yXTogKipwcmlvcioqOiBQcmVjZWRpbmcgaW4gdGhlIG9yZGVyIG9mIHRpbWU7IGZvcm1lcjsgYW50ZWNlZGVudDsgYW50ZXJpb3I7IHByZXZpb3VzOyBhcywgYSBwcmlvciBkaXNjb3Zlcnk7IHByaW9yIG9ibGlnYXRpb247IOKAkyB1c2VkIGVsbGlwdGljYWxseSBpbiBjYXNlcyBsaWtlIHRoZSBmb2xsb3dpbmc6IGhlIGxpdmVkIGFsb25lIFtpbiB0aGUgdGltZV0gcHJpb3IgdG8gaGlzIG1hcnJpYWdlLgpbXmFwcHJvYWNoXTogKiphcHByb2FjaCoqOiBUaGUgYWN0IG9mIGRyYXdpbmcgbmVhcjsgYSBjb21pbmcgb3IgYWR2YW5jaW5nIG5lYXIuIOKAnFRoZSAqYXBwcm9hY2gqIG9mIHN1bW1lci7igJ0gLSBIb3JzbGV5LiAqQSBuZWFyZXIgYXBwcm9hY2ggdG8gdGhlIGh1bWFuIHR5cGUuKiAtIE93ZW4uCltec3RlcHBpbmctc3RvbmVdOiAqKnN0ZXBwaW5nLXN0b25lKio6IEZpZy46IEEgbWVhbnMgb2YgcHJvZ3Jlc3Mgb3IgYWR2YW5jZW1lbnQuIFQqaGVzZSBvYnN0YWNsZXMgaGlzIGdlbml1cyBoYWQgdHVybmVkIGludG8gc3RlcHBpbmctc3RvbmVzLiogLSBNYWNhdWxheS4gKlRoYXQgbWVuIG1heSByaXNlIG9uIHN0ZXBwaW5nLXN0b25lcyBPZiB0aGVpciBkZWFkIHNlbHZlcyB0byBoaWdoZXIgdGhpbmdzLiogLSBUZW5ueXNvbi4KCiMjIFRoZSByZWFkZXJzIGFyZSBhcm1lZCBieSB0aGVzZToKCiMjIyBXaGF0IHNraWxsIGFuZCBrbm93bGVkZ2Ugc2hvdWxkIHRoZSBzdHVkZW50IHRha2UgYXdheSBmcm9tIHRoaXMgYm9vaz8KClRoZSBtYWluIGdvYWwgb2YgdGhpcyBib29rIGlzIHRvIGhlbHAgc3R1ZGVudHMgYmVjb21lIHNraWxsZnVsIGF0IG1ha2luZyBwcm9kdWN0aXZlIHVzZSBvZiBjb21wdXRhdGlvbmFsIHRlY2huaXF1ZXMuIFRoZXkgc2hvdWxkIGxlYXJuIHRvIHVzZSBjb21wdXRhdGlvbmFsIG1vZGVzIG9mIHRob3VnaHRzIHRvIGZyYW1lIHByb2JsZW1zIGFuZCB0byBndWlkZSB0aGUgcHJvY2VzcyBvZiBleHRyYWN0aW5nIGluZm9ybWF0aW9uIGZyb20gZGF0YS4gVGhlIHByaW1hcnkga25vd2xlZGdlIHRoZXkgd2lsbCB0YWtlIGF3YXkgZnJvbSB0aGlzIGJvb2sgaXMgdGhlIGFydCBvZiBjb21wdXRhdGlvbmFsIHByb2JsZW0gc29sdmluZ1teaGFuZC13aXRoLXBlbl0uCgpbXmhhbmQtd2l0aC1wZW5dOiBDb21wdXRhdGlvbmFsIHByb2JsZW0gc29sdmluZyBpcyBkaWZmZXJlbnQgZnJvbSBoYW5kLXdpdGgtcGVuIHNvbHZpbmcuIAoKIyMjIFdoYXQgaXMgdGhlIHBlcnZhc2l2ZVteIHBlcnZhc2l2ZV0gdGhlbWVzIG9mIHRoZSBib29rPwoKLSBzeXN0ZW1hdGljIHByb2JsZW0gc29sdmluZywgCi0gdGhlIHBvd2VyIG9mIGFic3RyYWN0aW9uLCBhbmQgCi0gY29tcHV0YXRpb24gYXMgYSB3YXkgb2YgdGhpbmtpbmcgYWJvdXQgdGhlIHdvcmxkCgpbXiBwZXJ2YXNpdmVdOiBQZXItdmHigLJzaXZlIChwZcyDci12YcyE4oCyc2nMhnYpIFRlbmRpbmcgdG8gcGVydmFkZSwgb3IgaGF2aW5nIHBvd2VyIHRvIHNwcmVhZCB0aHJvdWdob3V0OyBvZiBhIHBlcnZhZGluZyBxdWFsaXR5LiAg4oCcQ2l2aWxpemF0aW9uICpwZXJ2YXNpdmUqIGFuZCBnZW5lcmFsLuKAnSBNLiBBcm5vbGQuCgojIyMgV2hhdCBzaG91bGQgSSBoYXZlIGJlZW4gYWJsZSB0byBhY3Qgd2hlbiBmaW5pc2hlZCByZWFkaW5nIHRoaXMgYm9vaz8KCjEuIExlYXJuZWQgYSBsYW5ndWFnZSwgUHl0aG9uLCBmb3IgZXhwcmVzc2luZyBjb21wdXRhdGlvbnMsIOOAkG5vdCBmb3Igc2hvd2luZyBvZmYgdHJpY2tzIGFuZCBwcm9mZXNzaW9uYWwgYmVoYXZpb3Jz44CRCjEuIExlYXJuZWQgYSBzeXN0ZW1hdGljIGFwcHJvYWNoIHRvIG9yZ2FuaXppbmcsIHdyaXRpbmcsIGFuZCBkZWJ1Z2dpbmcgbWVkaXVtLXNpemVkIHByb2dyYW1zLCDjgJBJIGRvbid0IHRoaW5rIEkgaGF2ZSBnb3R0ZW4gdGhpcywgYnV0IHdoZW4gSSB3cm90ZSBvdXQgIlRldHJhQ2FtVGlvbiIsIEkgdGhpbmsgSSBoYWQgZ290IHNvbWUgb2YgdGhlIHN5c3RlbWF0aWMgYXBwcm9hY2gu44CRCjEuIERldmVsb3BlZCBhbiBpbmZvcm1hbCB1bmRlcnN0YW5kaW5nIG9mIGNvbXB1dGF0aW9uYWwgY29tcGxleGl0eSwg44CQVGhlIGZvcm1hbCBvbmUgaXMgS251dGgncz/jgJEKMS4gRGV2ZWxvcGVkIHNvbWUgaW5zaWdodCBpbnRvIHRoZSBwcm9jZXNzIG9mIG1vdmluZyBmcm9tIGFuIGFtYmlndW91cyBwcm9ibGVtIHN0YXRlbWVudCB0byBhIGNvbXB1dGF0aW9uYWwgZm9ybXVsYXRpb25bXmZvcm11bGF0aW9uXSBvZiBhIG1ldGhvZCBmb3Igc29sdmluZyB0aGUgcHJvYmxlbSwg44CQVGhhdCdzIGl0LiBJIHNwZW5kIGEgbG90IG9mIHRpbWUgdGhpbmtpbmcgaW4gdGhpcyBwcm9jZXNzLuOAkQoxLiBMZWFybmVkIGEgdXNlZnVsIHNldCBvZiBhbGdvcml0aG1pYyBhbmQgcHJvYmxlbSByZWR1Y3Rpb25bXnJlZHVjdGlvbl0gdGVjaG5pcXVlcywKMS4gTGVhcm5lZCBob3cgdG8gdXNlIHJhbmRvbW5lc3MgYW5kIHNpbXVsYXRpb25zIHRvIHNoZWQgbGlnaHQgb24gcHJvYmxlbXMgdGhhdCBkb27igJl0IGVhc2lseSBzdWNjdW1iW15zdWNjdW1iXSB0byBjbG9zZWQtZm9ybSBzb2x1dGlvbnMsIGFuZCDjgJBOb3QgdG8gc2F5IHRoZXJlIGlzIG5vIGNsb3NlZC1mb3JtIHNvbHV0aW9uLCBidXQgc2F5aW5nIHRoYXQgaXQgaXMgbm90IGVhc3kgdG8gZmluZCBvbmUgd2l0aCBsaW1pdGVkIHRpbWUu44CRCjEuIExlYXJuZWQgaG93IHRvIHVzZSBjb21wdXRhdGlvbmFsIHRvb2xzIChpbmNsdWRpbmcgc2ltcGxlIHN0YXRpc3RpY2FsLCB2aXN1YWxpemF0aW9uLCBhbmQgbWFjaGluZSBsZWFybmluZyB0b29scykgdG8gbW9kZWwgYW5kIHVuZGVyc3RhbmQgZGF0YS4g44CQSXQgaXMgdGhlIHRpbWUgb2YgYmlnIGRhdGEuIFdlIG11c3Qga25vdyBob3cgdG8gZGlnIG91dCBpbmZvcm1hdGlvbiBhbmQga25vd2xlZGdlIGZyb20gZGF0YS7jgJEKClteZm9ybXVsYXRpb25dOiBmb3JtdWxhdGlvbi/LjGbJlMuQbWrKisuIbGXJqsqDbjsgy4xmyZRybWrJmWBsZcqDyZluLyBuIChhKSBbVV0gYWN0aW9uIG9mIGZvcm11bGF0aW5nIOagvOW8j+WMljsg5YWs5byP5YyWOyDnoa7liIfnmoTooajovr4uIChiKSBbQ10gcmVzdWx0IG9mIHRoaXMg5YWs5byPOyDnoa7liIfnmoTooajovr46IGNob29zZSBhbm90aGVyIGZvcm11bGF0aW9uIOmAieaLqeWPpuS4gOenjeihqOi+vuaWueW8jy4KW15yZWR1Y3Rpb25dOiB0aGUgc2ltcGxpZmljYXRpb24gb2YgYSBzdWJqZWN0IG9yIHByb2JsZW0gdG8gYSBwYXJ0aWN1bGFyIGZvcm0gaW4gcHJlc2VudGF0aW9uIG9yIGFuYWx5c2lzOiAqdGhlIHJlZHVjdGlvbiBvZiBjbGFzc2ljYWwgZ2VuZXRpY3MgdG8gbW9sZWN1bGFyIGJpb2xvZ3kqLgoKW15zdWNjdW1iXTogVG8geWllbGQ7IHRvIHN1Ym1pdDsgdG8gZ2l2ZSB1cCB1bnJlc2lzdGluZ2x5OyBhcywgdG8gc3VjY3VtYiB1bmRlciBjYWxhbWl0aWVzOyB0byBzdWNjdW1iIHRvIGRpc2Vhc2UuCgoyMDIwLTA1LTI1CgoyMDIwLTA2LTIyCgo=