CS 1044 Intro to Programming in C++

5:00 6:15 MW (Index# 91206)

Fall 2000

Dave Tucker


McBryde 535 (231-3609)




Purpose: To provide an introduction to structured procedural programming using elementary features of the C++ language.



Prerequisites: None, although familiarity with basic computer operations equivalent to CS 1004 Computer Literacy will be very helpful. It is required that you have a valid University PID and know your password. If you do not have this information, go the Newman Library Media Center.



Text: For general reference on the C++ language, programming examples, etc: Programming in C++ by Dale, Weems and Headington. An inexpensive copy of the course notes is available through A-1 Copy Center (University Mall) these notes will not be available online in printable form.



Office Hours: My office hours will be 11:00 1:00 MW and 9:30 11:30 TTh, and by appointment. I am also easily reached by e-mail at the address given above.


The Graduate Teaching Assistants for this course are listed on the course Website. Their office hours will be announced and posted on the course Website as soon as possible.



Course Website: (http://courses.cs.vt.edu/~cs1044/) The course Website will include copies of the course syllabus (this document), pertinent department policy statements, office hours, test dates, homework assignments and programming project specifications as available, and timely announcements. You are advised to consult the Website on a regular basis.


The course Website also has links to other useful information, including brief tutorial introductions to the Visual C++ editor and debugger, example programs, koofers, the course notes (unprintable), and a link to the homepage for the New Automated Grader.



Assignments: Your grade will be based on homework assignments, two tests, a final exam, and six programming projects, weighted as follows:




Tentative Dates




Project Testing and

Software Engineering



Test 1



Test 2



Final Exam


Dec 13th 7:00 PM


Homework Assignments: The homework assignments will usually consist of multiple-choice questions that relate to the lectures, course notes, projects and reading. Since I will use the same format for the questions on the tests and final exam, doing and understanding the homework assignments will help you prepare for those tests.


Programming Projects: The programming projects must be implemented in ANSI C/C++, as described in the course notes. You may use any ANSI conformant compiler you like, however your programs will be compiled and tested using Visual C++ 6.0, running on Windows NT.


The Visual C++ 6.0 compiler is the only one supported for this course. That means that neither I nor the GTAs will answer questions about the use of any other compiler, including earlier versions of Visual C++. The Visual C++ compiler is installed on a number of Windows PCs in various computer labs around campus. A listing of those labs will be posted on the course website. If you are using another compiler it may be advisable to test each of your programming projects in the lab prior to submission.


All the programming projects will be subjected to runtime testing using the New Automated Grader. See the NAG homepage (http://ei.cs.vt.edu/~cs1044/Grader/Grader.html) for details and further information, including the software you will need in order to submit to NAG and instructions for using that software. Be sure to download and read the Student Guide to Submitting it contains the answers to most of the questions students have about the automated grading system. The Student Guide also contains information about how the Honor Code applies when using NAG; be sure to read and follow the guidelines given there.


A number of the 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. The GTAs will grade your submission to NAG that received the highest score, and e-mail you the results. If you do not make a submission for a project, then you will receive a zero for software engineering for that project.


Tests: Your score on the final exam will replace the lower of your two test scores, if it is an improvement. You must bring your Va Tech ID card to the tests and final exam! Because the tests and final exam are multiple choice and are scored via machine, also bring a number 2 pencil and a good eraser.



Grading Policies: This course is largely devoted to the development of skills in structured programming, as reflected in the relatively heavy weight given to the programming assignments. You will be expected to produce programs which are not only functionally correct, but also well-structured, well-documented and readable. The Computer Science Department Documentation Standards, described in Elements of Programming Style, will be enforced on any programming assignments that are human-graded (a copy is included with the course notes).


Backups: It is your responsibility to maintain an up-to-date backup copy of each programming project (that is in addition to the copy you submit). The hard drives of the lab machines are recloned periodically, so don't try to leave a backup there! Keep a spare copy of all the relevant files for each project on floppy disk in case your assignment is mislaid.


Late Work: Each programming project and homework assignment will have a due date and time and will include instructions for submission. Except in the very rare case that an extension is granted, late submissions will incur a penalty of 10% per day, and will not be given any credit if submitted after graded assignments or solutions have been released. Any request for an extension must be made at least 24 hours prior to the due date.


Plan your time carefully for the programming projects, especially if you will be using computers in the campus labs you may be competing with other students for scarce resources, so don't put things off until the last minute. Note well: delays resulting from machine availability, lab schedules, hardware failures or your failure to maintain a backup of your work do not merit an extension.


Statute of Limitations: Any questions or complaints regarding the grading of an assignment or test must be raised within one week after the score or the graded assignment is made available (not when you pick it up).


Absences: If a serious illness prevents you from taking any of the tests, send a friend with a note describing your condition or notify me before the day of the test. Also, to establish a valid excuse for an illness you must get a note from a physician or the University infirmary. Before missing a test for any reason, you must make every effort to discuss the problem with me before the day of the test. Excuses other than an illness must be reported to your Dean's office so that they can send me a written explanation of the absence. If you need to be away for an official University event, this must be cleared with me in advance. Without a valid excuse, no makeup tests or exam will be given!


Grade Scale: Final grades will be set according to the usual 10-point scale; i.e., 90% guarantees at least an A-, 80% at least a B-, etc.



Honor Code: 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):


     Working with another student to derive a common program or solution to a problem. There are no group projects in this course.

     Discussing the details required to solve a programming assignment. You may not share solutions.

     Copying source code (programs) in whole or in part from someone else.

     Copying files from another student's disk even though they might be unprotected.

     Editing (computer generated) output to achieve apparently correct results.

     Taking another person's printout from a lab printer, remote rprint printer, trash can, etc.


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.


Feel free to discuss the homework assignments and your program source code with the graduate teaching assistants, the instructor, or the free tutors provided by ACM or UPE. The discussion of your program source code must be limited to these people.


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


     Any work done in this class must be done on an individual basis.

     Credit will be given only for work done entirely on an individual basis.

     Do not make any assumptions as to who can provide help on a programming assignment.

     All submitted work is archived. All submitted programs will be subjected to automated cheat analysis.

     Evidence indicating the violation of the policy stated above will be turned in directly to the Honor Court.

     It is much easier to explain a poor grade to parents or a potential employer than to explain an Honor Court conviction.


In addition, the Honor Code statement included in the Student Guide to the New Automated Grader 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.