No prior programming experience is assumed. I cover the basic principles of programming using C++, and provide practice for algorithmic and procedural problem solving.
Topics covered are:
- basics of coding - "Hello World", errors, variables, fundamental types, the string class;
- control flow - if, while, for;
- user input - cin and associated functions;
- vectors and functions; passing by value and by reference; classes;
- arrays, pointers; other data structures.
I teach by live-coding. To the right of my code, I use Notability to draw visual representations of the code. Sometimes I also make use of pre-prepared pdfs and online documentation.
Here is an extract from one of my lectures on references. An example is cut from 13:12:08-13:23:50 and this extract does not start at the beginning of lecture. It is provided for other educators as a short (less than 20 minutes) example of my teaching. A student's response to a midterm question on function calls and references is provided below. It is satisfying for me to see my students find my visual representations useful.
During the COVID quarters, I give my students a week to submit their midterms. My questions ask students to explain code execution. I am careful to clarify my expectations of what a good response should look like. This encourages a thorough understanding of how C++ works. I believe that the midterm has been a good learning experience for students because some of the answers I read this quarter were exceptional.
Here is my most recent midterm. Here are the instructions I provided. At the bottom, there is a video explaining how to respond to question 3. Here is a response to question 3 that I particularly enjoyed grading.