Programming Fundamentals - A Modular Structured Approach using C++
Kenneth Busbee, Houston Community College
Pub Date: 2013
Publisher: OpenStax CNX
Conditions of Use
The book does a good job of covering the first term of a programming class. It covers the basics of programming but it's not a perfect fit for a read more
The book does a good job of covering the first term of a programming class. It covers the basics of programming but it's not a perfect fit for a one-term only programming class. Some of the topics not covered are: multidimensional arrays and structs, anything beyond the basic arithmetic operators, output formatting, using library functions for advanced math and bitwise operations. I agree with the idea of leaving out object oriented programming (classes). Although every important feature was discussed, I feel like any adopter would want to supplement with more examples. The book doesn't have much in the way of code tracing examples and additional code examples. It's not always the best approach for students, but students often solve programming problems by searching for a code fragment that they think solves their problem instead of creating the code fragment by themselves. I would provide additional code fragment examples. I also feel like there's not enough emphasis on functions. I think it's fine to introduce functions early but they should be revisited after covering structured programming when students can deal with larger blocks of code and see the benefits of functions. I feel like introducing recursion to the average student (especially community college students) is not helpful. So it's fine to have it in there but I wouldn't hesitate to skip it. There was no index or end of book glossary although it is searchable (the pdf has an index). On the other hand, each module has a definitions section.
The book follows the C++ standard. I haven't checked every example but I noticed one example that wouldn't compile because it was missing a library include statement.
It's not stated which C++ standard is supported although it's obviously C++98. There have been a few important updates to the standard since the text was written but at this level, I don't think it impacts the material or examples very much, although anyone who adopts the text would need to scrub all the examples and add a section on the changes to the spec.
The text is written in a clear style although some of the module titles could be more clear - for example "program control functions" and "Specific Task Functions" seem obfuscated to me. Supporting context is at a minimum, which is a choice of style. Some books surround the code examples with historical context and philosophical context. This book is about the basics.
The structure and style of the text was consistent throughout. The book follows the form of presenting a text description with pseudocode, then the C++ structure and then one or two example code fragments. Each major section has a practice programming exercise.
I think this question applies better to textbooks from other subjects like history or economics. The book is modular in the sense that each module is broken down into easy to digest sub modules. You do have some ability to reorganize the material. For instance simple functions are introduced very early and you could skip it, cover the material on assignments and structure to get to more complex code and then come back and introduce functions. However, in general it's difficult to reorganize any programming book since examples often depend on concepts and structures introduced in earlier modules.
It's a matter of personal preference but I like to cover functions after structured programming. It's fine to introduce the idea of calling a function if you use an example that requires a library function but the justification for functions doesn't come until the student has created more complicated code. Otherwise the flow from data types and operators to selection statements and then to loop statements is fine and pretty standard for any C++ book. File I/O isn't introduced until late, which might be an issue for some, but it's fine with me.
The HTML works OK as far as the contents and modules. Each section within the module is one to two pages (depending on your monitor resolution and zoom level). There aren't many images and charts so there's no issues there. It would be nice when I click on the module heading in the HTML version to take me to the start of the module instead of requiring me to expand it and click on a subsection. The PDF version uses hard to read and old style fonts that look like old faded computer documentation. The HTLM version is much more readable
The grammar is fine.
There are no cultural references in the book or even use of specific names.
It's better than some of the other open or free textbooks I've seen out there and is potentially a good alternative to the $100 books. If I was to adopt, I would skip over the early introduction to functions and skip the material on recursion and pointers (I think for community college students without calculus it's too much - calculus has nothing to do with pointers but it's the ability to deal with abstraction that's helpful). I would add a more robust section on functions after the section on structured programming. I would also add more many more examples and exercises. Personally I would also add two dimensional arrays because they make a good visual usage case for nested loops. The lab exercises are fine but I don't think there are enough of them. But that's an easy thing to supplement. I'll use it as a resource in my classes but not make it the sole textbook.
The book covers all the major topics of C++ up to the C++98 standard. It does have a nice index and table of contents that allows you to find a read more
The book covers all the major topics of C++ up to the C++98 standard. It does have a nice index and table of contents that allows you to find a topic quickly and move to the module quickly. I did not see a glossary.
The book is accurate, albeit dated.
The content is dated and this is one of the major drawbacks. I teach in an older style and I was glad to see that it showed an older model; however it hasn't been updated in a while. The online version was published in 2013, but I think the original was published in the late 90s. I was looking for the copyright date, but I couldn't find it when I was typing this. The reading list is several editions out of date and the book makes no mention of any of the C++11 or C++14 standards. The changes made to C++ in those standard changes really need to be included in a modern C++ text or it is seriously out of date.
I like the book's writing style and I find it very clear.
The book is very consistent. It follows a good style of writing and is easy to follow.
The book is modular but it's hard to assign the modules out of order due to the fact that the nature of a programming text will build off previous modules. This is extremely typical of all programming texts.
I disagree with the flow of topics. I understand why they have chosen to introduce the topics in the way they have but I don't think this is the best way. I prefer to forestall an in-depth discussion of functions until after loops and selection. Selection and loops come very late in the topic list in my opinion.
The interface is clean, clear and easy to use.
The book has very good grammar.
The book is not culturally insensitive.
The book is okay. I don't think I would use this book in my class because there are some major issues with how the examples are developed and the topic flow. Since the modules are sequential it be too hard to rearrange and keep the content clear to the students. Also the examples show the use of global variables which, in my opinion, should be avoided and I teach that in my class, so a text that shows examples using global variables would pose a major issue. In general I feel the book needs a major revision to include more modern C++ standards, a topic flow alteration and the removal of global variables in examples.
Table of Contents
- Chapter 1. Introduction to Programming
- Chapter 2. Program Planning & Design
- Chapter 3. Data & Operators
- Chapter 4. Often Used Data Types
- Chapter 5. Integrated Development Environment
- Chapter 6. Program Control Functions
- Chapter 7. Specific Task Functions
- Chapter 8. Standard Libraries
- Chapter 9. Character Data, Sizeof, Typedef, Sequence
- Chapter 10. Introduction to Structured Programming
- Chapter 11. Two Way Selection
- Chapter 12. Multiway Selection
- Chapter 13. Test After Loops
- Chapter 14. Test Before Loops
- Chapter 15. Counting Loops
- Chapter 16. String Class, Unary Positive and Negative
- Chapter 17. Conditional Operator and Recursion
- Chapter 18. Introduction to Arrays
- Chapter 19. File I/O and Array Functions
- Chapter 20. More Array Functions
- Chapter 21. More on Typedef
- Chapter 22. Pointers
- Chapter 23. More Arrays & Compiler Directives
- Chapter 24. OOP & HPC
About the Book
Programming Fundamentals - A Modular Structured Approach using C++ is written by Kenneth Leroy Busbee, a faculty member at Houston Community College in Houston, Texas. The materials used in this textbook/collection were developed by the author and others as independent modules for publication within the Connexions environment. Programming fundamentals are often divided into three college courses: Modular/Structured, Object Oriented and Data Structures. This textbook/collection covers the first of those three courses.
The learning modules of this textbook/collection were written as standalone modules. Students using a collection of modules as a textbook will usually view it contents by reading the modules sequentially as presented by the author of the collection.
The learning modules of this textbook/collection were, for the most part, written without consideration of a speci??c programming language. In many cases the C++ language is discussed as part of the explanation of the concept. Often the examples used for C++ are exactly the same for the Java programming language. However, some modules were written speci??cally for the C++ programming language. This could not be avoided as the C++ language is used in conjunction with this textbook/collection by the author in teaching college courses.
About the Contributors
Kenneth Leroy Busbee, M.Acc. (Master of Accountancy), Brigham Young University. Teaches programming topics including courses in COBOL, main frame IBM assembly, Intel assembly, Pascal, "C" and "C++"; Business Computer Applications; Principles of Accounting.