University of Denver
University College
Computer Information Systems
Syllabus
Advanced C++ Programming – MCIS-4136


Course Summary

Course Name

Advanced C++ Programming

Course Number

MCIS-4136

Instructor

Michael I. Schwartz

Class Meetings

Online, for 10 weeks beginning on 8 January 2007
Last date and time for work to be submitted is 16 March
Weeks run from Sunday noon through Saturday midnight

Days Instructor Is Unavailable

Every Friday from 4 PM until Saturday night at 7 PM.

Course Description

This continuation of MCIS 4130 lets students turn an object-oriented analysis specification into an implementation.

Emphasis is initially placed on software engineering principles in programming, data abstraction and object oriented concepts, and understanding the purpose and intended application of language features.

The course progresses to using Extended Markup Language (XML) for true distributed, language-agnostic integration and leveraging the speed and flexibility of C++ as the workhorse for this environment. Students will create applications that parse XML and extract useful information, as well as create XML. Applications will communicate via XML and be capable of being run by, and interacting with, a web server.

Course Objectives

At the end of this course, a student will:

  1. Understand the basic steps of turning an object-oriented analysis into a C++ implementation
  2. Understand and apply selected containers and algorithms of the Standard Template Library (STL)
  3. Understand delegation versus inheritance
  4. Understand how XML schema supports validation of XML documents, and how this is supported programmatically
  5. Understand how XML can be stored and retrieved programmatically
  6. Understand how a program is provided a web front end.

Prerequisites

  • MCIS 4130–C++ Programming
  • MCIS 4035–Object Oriented Methods II

Required Materials and Resources

Text

A complete set of instructor slides are available via Ecollege in the Course Home/Resources tab for student convenience.
A number of books are recommended for reference and a second source of information for the student.

The standard textbook for the course is C++ How To Program by Deitel and Deitel, Fifth Edition, Prentice Hall, ISBN 0-13-185757-6.

Material

The material for this advanced course is drawn from both the textbook, and from specified supplementary materials.

Electronic Mail

Responses can also be received by mailing a description of your problem to mschwart@du.edu.

WWW

C++ Syllabus, HW Problems, and Resources can be accessed on http://www.du.edu/~mschwart/cxx.html as well as on the Ecollege system

Appointments

Call 303-971-6781 (Day), 303-394-3117 (Eves).

Online hours will also be posted for certain Ecollege discussions.

Course Policies and Procedures

Attendance

Students must participate in online discussions in a meaningful way, and post a class summary weekly. This comprises the Class Participation portion of your grade.

Assignments

Assignments are due each week, and must be handed in on-time. Late work will receive no credit. Make advance arrangements with the instructor for any requested exceptions. Except for the last assignment, all assignments may be resubmitted after rework of indicated portions. Resubmitted assignments will receive a maximum credit of 90% Assignments are all available at the beginning of the course.

Solutions

Will be posted each week, right after the deadline for submission. Discussion of the solution is one open topic each week. Your submission will be graded within 3 days after the submission deadline.

ScoringGrading
Online Assessment: 10%89%-100%: A85%-88%: A-
Homework: 65%82%-84%: B+75%-81%: B70%-74%: B-
Class Participation: 25%60%-69%: C50%-59%: D0%-49%: F

Academic Integrity

Students are expected to do their own work. Any student caught submitting the work of others on any assignment or exam will receive an automatic "F" for the course and a report will be submitted to the Dean's Office.

Academic dishonesty is contrary to the spirit of higher education as well as a violation of University College and University of Denver Regulations.

At its core, academic integrity requires honesty. This involves giving credit where it is due and acknowledging the contributions of others to one's own intellectual efforts. It also includes assuring that one's own work has been completed in accordance with the standards of one's course or discipline. Without academic integrity, the foundation of scholarship itself is undermined. Academic integrity, for all these reasons, is an essential link in the process of intellectual advancement.

Violations or non-compliance will be addressed in a manner consistent with the Student Handbook http://www.du.edu/honorcode/statement.htm#. Student committing plagiarism may be dismissed.

For a description of plagiarism and how to avoid it, see Ronald B. Standler, Plagiarism in Colleges in the USA http://www.rbs2.com/plag.htm#anchor111111

The instructor's own thoughts on the meaning of plagiarism in a coding environment is found here (HTML).


Course Schedule

A focus is maintained on software engineering principles such as modularity, portability, and testing of designed behavior. Exercises are the primary student mechanism to achieve mastery of the subject. Complete sample solutions for each exercise are handed out and discussed by the instructor immediately after the exercises are turned in by the students to reinforce the homework objectives.

Following are the goals for each week's lessons:

Class / Objectives Weekly Goals Online Assessment? Homework Due By Week End

Class 1:
A

Understanding of the object-oriented analysis of the system we will implement in C++.
Discuss both theoretical and practical implications of inheritance hierarchies and abstract classes
You will review and discuss this specification in preparation for an exercise
Reading: Deitel & Deitel: Chapter 12 (review), begin Chapter 13.

  HW 1 (HTML)

Class 2:
B, C

Understand an overview of the Standard Template Library (STL), useful for the containers applied in our implementation.
Understand when to apply delegation versus inheritance
Implement a container with polymorphic entries, and discuss testing philosphy
Reading: Deitel & Deitel: Chapter 13, Chapter 23.1 and 23.2.

  HW 2 (HTML)

Class 3:
B, D, E

Understand methods of persisting data between program invocations
Explore string parsing methods
Reading: Deitel & Deitel: Chapter 17, Chapter 18

  HW 3 (HTML)

Class 4:
A, F

Understand techniques of centralizing versus distributing applications
Understand how C++ deals with the command line, and where it comes from
Reading: Deitel & Deitel Appendix E.4, Supplementary material

  HW 4 (HTML)

Class 5:
D, E

Understand/review the basics of the extensible markup language (XML)
Discuss DOM versus SAX parsing, and then focus on the DOM.
Reading: Supplementary material (Resource tab)

  HW 5 (HTML)

Class 6:
D, E

Introduction to Xerces, the Apache XML parser library and API
Understand the role of XML schema, and how it is used to validate documents.
Experience changing "flat files" into XML documents
Reading: Supplementary material (XML Tutorial) (Resource tab)

  HW 6 (HTML)

Class 7:
D, E, F

Understanding and using the XML DOM API
Experience reading and writing XML, using normalization and validation
Reading: Supplementary material (W3C DOM, Xerces user guide) (Resource tab)

  HW 7 (HTML)

Class 8:
A, F

Understanding basic HTTP, HTML, and programming responsibilities
Experience parsing Web requests and responding
Reading: Deitel & Deitel, Chapter 19, Appendix J

  HW 8 (HTML)

Class 9:
A, C, F

Understand what can go wrong with HTTP and XML.
Introduction to XML storage and XQuery/XPath and the Berkeley DB XML API
Reading: Supplementary material (Berkeley XML DB users guide) (Resource tab)

  HW 9 (HTML)

Class 10:
A, F

Review, future projections, discussion of SOAP and how it fits in
Reading: Supplementary material (Resource tab)

Assessment Resubmissions due
HW 10[optional] (HTML)