ENGI 3891    Advanced Programming


                                                            Fall 2013


Instructor: Dr. Lihong Zhang, Faculty of Engineering and Applied Science, Memorial University of Newfoundland, Email: lzhang@mun.ca, Tel: (709) 864-4638, EN-3031


Course Schedule:

Lectures: Three lectures per week. Mondays, Wednesdays, and Fridays 15:00 15:50, all in EN-1054

Office Hours:  Tuesdays and Thursdays 16:00-17:00

Assignment Due Dates (Tentatively): A0 (Sept. 20), A1 (Sept. 27), A2 (Oct. 4), A3 (Oct. 18), A4 (Oct. 25), A5 (Nov. 1), A6 (Nov. 8), A7 (Nov. 15), A8 (Nov. 22)

Labs: 9 lab sessions in EN-3000/3029

Midterm Test (Tentatively): Oct. 16


Evaluation Scheme:
Assignments:                 12 %   

Midterm exam:             30 %

Final exam:                   58 %


Website: The formal D2L-based course website is available at http://online.mun.ca/


Course Outline: http://www.engr.mun.ca/~lihong/teaching/EN3891/3891Outline.pdf


Course Schedule: http://www.engr.mun.ca/~lihong/teaching/EN3891/3891CourseScheduleWeb.html


Review: commands and operators, control structures; functions and variables: scope, lifetime, storage class, pass-by-value, declaration vs. definition, privacy; arrays & string; library objects.
Pointers: notation, equivalence of pointer notation to array notation, passing by pointer, pass-by-reference.
Structures: declaration, definition and usage, pointers to structures, structure assignment, abstract data types.
Classes: data and function hiding, member functions, access control, objects, declaration versus instantiation, static members, inline functions.
Object Creation: constructors and destructors, default constructors, overloading, default arguments, copy constructors, shallow vs. deep copying.
Ad Hoc Polymorphism: conversions, binary operator overloading, unary operator overloading, friend functions, assignment and subscript overloading.
Inheritance: code reuse, derived and base classes, the protected access control, code reuse, virtual functions, abstract base classes, multiple inheritance.
Parametric Polymorphism: function templates, signature matching, class templates, inheritance.
Although not formally taught, examples and assignments will emphasize and explore such fundamental data structures as arrays, stacks, and queues.


Frank L. Friedman and Elliot B. Koffman, Problem Solving, Abstraction and Design Using C++ (5th Edition), Addison Wesley, 2006, ISBN: 0-321-45005-1. (Note: The textbook is not mandatory. It is specified only as a backup. The lecture notes are the primary resource and are available on the web in a form that may readily be printed.)




Back to Dr. Lihong Zhang's homepage

Last Modified: Thu., Aug. 29, 2013 (at 16:00) by Lihong Zhang