Most texts teach C++ the way it was taught when the language came out 30+ years ago. They start off by presenting low-level techniques for working with memory…an approach that’s frustrating and error-prone for today’s students.

But the language itself has changed and provides higher-level coding techniques today. Plus, today’s IDEs help students with debugging and save them from the trivial syntax errors that can keep them from making steady progress.

So this book takes advantage of modern C++ to help you teach your students more quickly, easily, and effectively than ever…much more satisfying for instructors and students alike. But don’t worry: Once your students have a solid set of coding skills, it covers older techniques, so they’ll also be able to maintain legacy code and work with embedded systems.

Buy this book

Never have I found such a helpful book to learn to program. The format of the book was refreshing.... The examples and exercises are not the trivial examples that I have found in many books; they are examples taken from the real world of business programming. I wish I had a book like this when I was in school. It helps to reduce the learning curve required to learn a new programming language."

About this Book

Table of Contents

Courseware

FAQs

Corrections

Book description

How this book helps you teach C++

To make this book as effective as possible for you, the content is divided into 4 sections.

Section 1: Get your students off to a great start

Section 1 presents a practical subset of modern C++ that gets your students off to a great start. In fact, by the end of chapter 2, they’ll have developed their first C++ programs…programs that get input, process it, and display output…which is so much more motivating (and fun!) than writing a few lines of “Hello World” code that don’t have any practical application. This section is especially designed for beginners, but you can adapt the pace if your students have already taken an introductory programming course.

By the end of the 8 chapters in this section, your students will be able to code, test, and debug C++ programs using decision statements, loops, I/O streams and files, various data types, vectors, and custom functions. In short, they’ll have a solid set of the C++ skills they need on the job every day.

Although you can teach C++ using a text editor and a standalone compiler, this section shows how to use an IDE to work efficiently and effectively. We’ve found that having students take advantage of tools like syntax checkers and debuggers allows them to absorb the key concepts more easily and helps them get more practice in doing significant coding.

Section 2: More everyday skills as they’re needed

Section 2 builds on the subset to present additional C++ skills that programmers use every day. These include working with structures, enumerations, Standard Template Library (STL) containers and algorithms, built-in arrays, C strings, and exceptions.

You can teach the 5 chapters in this section in any order you like, and you can go as deep into any chapter as you want. The only exception to that is chapters 10 and 11; chapter 10 (on STL containers and iterators) should be taught before chapter 11 (STL algorithms). Otherwise, though, you have a lot of freedom here to customize your course.

Section 3: Object-oriented programming

Section 3 presents 3 chapters on object-oriented programming, complementing the procedural skills that are taught in sections 1 and 2. So when your students complete this section, they’ll be able to develop programs that combine the best procedural practices with the best object-oriented practices.

These essential OOP concepts are the same in all modern-day programming languages, so once your students master them…which is easier to do using our approach…they’ll be able to apply them in any other language they use.

Section 4: Skills for legacy and generic programming

Section 4 lets you teach your students the classic C++ skills they need to handle legacy code or embedded systems. So here, they’ll learn about working with memory and pointers.

This section also shows how to use templates that allow a class to support multiple data types for generic programming.

Finally, this section shows how to develop custom containers and algorithms that work like the containers and algorithms of the STL presented in section 2.

Some of this material may go beyond the scope of your course, but your students will have it for learning and reference when they’re ready to tackle these subjects for their own work.

What courses this book can be used for

An introductory computer science course

This book is designed for an introductory course in the computer science curriculum where C++ is the language used to teach programming and OOP principles. Once your students learn the essentials of C++ programming, they’ll be well prepared to learn a second language like Java. They’ll also be ready to use their C++ skills to go on to courses in artificial intelligence, big data, GUI development, gaming, and the like.

A second language course

This book will also work for a C++ course that’s offered after students have had an introductory course. It’s designed so you can move more quickly through the chapters in that case, skimming over familiar material and concentrating on the C++ specifics or on concepts that your students are struggling with. In fact, if your students have used a book from another publisher for their first language course, our book will help you clarify any concepts they’re confused about, as you teach C++.

Why your students will learn faster and better with our book

We’re familiar with the competing C++ books, and we’ve specifically designed this book to help your students learn faster and better than they can with any of them. Here are a few of the ways it does that:

There are two ways to simplify material: Avoid all complications (which is what too many books do) or present the material in the right order, at the right pace.We don’t think the no-complications approach gives students a true view of what programming is all about. So we present each piece slowly and methodically in section 1, building up skills and confidence, and then pick up the pace once the foundation is in place.

All the material is in our distinctive paired-pages format, where each topic is presented in a two-page spread: the examples and reference material are on the righthand page with additional explanation and perspective on the left.In today’s fast-paced world full of eager students who want to read less, do more, and pick up information on demand, it’s the ideal format. Students love it!

Besides fitting students’ learning style, the paired-pages format also helps your students do their assignments and prepare for tests by making it easy for them to review what they’ve learned and to refresh their memories on how to apply their new skills.

This book presents dozens of complete programs. In each chapter, the programs start simply to illustrate the new concepts and skills, but then show the new skills in the context of real-world programming.We have long felt that these programs are essential to effective learning, and no other publisher does this the way we do. Yes, other books present complete programs too, but when the programs are trivial, they limit what the students can be expected to learn.

What software your students need

Because today’s programmers typically use IDEs to save time and errors, that’s how we present C++ coding in this book.

The two IDEs we specifically cover are (1) Visual Studio with its Microsoft Visual C++ (MSVC) compiler for Windows and (2) Xcode with the open-source Clang compiler for macOS. The appendixes show how to install the IDEs, and chapter 1 gives a quick tutorial in using them.

However, you can use any IDE you want; the principles will be the same, though the installation and user details will differ. Or, if you don’t want to use an IDE, you can use a text editor and a command line.

What students say about Murach books

“Today my whole class (20+ students) chimed in to tell me how much they love the Python book. I was shocked... it came out of nowhere. They told me it's the clearest textbook they have and wish all their textbooks used the same format.” - Elizabeth Drake, Professor, Programming & Analysis, Florida

“Your books are so good that I threw away my assigned book for my class and bought Murach's book (which has by the way, helped restore my 4.0 GPA).” - Blaine Simcox, Student, Michigan

“I'm finding myself to be a big fan of the paired pages format. This is the first time that I've seen this structure in a textbook of any kind, and I'm surprised that it isn't more widespread. It certainly makes (especially) programming textbooks much easier to follow—no more flipping back and forth between figures and examples and the text that refers to them. I also like that this format naturally breaks down concepts into bite-sized chunks.” - A student at UCLA Extension

“I'm a computer science grad student, and I like to read, but because I'm blind, illustrations and graphics often make the text confusing and unusable. I'm so grateful that you don't rely solely on graphics to convey concepts, that you thoroughly describe each figure, and especially love the repetition and writing style. Thanks for making an inclusive book for everyone.” - Genevieve Smith, Graduate Student, Pennsylvania

“I just want to say that you guys at Murach Books provide a quality text that is extremely easy to read and really very useful as a reference. “It took me a little while to understand why so many of my textbooks come from you, as a publisher. However, now that I see the continuity aspect of your style, and the fact that I have already paid for 5 of your books, I refuse to sell them back to the college.”- Ted Carr, Student, Cleveland, Ohio

“Your books are by far the best resource I have come across for aspiring developers like me. Most programming instructional resources teach us fundamentals and concepts of OOP (which is fine), but for people who wish to learn how to develop truly professional applications, Murach bridges the gap. I appreciate all your hard work.”- Blake Biessener, Graduate Student

Appendix A How to set up Windows for this book

Appendix B How to set up macOS for this book

How the source code makes it easier for Xcode projects to store data in files

How our courseware differs from others

In contrast to other college publishers, we don’t fill dozens of pages in our books with end-of-chapter activities that may never be used.

Instead, we provide everything you need for an effective course in the instructor’s materials, which you can request from our instructor’s website. Then, you decide which of these materials you want to use.

What follows is a summary of the instructor’s materials for this book; for a detailed description in PDF format, please read the Instructor’s Summary. As we see it, these materials provide everything that you need for running a great course...without the counter-productive busywork of other texts.

End-of-chapter (EOC) exercises

In the EOC activities for all of our books, you’ll find carefully designed exercises that let your students (1) practice what they’ve just learned and (2) help them apply what they’ve learned in new ways.

What’s different about these? Other books may have a ton of exercises, but each covers maybe one or two skills at a time. So if you assign one, or even a dozen, students still don’t get to practice all the other skills, and they never see how the skills interact.

But each of the exercises in our C++ book has your students practice interrelated skills all at the same time. So when they finish a chapter’s exercises, they will have used all of the important new skills in that chapter, just as they would in the real world.

Our exercises start from partial programs, so your students can focus on new skills and not waste time on repetitive code that they’d never code from scratch in a work environment.

Students can download the solutions to the EOC exercises (as well as the exercise starts) for free from our retail website.

We started providing the solutions for the professionals who use our books for self-training. But we’ve found that they keep students from giving up when they get stuck on a problem at midnight, and that the model code also helps them refine their future work.

And don’t worry! We provide additional projects and case studies that you can use for testing, where the solutions are available only to instructors (see below).

Taken together, this unique system allows students to practice more…and learn more!…in much less time.

Objectives

Today, most textbooks include objectives, but they are often so poorly conceived that they are ignored by both students and instructors. In contrast, we provide objectives that describe the skills that the students should master, and mastery can be measured by the test banks, projects, and case studies that we provide. As a result, our objectives actually do facilitate learning.

Test banks

To test comprehension, we provide test banks in multiple formats.

Each test bank provides questions that are designed to test the skills described by the objectives for that chapter, and each test question is designed to test the skill described by one objective. This keeps the promise to the students that they will only be expected to have the skills that are described by the objectives.

In the test banks, we use only multiple-choice test questions because they’re easy to score and (more important) have the highest validity. In other words, the students with the best knowledge and skills will get the best scores. In contrast, matching and true/false questions have low validity, so we don’t use them.

Projects

The best way to develop programming skills is to write, test, and debug programs from scratch. To that end, we provide a set of projects for each chapter. These projects can be used for both practice and tests.

To make the projects as useful as possible, ours provide a range of difficulty levels. That way, you can assign projects at levels that are appropriate for the students in your class.

Because your students should be able to finish some of these projects in an hour or less, you can also use these projects as tests that can be done in a computer lab. That is the only sure way to test whether your students have the skills described by the objectives.

Case studies

We also provide case studies for this book that can be used as midterm or final projects. These case studies are designed so they shouldn’t take more than 10 or 12 hours. But they are also designed so you can easily modify them so they’re more or less difficult.

PowerPoint slides

In our books, the figures present all of the critical information including screen shots, diagrams, tables, examples, and programs. Then, we build our PowerPoint slides from the figures, which means that our slides let you review the critical material that’s presented in the book. This makes it easy to answer any questions that your students raise or review any skills that your students are having trouble with.

In addition, the slides for each chapter start with the objectives for the chapter. They also end with slides that summarize the projects and case studies so it’s easy to review and discuss them.

The slides for this book meet the current accessibility standards.

However, the eBook edition of this text is also fully accessible, and it’s the best way to fulfill the accessibility needs of your students. In fact, sometimes the advice on creating accessible slides is to create a PDF to explain the slide content – which, in essence, is what the eBook does!

A turnkey package

Our instructor’s materials also include everything else that you need for the course, like all the starting files and solutions for the projects and case studies. So what you end up with is a turnkey package for a powerful C++ course.

On this page, we’ll be posting answers to the questions that come up most often about our C++ book. So if you have any questions that you haven’t found answered here at our site, please email us. Thanks!