Section 1.3 Instructional Notes
Subsection 1.3.1 Exercises (and what they lack)
The exercises in this book are designed to reinforce the concepts presented in a given section or chapter and, generally, to provide instant feedback. They make use of interactive elements that evaluate the learners responses. Exercises in each section are designed to be completed as part of reading. Exercises at the end of each chapter are meant to review the material and provide additional practice.
They are NOT intended to be the only form of practice. Each exercise generally focuses on a very specific skill or concept. There are many essential skills that these exercises do not adequately address, including:
-
Setting up and using a real development environment
-
Writing readable and maintainable code, following styling conventions
-
Communicating about code with others (e.g. documentation, code reviews, pair programming, etc...)
-
Integrating many different concepts to solve larger problems
If you are an instructor, you will need to provide additional practice opportunities for your students that address these skills. If you are learning on your own, you should periodically stop and try to write programs that integrate multiple concepts.
Subsection 1.3.2 Case Studies
One of the challenges of a programming text is balancing the need to efficiently convey the details of new concepts while also providing examples of how larger programs are built. The early part of this book features Case Studies that explore developing a larger program using newly learned concepts.
Later in the book, as a meaningful scale project becomes larger and larger, there are fewer such examples. It is hoped that the learner will have already internalized the concept of iterative development and be able to apply the concepts on their own.
Subsection 1.3.3 Chapter Dependencies
Not every chapter of this book must be read in order. Some chapters can be skipped or read out of sequence without losing the overall understanding of the material. The diagram below shows the dependencies that exist.
The dependencies between chapters in this book.
flowchart TD
Intro["`Chapters 1-5
Variables & Functions`"]
Files["`Chapter 6
Multiple files`"]
Ch7-11["`Chapters 7-11
Control & Strings`"]
Ch12["`Chapters 12
Program Design`"]
Ch13["`Chapter 13
Vectors`"]
Ch14["`Chapter 14
Multidimensional Vectors`"]
Ch15-20["`Chapters 15-20
Basic Object Oriented Programming`"]
Ch15-20["`Chapters 15-20
Basic Object Oriented Programming`"]
Ch21["`Chapter 21
Standard Containers and Algorithms`"]
Ch22-23["`Chapter 22-23
Memory Management`"]
Ch24["`Chapter 24
Recursive Functions`"]
Ch25["`Chapter 25
Big O`"]
Ch26["`Chapter 26
Searching and Sorting`"]
Ch27-28["`Chapter 27-28
Linked Lists`"]
Ch29["`Chapter 29
Stacks and Queues`"]
Ch30["`Chapter 30
Heaps`"]
Ch31-32["`Chapter 31-32
Trees and BST`"]
Ch33["`Chapter 33
Hash Tables`"]
Ch34["`Chapter 34
Graphs`"]
Intro --> Files
Intro --> Ch7-11
Files --> Ch12
Ch7-11 --> Ch12
Ch7-11 --> Ch13
Ch13 --> Ch14
Ch13 --> Ch15-20
Ch15-20 --> Ch21
Ch14 -.-> Ch24
Ch15-20 --> Ch22-23
Ch22-23 --> Ch27-28
Ch25 --> Ch26
Ch24 --> Ch26
Ch25 --> Ch27-28
Ch27-28 --> Ch29
Ch29 -.-> Ch30
Ch30 -.-> Ch31-32
Ch25 --> Ch33
Ch22-23 --> Ch33
Ch25 --> Ch34
Ch27-28 --> Ch34
You have attempted of activities on this page.
