MCS-273: Introduction to C++ Programming (J-term 2001)

Contact information information

Amos Ong and David Wolfe will be teaching this course. Following is information about how you can contact us:

Instructor: Amos Ong David Wolfe
Office: Olin 310 Olin 306
Phone: 7654 7469
Email: amos@gac.edu wolfe@gac.edu
Homepage: www.gac.edu/~amos www.gac.edu/~wolfe

We are available by appointment or when our doors are open.

World Wide Web

We will maintain a course homepage that will contain links to all course handouts and some supplementary materials such as code to use as a starting point in assignments. The URL for this course is http://www.gac.edu/~mc38/ , which you may want to save as a bookmark in your web browser.

Topics and objectives

In this course we will cover the fundamentals of the C++ programming language. As Cay Horstmann points out, ``It is impossible to teach all of C++ to beginning programmers in one semester. This book [and course] purposefully omits several useful but technically complex C++ topics...'' We'll be covering built-it types, flow control, functions, objects, classes, vectors, and pointers. We'll also focus on effective use of emacs (an editor), gdb (a debugging tool), and make (for directing compilation of large programs).

Prerequisites

Permission of instructor; MCS-177 is usually sufficient. We assume students have significant knowledge of some other programming language.

Text and readings

The text for the book is, Cay Horstmann, Computing Concepts with C++ Essentials, 2nd edition. The book assumes the reader has had no programming experience, so most students in the course should be able to read through it rather quickly. For the beginning of the course, we'll be covering about a chapter a day.

Course structure

Each day, you will have assigned reading which must be completed (and digested) by the start of class at 9:00. After addressing questions, we will give a short (5 minute) quiz on the reading, and then present a 40 minute lecture highlighting important concepts.

On most days, 10:30-12:00 and 1:00-2:30 will be spent in lab doing programming projects. Most of the lab activities will be completed in lab, and you'll receive 2-4 check-off points per day as you complete these activities.

You should use the remainder of the day to do the reading and the recommended homework problems designed to prepare you for the next day's lab.

A few lab assignments will be done in teams and will be graded (as opposed to being checked-off). These will usually take 1 or 2 days of lab periods.

Class schedule

We will maintain an on-line version of the schedule of classes and labs, which also contains any due dates for the course. Please note that although we are giving my best approximation of the day-to-day topics, it is possible that we will need to revise the schedule during the semester.

Determination of course grade

Although each check-off lab and quiz will be graded leniently, you will not pass the course unless you successfully complete the vast majority of all assignments. Your course grade is computed by using the following formula: c/3 + q/3 + p/3, where To convert your percentage to your letter grade, use the following conversion table. To convert your graded project grade to a numerical grade, use the middle value in the range specified by the table. (So a B on your project counts as 85%, whereas a B- on your project counts as 81.5%.) Two exceptions: (i) an F counts as 55%; (ii) if you don't do an assignment, it counts as 0%.

93-100%A
90-93% A-
87-90% B+
83-87% B
80-83% B-
77-80% C+
73-77% C
70-73% C-
67-70% D+
60-67% D
0-60% F

However, we reserve the right to subjectively adjust your final grade. In particular, we intend to dock you additional points if you fail to complete a significant number of the check-off labs and/or in-class quizzes.

Please see either of us if you have any question about how you stand.

Tests

There will be no tests in this course with the exception of the in-class quizzes based on the reading. If you've read the reading with care, done the suggested review exercises, and gone over the other review exercises in the book, these problems should be straightforward.

Grade changes

Please point out any arithmetic or clerical error we make in grading, and we will gladly fix it. You may also request reconsideration if you feel we have been especially unjust. We recommend you speak with the person who graded your assignment:

Late assignments

All assignments should be completed on time. Once in a while, you might not be able to finish a lab during the lab periods. In this case, be sure to get checked off by 9am the following class day. No assignments will be accepted late without a valid excuse (illness, for instance).

Honor

Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to assignments should be individual original work unless otherwise specified. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding, as well as to be intolerably dishonorable.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.

The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be be properly cited.

One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the reports; this can be in the form of a "minority opinion" or "dissenting opinion" section where appropriate.

Style guidelines

All programming assignments, including lab assignments, should conform to the standards set forth in the text, with a few changes highlighted in our local copy of the style guide.

Accessibility

Please contact either of us immediately if you have special physical circumstances, e.g. impaired vision, which may affect the accessibility of any course components. We will do our best to facilitate necessary arrangements or resources.