Syllabus CS2704: Object-Oriented Software: Fall 2002

| CS2704 | Class Info | Syllabus | Calendar | Assignments |

Course information


Dr. Manuel A. Pérez-Quiñones
office: McBryde 621
phone: 231-2646
office hours: Wed 9:30-11:00, Fri 9:30-10:30, or by appointment

Graduate Teaching Assistant

Jesús Trespalacios
office: McB122
office hours: Mon 10:00-11:00 Tue 9:00-10:00 Wed 9:00-10:00, or by appointment


Book cover UML and C++: A Practical Guide to Object-Oriented Development, by Richard C. Lee, William M. Tepfenhart, 2nd Edition. 2001, Prentice Hall, ISBN 0-13-029040-8. Required
The following are good reference books on UML, and C++ (in that order). They are not required for this course, just listed here as good supplements.

UML Distilled: Applying the standard object modeling language, by Martin Fowler with Kendall Scott. 1997, Addison-Wesley. ISBN 0-201-32563-2.

The C++ Programming Language by Bjarne Stroustrup, 3rd Edition. 1997, Addison-Wesley, ISBN0-201-88954-4.


Object-oriented programming concepts are studied and basic skills in software design are developed. Sound practices for design, construction, testing, and debugging of object-oriented software systems are emphasized. Object-oriented features of the C++ programming language are examined. The primary principles and language features studied are: objects, classes, inheritance, and polymorphism.


CS 1704 or ECpE 2574. Computer Science majors and minors must have completed the prerequisite with a final grade of C or better. ECpE majors must have completed the prerequisite with a final grade of C- or better. We will grant no exceptions to these requirements.

Web page
This page will be updated throughout the semester with information on deadlines, changes to the schedule, presentations, etc. The web page includes several dynamic features that should help you get the most out of this course. Some of these include: discussion board, grade lookup, semester calendar, and a very simple search engine over transparencies.

Attendance and Participation

Attendance at class is necessary for successful completion of the course. Attendance is particularly important on specials days, such as homework-due days, exam days, etc. However absences will not count against your grade, but are discouraged unless special circumstances exist.

Programming Assignments due in class are due at the beginning of the class and will not accepted late. This includes handing in your work on your way out of class.

NOTE that it is your responsibility to turn in the required work at the assigned due date, it is NOT the responsibility of the professor or the GTAs to pick it up or to remind you to turn it in.

There might be some participatory excercises done in class. If you are asked to participate in these, it is expected that you will do so.

Students are expected to read the assigned material prior to class, check the web page for the assigned readings and their dates. Some class time will be used for lectures, but attending lectures will not be sufficient for full understanding of the concepts from the readings.


Throughout the semester you will have several assignments of different kinds. Each might require different skills from you, and each will require different amount of effort. In general you can count on the following:


In-class quizzes and online quizz will be used throughout the semester. These account for 5% of your grade and are required. There will be no make up of quizzes, not even with a medical excuse. There will be about 6 or 7 of these throughout the semester.

Quizzes are not going to be discussed in class and you might not get the quiz back other than finding your score and the key on the web.


There will be a number of homework assignments throughout the semester, accounting for 5% of your final grade. It is possible, but not guaranteed, that the lowest homework score will be dropped. Most homework assignments will be submitted electronically. No late homeworks will be accepted.

Programming Projects

There will be several programming projects in the semester. Some are larger projects and some are smaller. All work is to be done individually.

The programming projects must be implemented in Standard C++. You may use any Standard conformant compiler you like, however all programming assignments submitted are required to compile under the GNU g++ compiler, version 3.x. This is installed on the Linux machines in McB 124 and it is free for you to download from the web. Programs will be tested under either Windows NT or Linux but for certain using g++. It is your responsibility to ensure that your programs execute correctly when compiled with that compiler.

Each project has a firm due date. This is the date by which you have to submit your project or risk losing points. Late programming projects can be submitted, but have a 10% penalty per day late. No projects will be accepted more than three days late. The 10% is deducted from your the score you obtain. For example, if you turn in a project late and the TAs grade it and determine that the score is 80 points. 10% for late penalty will mean that you will lose 8 points, and your score will be 72.

IMPORTANT - You must turn in all programming projects in order to pass the course. If you do not turn one of them in, you will get an F in the course. This is to prevent students from being "satisfied" with a C and just not doing one of the projects. You have to do them all and turn them in by December 11 (last day of classes at the beginning of class).

All the programming projects will be submitted electronically, using the Curator System. See the Curator Project Guides Page ( for more information. Be sure to download and read the Student Guide to the Curator - it contains the answers to most of the questions students have about the Curator System. The Student Guide also contains information about how the Honor Code applies when using the Curator; be sure to read and follow the guidelines given there.

Each of your programming projects will also be graded for adherence to good software engineering principles, including documentation, design, conformance to the stated specification, and programming style. Each project specification will include explicit guidelines that you will be expected to follow, in addition to general principles discussed in class.

Before you start begging for extensions to programming project schedules, consider the following:


All of your scores will be used to calculate your grade, none will be dropped or eliminated. The test are done at class time and involve some amount of programming. You may use the class textbook but nothing else (no papers, no transparencies).

Abscense, Makeups, and other special circumstances

No makeups are allowed in this course. Homeworks not turned in on time will not be accepted. Quizzes missed get a zero. Projects can be turned in late up to three days with the appropiate penalty. Exams missed can be "replaced" as explained above.

Nevertheless, sometimes people get sick so I will allow extra time to complete projects if you have the proper medical evidence that shows you were not able to complete it in the time allowed. In special circumstances, other excuses will be accepted, but you would still need proper evidence of them.

Consider the following observations:


Your grade will be based on the scores you obtain on your work. There will be no curve applied so your scores, so be sure to study and work hard for every single assignment and test. Your work will be weighted as follows:

Online and In-Class Quizzes


Homeworks, and other small assignments


Programming projects


Two exams (each 15%)


Final exam (cumulative), covers all the material in the course




Final grades will be set according to the usual 10-point scale using A, B, C, D and F. I reserve the right use the extended scale that VT has (A, A-, B+, etc.). I do not plan to use a curve, so do not count on getting 88 and waiting for the curve to pull you through. It won't. Study to get a 100. All the scores are rounded to one decimal place and the final score rounded to integers (i.e. 89.4 is a B and 89.5 is an A).

Honor Code

All work on assignments and exams is to be your own. You will be required to sign an honor code statement on all of your work. Students are encouraged to consult with one another about project design issues, as the sharing of ideas here will lead to better systems. However, sharing of code is not tolerated and furthermore it is easy to detect. Please avoid the awkward situation of being caught sharing code with other students. To sum up, plagiarism will not be tolerated.

What is plagiarism? Check the website, I do not tolerate plagiarism, so avoid doing it and do not even try to justify it by giving excuses that begin as "I was not aware that ..."

An exhaustive list of Honor Code violations would be impossible to present here, but among other things, each of the following is a flagrant violation of the Virginia Tech Honor Code, and violations will be dealt with severely (Honor Court):

It is acceptable to discuss with classmates a programming assignment in a general way, i.e., to discuss the nature of the assignment. In other words, you may discuss with your classmates what your program is required to accomplish but not how to achieve that goal using C++. In no way should the individual statements of a program or the steps leading to the solution of the problem be discussed with or shown to anyone except those people cited
in the following statement. Privately hired tutors are not an exception to this requirement, nor are athletic or other tutors provided by the University.

Feel free to discuss the assignment and your program specifically with the instructor or graduate teaching assistant. The discussion of your individual program must be limited to these people.

If you have any question as to how the Honor Code applies to this class, remember that:

In addition, the Honor Code statement included in the Student Guide to the Curator is in force for this class.

The Honor Code will be strictly enforced in this course. All assignments submitted shall be considered pledged graded work, unless otherwise noted. All aspects of your work will be covered by the Honor System. Honesty in your academic work will develop into professional integrity. The faculty and students of Virginia Tech will not tolerate any form of academic dishonesty.

Special Needs

If you have any special needs or circumstances (disability accommodations, religious holidays, etc.) please see the instructor during office hours.

| CS2704 | Class Info | Syllabus | Calendar | Assignments |
manuel a. pérez-quiñones, © 2002