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.
The teaching assistants (TAs) are graduate students who help the instructor. Their primary responsibilities are leading the labs, helping students and grading projects/exams.
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.
Copies of all handouts, assignments, notes and old exams will be posted as
appropriate on the course Web page. The address for it is
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.
Data Structures in C++. Angela Shiflet. West Publishing Company, 1996.
The Berkeley UNIX Environment. Horspool. Second Edition. Prentice Hall, 1992.
Final grades will be computed as follows:
First Exam: 15%;
Second Exam: 20%;
Final Exam: 20%;
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.
There will be 3-4 programming projects with the first project also serving as a review of basic programming concepts and writing programs using C++ and the Unix environment. The intent is to familiarize the student with the Unix system, its editor, debuggers, etc.
Each project will involve some amount of group work. The larger projects will involve the design and implementation of programs with the work split among the group members. All group members are expected to contribute equally. Responsibility for the work and organization will be on the group members although a PLA is available to help groups with difficulties. The PLA can help with basic organization and division of tasks along with helping the group function properly. If problems arise in a group, the group members should first try and work out the problem amongst themselves with the help of a PLA. If serious problems exist the PLA may suggest the group consult with the instructor.
Projects will be turned in as a group. More information on turning in projects will be made with the project.
There will be three in-class exams (including a final exam during the last week), plus the possibility of pop quizzes for which no advance notice will be provided. Exams will be closed book, closed notes.
At least one question on each exam will relate to one of the group projects. Members of groups whose members all get the project-related question correct will receive a bonus on the exam.
These assignments are to be done during the laboratory period. The labs will be graded based on receiving or not receiving credit for the assignment. To encourage students to complete the assignment, they may be turned in up to 24 hours after the beginning of the lab.
These exercises will be done in class and involve a small group of students. One member of each group will be the recorder for the group and responsible for turning in the work of the group along with the group members. These exercises must be turned in by the end of the class. All students in the group will receive credit for the exercise.
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.