Abstract

The C++ programming language has undergone major changes since the introduction of C++11. 'Modern C++,' defined here as C++11 and beyond, can be viewed as a new language compared to C++98 (the version of C++ introduced in 1998). Many new features have been added to modern C++, including lambda expressions and automatic type deduction. The standard library has also been dramatically updated with constructs such as std::unordered_set and smart pointers. The traditional way of teaching C++ by first teaching C's low-level features, such as raw pointers and char * strings, is potentially ineffective when teaching modern C++. Based on this hypothesis, we updated the way in which we teach C++ at UW-Madison by teaching the most important high-level features (containers, iterators, and algorithms) first, and introducing the low-level features (raw pointers, dynamic memory management, etc.) only when they are necessary. In this paper, we present our experiences teaching modern C++ with this top-down approach. We find that with our new approach, students' perceptions about learning C++ are largely positive.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call