具体描述
For courses in Python Programming
Introduces Python programming with an emphasis on problem-solving
Now in its Third Edition, Practice of Computing Using Python continues to introduce both majors and non-majors taking CS1 courses to computational thinking using Python, with a strong emphasis on problem solving through computer science. The authors have chosen Python for its simplicity, powerful built-in data structures, advanced control constructs, and practicality. The text is built from the ground up for Python programming, rather than having been translated from Java or C++.
Focusing on data manipulation and analysis as a theme, the text allows students to work on real problems using Internet-sourced or self-generated data sets that represent their own work and interests. The authors also emphasize program development and provide both majors and non-majors with a practical foundation in programming that will be useful in their respective fields. Among other changes, the Third Edition incorporates a switch to the Anaconda distribution, the SPYDER IDE, and a focus on debugging and GUIs.
MyProgrammingLabot included. Students, if MyProgrammingLab is a recommended/mandatory component of the course, please ask your instructor for the correct ISBN and course ID. MyProgrammingLab should only be purchased when required by an instructor. Instructors, contact your Pearson representative for more information.
MyProgrammingLab is an online learning system designed to engage students and improve results. MyProgrammingLab consists of a set of programming exercises correlated to specific Pearson CS1/Intro to Programming textbooks. Through practice exercises and immediate, personalized feedback, MyProgrammingLab improves the programming competence of beginning students who often struggle with the basic concepts of programming languages.
本书特色
About the Book
●NEW! A switch to Anaconda distribution, made freely available from Continuum Analytics, includes more than 100 pre-installed modules, removing the need for package installation.
●NEW! Fully adopted SPYDER Integrated Development Environment as a default method for editing and debugging code in the text. A truly modern IDE, Spyder has the advantages of including an integrated editor, associated interactive console, integrated debugging, integrated variable explorer, and integrated documentation viewer. Chapter 1 has been rewritten to incorporate the SPYDER IDE.
●NEW! Anaconda also includes the iPython console, a more capable console, with features including:
○An interactive history list
○Help on functions and variables using the “?” syntax
○Command line completion
●UPDATED! iPython console incorporated in every session with its features sprinkled throughout the text.
●NEW! “What’s wrong with my code” element has been added to several chapters to address the challenge of debugging.
●UPDATED! “Visual Vignettes” have been updated and simplified.
●NEW! Simple GUI development is included in several chapters, as well as a new appendix on web-based GUIs in response to student interest.
●NEW! 80 new end-of-chapter exercises are included.
●UPDATED! Chapter 16 provides discussion about Python Numbers and the various representations that are available.
●REVISED! Chapter 5 has been rewritten to not depend on Chapter 4, allowing instructors to choose the order in which they introduce concepts of strings and functions.
●Problem solving and case studies are emphasized throughout the text, including in 3 optional chapters (3, 10, and 13) that use examples to show mistakes and how to recover from them.
●Real-world, gender-neutral examples and exercisesencourage students to use Python to sort, apply, graph, and convert data. Examples include poker hands, the Gettysburg Address, EPA mileage data, breast cancer classifier, speech analysis, political debates, and S&P 500 analysis.
●An “object-use-first” approach is taken, with the authors using objects and methods early, while leaving the design and implementation of objects for later in the text, once mastery of the use of objects has been achieved.
●A traditional CS1 order with some significant differences, including:
○Strings are covered early (before functions) to allow for more data manipulation early in the text.
○File I/O is covered early for the same reason as strings.
○Topics such as plotting and drawing are included throughout the text in service of the data manipulation theme.
●Incorporates data structures as early as possible, including lists and strings, which show up before they are covered in detail.
●Drawing and graphing packages are incorporated and covered in the appendices.
●Over 180 code examples illustrate piecemeal development of larger problems.
●Almost 250 interactive sessions are provided to illustrate programming and problem-solving concepts.
●Over 275 short exercises and nearly 30 longer programming projects, many with multiple parts, are included.
●24 self-check exercises are embedded within the chapters, each with 5 or more associated questions.
●Over 40 notes provide useful programming tips and are boxed for emphasis.
MyProgrammingLab™not included. Students, if MyProgrammingLab is a recommended/mandatory component of the course, please ask your instructor for the correct ISBN and course ID.
MyProgrammingLab should only be purchased when required by an instructor. Instructors, contact your Pearson representative for more information.
MyProgrammingLab is an online learning system designed to engage students and improve results. MyProgrammingLab consists of a set of programming exercises correlated to specific Pearson CS1/Intro to Programming textbooks. Through practice exercises and immediate, personalized feedback, MyProgrammingLab improves the programming competence of beginning students who often struggle with the basic concepts of programming languages.
●Interactive Practice provides first-hand programming experience in an interactive online environment.
●Error Messages for Incorrect Answers give students immediate personalized feedback. The error messages include both the feedback from the compiler and plain English interpretations of likely causes for the incorrect answer.
●Step-by-step VideoNote Tutorials enhance the programming concepts presented in your Pearson textbook by allowing students to view the entire problem-solving process outside of the classroom—when they need help the most.
●Pearson eText gives students access to their textbook anytime, anywhere. In addition to note taking, highlighting, and bookmarking, the Pearson eText offers interactive and sharing features. Rich media options let students watch lecture and example videos as they read or do their homework. Instructors can share their comments or highlights, and students can add their own, creating a tight community of learners in your class.
●The Pearson eText companion app allows existing subscribers to access their titles on an iPad or Android tablet for either online or offline viewing.
●Dynamic grading and assessment provide auto-grading of student assignments, saving you time and offering students immediate learning opportunities:
●A dynamic roster tracks their performance and maintains a record of submissions.
●The color-coded gradebook gives you a quick glance of your classes' progress. Easily drill down to receive information on a single student's performance or a specific problem. Gradebook results can be exported to Excel to use with your LMS.
深入理解计算机科学核心概念与实践:C++ 编程基础与高级主题 作者: [此处留空,或者填写一个虚构的资深计算机科学家姓名,例如:艾伦·S·沃德] 出版社: [此处留空,或者填写一个知名的学术出版社名称,例如:经典技术出版社] --- 图书概述 本书旨在为渴望掌握当代软件开发基石——C++ 编程语言——的读者提供一套全面、深入且注重实践的教程。它不仅仅是一本语言参考手册,更是一部系统性的计算机科学思维训练指南。全书内容横跨 C++ 的基础语法、面向对象范式(OOP)的核心原理,直至现代 C++(C++11/14/17/20)的先进特性,如并发编程、内存模型及模板元编程。 我们坚信,精通一门强大的系统级语言,是理解现代计算架构、优化性能瓶颈和构建可扩展、高可靠性系统的关键。本书的结构设计,充分考虑了从初学者到有经验的程序员的认知曲线,力求在理论的严谨性与工程实践的实用性之间取得完美平衡。 第一部分:C++ 基础与程序设计范式 本部分奠定了坚实的编程基础,侧重于将读者的思维从高级脚本语言的抽象层次拉回到对硬件资源的直接控制和理解上。 第 1 章:C++ 环境搭建与编译模型 深入探讨 C++ 代码如何从源代码转化为可执行文件。我们将详细解析预处理、编译、汇编和链接这四个阶段的工作流程。不同编译器的(如 GCC, Clang, MSVC)特性对比,以及如何有效利用编译标志进行优化和调试。理解“一次声明,多处使用”的编译模型对于大型项目的维护至关重要。 第 2 章:基本语法、数据类型与控制流 覆盖 C++ 的基本数据类型(包括内置类型和用户定义类型),强调它们在内存中的布局和大小。深入讲解变量的声明、作用域、生命周期,以及复合数据结构如数组和结构体。控制流部分,除了标准的 if/else 和循环结构,还将引入基于范围的 for 循环和 `switch` 语句的高级用法。 第 3 章:函数、内存管理与指针的艺术 函数是 C++ 的核心构建块。本章详细讲解函数的重载、默认参数和内联机制。重点突破内存模型:栈(Stack)与堆(Heap)的差异,以及原始指针(Raw Pointers)的声明、解引用和算术运算。我们将严肃讨论野指针、悬空指针等常见陷阱,并引入 `sizeof` 运算符在类型大小确定中的作用。 第 4 章:面向对象编程(OOP)基石 C++ 之所以强大,在于其对面向对象范式的支持。本章聚焦于三大支柱:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。详细讲解 `class` 与 `struct` 的细微差别,构造函数(包括拷贝构造函数和移动构造函数,为后续智能指针做铺垫)和析构函数的执行顺序。多态的实现机制,特别是虚函数表(v-table)的内部工作原理将被剖析。 第二部分:抽象、资源管理与泛型编程 本部分将读者带入 C++ 抽象能力的深层,探讨如何通过模板实现代码的复用,以及如何安全地管理程序生命周期中的资源。 第 5 章:高级类特性与“五/零法则” 深入探讨运算符重载,包括流操作符(`<<` 和 `>>`)和算术运算符的自定义。重点解析拷贝控制:深拷贝与浅拷贝的界限。C++11 引入的移动语义(Move Semantics)将作为核心内容,解释右值引用(rvalue reference)如何提升性能,并详细阐述“析构函数、拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符”的五大特殊成员函数与“零法则”或“三/五法则”的现代实践。 第 6 章:C++ 标准库(STL)核心组件 STL 是 C++ 效率的保证。本章介绍 STL 的三大组件:容器(如 `vector`, `map`, `set` 的内部实现机制,并对比其时间复杂度),迭代器(Iterator 抽象层级,以及不同迭代器的特性),和算法(如 `std::sort`, `std::find` 等,并强调函数式编程风格)。特别关注 `std::string` 的高效处理。 第 7 章:异常处理与错误报告 掌握结构化异常处理机制(`try-catch-throw`)。讨论异常安全性的重要性,包括强异常安全、弱异常安全和基本异常安全的概念。如何编写不会泄露资源的异常安全代码,以及何时应使用错误码而非异常。 第 8 章:模板元编程与泛型编程 模板是 C++ 抽象的巅峰。本章区分函数模板和类模板。深入解析模板实例化过程、名称查找规则(Name Lookup),以及模板特化(Explicit Specialization)的应用场景。引入概念模板(Concepts,C++20)作为约束模板参数的强大工具,以提高编译时错误检查的清晰度。 第三部分:现代 C++ 与系统级编程 本部分聚焦于 C++11 及后续版本带来的范式转变,以及如何利用这些特性编写高性能、内存安全的代码。 第 9 章:智能指针与资源获取即初始化(RAII) RAII 原则是现代 C++ 内存管理的核心。详细介绍 `std::unique_ptr`(独占所有权)、`std::shared_ptr`(共享所有权)和 `std::weak_ptr`(解决循环引用)。讲解循环引用导致的内存泄漏问题,以及智能指针如何在构造和析构函数中自动管理动态内存,彻底取代 `new` 和 `delete` 的手动调用。 第 10 章:并发编程与多线程 随着多核处理器的普及,并发编程至关重要。本章介绍 `std::thread` 的使用、线程的同步机制:互斥锁 (`std::mutex`)、条件变量 (`std::condition_variable`) 和原子操作 (`std::atomic`)。深入探讨数据竞争(Data Races)的成因和预防,以及并发编程中的死锁问题排查。 第 11 章:内存模型与 Volatile 关键字 理解 C++ 内存模型(Memory Model)是编写跨平台并发代码的基础。本章解释加载(Load)、存储(Store)操作的顺序性保证。对比 C 语言的 `volatile` 关键字和 C++ 内存模型中的顺序性概念,强调在现代多线程环境中,仅使用 `volatile` 是不足以保证同步的。 第 12 章:高级 I/O 流与文件操作 超越基础的 `std::cout`。讲解 `std::fstream` 系列类及其工作模式(文本/二进制)。深入研究流的状态标志、格式化输出(如精度、进制控制),以及使用 C++20 的 Ranges 库处理流数据的优雅方式。 目标读者 学习过 C 或其他面向对象语言(如 Java/C),希望深入底层、掌握系统级编程的开发者。 需要构建高性能计算(HPC)、游戏引擎、实时系统或底层库的工程师。 希望系统性地从 C++98 过渡到 C++20 现代语法的专业人士。 本书特色 1. 实践导向的示例: 每个核心概念后都附带一个小型、可编译的项目示例,展示该特性的实际应用。 2. 性能洞察: 持续穿插关于编译期优化、运行时开销分析的讨论,帮助读者写出“快”的代码。 3. 避免“C with Classes”: 严格遵循现代 C++ 的设计哲学,强调资源安全和抽象表达力,摒弃过时的 C 风格编程习惯。 通过对本书内容的系统学习,读者将不仅能熟练使用 C++ 语言本身,更能建立起一套扎实的、面向性能与可维护性的软件架构思维。