Electronic Notes


These are the actual, interactive, web-based eNotes for two of our C++ courses. They have been developed over many years and subjected to extensive student testing. What are published here are reference versions, stripped of their Memorial local information (like course numbers). Otherwise, they are as taught in Memorial`s Faculty of Engineering in 2009 and 2010.

They are offered under a Creative Commons Non-Commercial license (which basically means they're free to anyone who is not trying to make money off them).

Who should be interested?


A complete text for a year long course in C++, broken into two parts, which demonstrates virtually every technique we have found for using webWriter++ and the TM. In particular

  1. Code samples are created normally in a program editor. They are displayed in the notes inside code boxes with the following special features:
    1. The appearance of the code is controlled by a cascading style sheet so that instructors can match it to how code appears in the student's own code editors.
    2. A simple markup system allows instructors to tag the code so that only the portion to be discussed is displayed on the web page.
    3. Buttons can be added to the box to run the code in the TM, edit the code (non-destructively) or run a video about the code.
  2. Table of Contents is generated dynamically so changes to the lectures are reflected at once in the TOC
  3. Hidden notes can be added, for example to explain in detail how students should run a sample in the TM themselves. The notes can be revealed at the press of a button.
  4. A course dictionary can be activated to allow definitions to be shown as popups whenever a key word is rolled over with the mouse.
  5. A print button allows students to create printable pages suitable for printed notes. In addition to appropriate formatting, the printable page shows a hidden container at the end of each lecture containing all examples in full. Currently, instructors must populate this container manually.


Course decriptions are as originally displayed on our own web pages and reflect the original calendar descriptions in the Memorial University calendar. (Any mistakes are ours, and not Memorial's).

Please note the following caveats:

  1. The courses are all taught in C++, so examples and teaching are oriented to C++.
  2. The pages are tested agaianst Firefox. As far as we know they work in Explorer and Safari but we don't test against them.
  3. The Java Runtime Engine must be loaded on your computer and Java must be enabled on your browser.
  4. Courses display reasonably on a MAC when run from a server. If you download a course and try to run it from a MAC locally it will complain about security exceptions.
P1. An Introduction to Programming.

an introduction to algorithmic problem solving techniques and computer programming, including basic program control structures (sequence, call, branch, loop) and data representations, functional decomposition, and design by contract. Exercises and examples are drawn from a variety of engineering disciplines and are implemented using a standard modern programming language.

P2. Advanced Programming.

advanced procedural language programming; data structures, user defined types, pointers; modularization techniques, scope and data hiding; object-oriented programming; classes, objects and attributes; data encapsulation, member and non-member functions; overloading, methods and friend functions; inheritance, sub- and super-classes; templates.