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

 

Contents:
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.
 

Textbook:  

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