Last Modified on: September 9th, 1997

Course Number: CS 3321
Enrollment: 157
Taught During: Winter 1996
Instructor: Prof. Shashi Shekhar
Homework assignments:
Recitation problems:
Lab expt descr.
Audience: Student Background Survey
Major Exams:
Lecture Notes: C++SummaryNotes.html ford.ch1notes.html ford.ch2notes.html
ford.ch3notes.html ford.ch4notes.html ford.ch5notes.html
ford.ch7notes.html ford.ch8notes.html ford.ch11notes.html
Resources: data-structure applets

Responses to Portfolio Questions from Computer Sc. Dept.:

Question 1. Text used and your opinion on accuracy, clarity, level, range, etc.

Response: Text Used: William Ford and William Topp, "Data Structures with C++" Prentice Hall 1996 (ISBN 0-02-420971-6).
The textbook provides introductory material on data structures including linear structures ( stacks, queues, priority lists ), and non-linear data-structures (binary trees, binary search trees). It also provides intermediate level material on C++ (classes, operator overloading, templates, interaction between pointers and class constructors/destructors/assignment operators, inheritance/polymorphism). The book has excellent classification of data-structures for beginners. It provides adequate number of exercises, discussion questions and programming projects.

The book may have too little details of C++ for students unfamiliar with C language. It was supplemented with notes on C++ language details. Probably a C++ book should be used as a supplement.

Question 2. Portion of text covered

Response: Ford/Topp: Chapters 1-8, and 11.

Question 3. Demonstrations used in lecture or recitation class. Value of these demonstrations.

Response: A video tape titled "Design and Evolution of C++" by Bjarne Stroustrup, the designer of C++, was shown in the class. Several demonstrations were used in the course with the help of makefiles, to illustrate how to organize C++ program into files, how to compile, #include, link and test C++ classes, how to implement classes, inheritance and templates.

Makefiles provided a useful mechanism to convey the industrial practices relating to C++. It helped illustrate the file organization, linking and #include facilities. Student could follow industrial practice of separating major classes into independent file-pairs (.h file, .C file), without remembering and executing scores of commands.

Illustration of industrial practices in testing C++ programs were provided with the help of a c-shell driver and testcases. A common practice is to develop a driver for each class (e.g. classAdriver.C for classA.h and classA.C). The testcases were organized as file pairs ( classA.inp, classA.exp)

Question 4. Which topics were most difficult for students?

Response: Inheritance was conceptually difficult. Templates were difficult to implement due to the limitations of the C++ compiler (gcc) and its error messages. C++ compilers did bring up many other surprises from time to time. In particular, it did not compile class templates split into a .h and a .C file.

Question 5. Comment on suitability of student's background for this class.

Response: A simple quiz on the pre-requisite material revealed that students were not prepared for the class. One third of the class failed the quiz on "C" (Csci 3113). It is surprising in view of the fact that the quiz was based on the CS 3113 final and most students took CS 3113 in the recent past.

Question 6. Respects (minor) in which your coverage and relative emphasis of topics differed from those defined by the approved course syllabus.

Response: Reduced the overlap with CS 3322 by eliminating discussion of complexity analysis, and advanced algorithms (e.g. sorting). Emphasis on basic C++ languages was increased. I taught template functions and classes in Fall 1994 offering, a first in CS 3321 history. We also included material on industrial practices in C++, including use of makefiles for managing programs spread across multiple files, and use of testcase and driver programs to test C++ classes.

Question 7. Your recommendations as to changes in the course syllabus.

Response: Course description should explicitly state that this course is more than a C++ programming course. Syllabus needs to be revised to reduce overlap with CS 3113 (C programming) and CS 3322 (Algorithms and Data-Structures II). It should focus on intermediate level C++ as emphasized in the book. It should not discuss elementary data-structures (e.g. linked lists, arrays) and elementary C++ issues (control structures), which are covered in CS 3113. The name of the course should also be changed to "C++ and Data Structures" from "Algorithms and Data Structures I" to reduce overlap with CS 3322.

Question 8. Other suggestions for making the lecture course more effective.

Response: Reduce the class size. Younger students are not very motivated and need closer interaction.

Question 9. Please describe the mode of instruction utilized in the recitation class. Please describe or attach the problems utilized.

Response: Recitations were used to provide detailed information related to laboratory exercises and conceptual topics. Discussion of C++ compilers, linkers, makefile, testing conventions were discussed. The typical errors and error messages related to various features of C++ were discussed. In addition, a set of discussion questions and exercises were assigned from the textbook for recitation sections. Practice exams. were used to motivate students to go beyond programming.

Question 10. Suggestion for making the recitations (if any) more effective.

Response: Introduce Laboratory sections.

Question 11. Suggestions for making the laboratory sessions (if any) more effective.

Response: Introduce scheduled Laboratory sections supervised by TAs or graders.

Question 12. Constitution of grade (% from final, midquarter, homework, lab, etc.).

Response: There were four regular assignments. The weighting scheme used for grading is: Quiz - 10 percent, Midterm exam - 25 percent, Final exam - 35 percent, Assignments - 30 percent, Following were the two necessary conditions for passing this class: (i) submission of all assignments, (ii) scoring at least 50 percent on the final examination.

Question 14. Nature of exams (i.e. open book, crib sheet, etc.)

Response: Quiz, Mid-quarter and Final were designed to be closed-book examinations. However, Students were allowed to refer to the textbook and notes. Examination emphasize problem solving (60%), discussion questions (20%) and programming in C++ (20%).

Question 15. Attachments: (See top of this page)
Homework assignments
Recitation problems
Lab experiment descriptions
Class notes distributed
Major quizzes & Final