Course Syllabus

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 3:45-5:00 MW 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. All of the 1044 GTA’s are being “shared”.  We will have the same assignments so any 1044 GTA can answer your questions.



Course Website:  The course Website will include copies of the course contract (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, especially if you are foolish enough to skip class regularly.


                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




Programs (6)







Test 1



Test 2



Final Exam


4:25–6:25 pm, Friday, May 7


Homework Assignments:  The homework assignments will consist of unannounced quizzes or multiple-choice questions that relate to the lectures, course notes, projects and reading. 


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 Curator.  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 Curator; be sure to read and follow the guidelines given there.  Moss will also be used to detect “similar programs”.  We have a 99% conviction rate at the Honor Court using Moss.


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 Curator 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:  There is no late policy.  I will give you sufficient time to do each programming assignment.  It you turn it in late, it receives a 0.  .  Any request for an extension (given only in extreme circumstances)  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.