CS 2005 Techniques of Programming WPI, B Term 1996
Craig E. Wills Syllabus
Thursday, October 31, 1996


Craig E. Wills, FL-236, cew@cs. Office hours: TBA. Any time for short questions. Electronic mail is an effective method to contact me.

The instructor has overall responsibility for the course, its contents and its presentation.

Teaching Assistants

Rupesh Choubey, FL-143, rupesh@cs. Office hours: TBA.

Jin Jing, FL-145, jing@cs. Office hours: TBA.

Aditya Raghavendra, FL-140, aditya@cs. Office hours: TBA.

Vikas Shah, FL-239, vikas@cs. Office hours: TBA.

The teaching assistants (TAs) are graduate students who help the instructor. Their primary responsibilities are leading the labs, helping students and grading projects/exams.

Peer Learning Assistants

Karim Amin, kamin@wpi.
Joe Gee, gee@wpi.
Craig Howitt, bubba@wpi.
Brian Morin, bmorin@wpi.
Keith Pray, kap@wpi.
Chuck Swanberg, cgs@wpi.

The peer learning assistants (PLAs) are upper-level students to supplement the instructor and TAs in the course. With group learning being a point of emphasis in this course, their primary focus is to provide academic assistance, supervision and mentoring to facilitate effective student group learning. They will have no role in grading student projects.

Course Web Page

Copies of all handouts, assignments, notes and old exams will be posted as appropriate on the course Web page. The address for it is http://cs.wpi.edu/~cew/courses/2005.html.


This course continues the development of discipline in programming design, style and expression, and debugging and testing. The course focuses on three major topics: advanced programming concepts, introduction to data structures and an introduction to software engineering.

An additional emphasis of this course will be the use of much peer learning. Students will work together on smaller exercises in class and on larger projects outside of class. On group work, students are strongly encouraged to ensure that all members of a group understand the concepts embodied in the work.

The objectives expected to be met by students are 1) to demonstrate a foundation for advanced study in Computer Science, 2) to understand the use of fundamental data structures, 3) to demonstrate ``hands on'' experience with these data structures, 4) to be able to design and implement a moderately large program in a team setting, and 5) to draw upon each other to help out with the learning process and provide a good learning environment.

Each student will be given opportunities to demonstrate these capabilities on various projects and exercises throughout the term.


Working knowledge of basic programming concepts in a high-level structured language. These concepts include basic data types and variables, arrays, loops, conditional statements, functions/procedures and basic input/output. The programming language to be used in this course is C++.

Recommended background: CS 1005 or CS 1021.


All assignments will be done on the machines located in the Zoo and Garden Labs. You may also work on CCC DEC workstations for the class. Accounts on these machines already exist for you or will be created the first few days of class.

There will be labs every week on Wednesday. Because there are a fixed number of machines in the lab, you must attend lab during your assigned hour.

Use of own machines will not work well because all assignments will be turned in electronically. You may wish to use your own machines for preliminary testing, but all assignments must work on the lab machines.

Text Books


Data Structures in C++. Angela Shiflet. West Publishing Company, 1996.

Additional Reference:

The Berkeley UNIX Environment. Horspool. Second Edition. Prentice Hall, 1992.

Grading Policy

Final grades will be computed as follows:
First Exam: 15%;
Second Exam: 20%;
Final Exam: 20%;
Projects: 35%;
Other homework, in-class assignments and labs: 10%.

The objectives and grading policies for each project and homework will be provided at the time of the assignment. Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a ``B'' which indicates that the basic objectives on assignments, exams and group work have been met. A grade of ``A'' will indicate significant achievement and encouragement of others beyond the basic objectives and a grade of ``C'' will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances.

Late Policy

Each programming project will be given a point value when it is handed out. The point value indicates the weight of the assignment relative to the other assignments. Late programs will be be penalized 5% of total assignment value per day or partial day, and no assignments will be accepted after seven days beyond the due date. All programs and written homeworks are due at the start of class on the due date. Homeworks and programs turned in after the start of class will be counted late. Projects will be submitted as directed in class. Exceptions to these rules can be made only a priori. Finally, no assignments will be accepted after Friday, December 20 to allow sufficient time for grading.


Many assignments in this course will require you to work in groups, however it is expected that each student will only turn in work that he or she is responsible for. Some assignments may involve individual work. All exams will be done on an individual basis. Any violation of the WPI's guidelines for academic integrity will result in no credit for the course and referral to the Student Affairs Office for disciplinary action.


The following is a tentative outline of the material that will be covered in this course. All references to chapters are from Shiflet's book. Not all sections will be covered from each chapter, and the course meetings will be supplemented with material from other sources. Each week will entail four course meetings and a lab unless otherwise noted.

week 1:
10-30-11-1. Two course meetings. Introduction, review, Chapter 1, Sections 2.5, 2.6, Appendix A.
week 2:
11-4-11-8. Structures, Section 3.4 (scan 3.1, 3.2); Encapsulation, Section 4.1; Stacks, Sections 5.1-5.3; Queues, Sections 6.1-6.3.
week 3:
11-11-11-15. Linked lists, Sections 3.5, 7.1, 7.2, 8.3. First Exam, Friday, Nov. 15.
week 4:
11-18-11-22. Linked lists (cont.). Searching, Sections 2.1, 3.3. Hashing, Sections 11.1-11.3.
week 5:
11-25-11-29. Two course meetings. Hashing (cont.) No lab. Thanksgiving break.
week 6:
12-2-12-6. Recursion, Sections 2.2, 2.3; Trees, Sections 9.1-9.3. Second Exam, Friday, Dec. 6.
week 7:
12-9-12-13. Sorting, Sections 10.1-10.4, 10.7.
week 8:
12-16-12-20. Sets, Section 8.5; Graphs, Section 12.1-12.3. Final Exam, Friday, Dec. 20.