Course Description

  • Credits: 3
  • Prerequisites: There are no formal prerequisites for this course.



  • The purpose of this course is to teach the fundamentals of structured programming and problem solving in the C/C++ programming language.




  • Programming and Problem Solving with C++ (3rd Edition), N. Dale, C. Weems, & M Headington, Jones and Bartlett, 2002.


Course Notes:


Rich Wheaton

523 McBryde Hall



Office Hours:

  • MW 3-5 pm
  • T 11-12 am

Teaching Assistants

Chris Catanzaro

Satish Tadepalli


Course Website:

This website will contain all the project specifications, homework assignments, a calendar of events, etc. You will want to check in regularly to keep up-to-date.


There will be a series of programming assignments aimed at further illustrating the programming and problem solving concepts that have been developed in the class. These assignments are to be completed by you, with help from no one except the course administrators, i.e. Instructors, TAs, etc. Copying code from other sources is strictly prohibited and is an Honor Code violation and will be treated as such. If help is needed please come and see one of the course administrators.


In addition to the programming assignments there will be other graded assignments that could be homework, quizzes, etc.


Additionally, there will be two tests throughout the course of the semester and a final exam, which is schedule at a common time for all 1044 students.


The breakdown for the points on the graded material is as follows:




Tentative Dates

Projects and Software Engineering



Tests (2)

10% each


Other Graded Material



Final Exam


7:45-9:45 am, Wednesday May 7


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 wish, however your programs will be compiled and testing using MS Visual C++ .NET, running on MS Windows NT/2000.


The MS Visual C++ .NET compiler is the only supported compiler for this course. That means that neither the TAs nor I 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. 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 System. See the Curator homepage ( for details, including the instructions you will need in order to submit assignments to the Curator. Be sure to read the Student Guide to Submitting in the course note pack 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 the Curator; 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 TAs will grade your (first) submission to the Curator that received the highest score, and e-mail you the results. Note that if you make an incomplete submission (e.g., omitting required documentation) and that receives a perfect score, then the TAs will evaluate that incomplete submission. There will be no exceptions to this policy. If you do not make a submission for a project, then you will receive a zero for software engineering for that project.



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.


Other Graded Assignments

These can be anything from an in class pop quiz to homework assignments which will be graded by the TAs. You should plan on several pop quizzes throughout the semester and several graded homework assignments along the way as well.


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).



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 re-cloned periodically, so don't try to leave a backup there! Keep a spare copy of all the relevant files for each project on a Zip disk or a CD-R in case your assignment is mislaid. (Floppy disks are notoriously unreliable.)


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 20% 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 two weeks after the score or the graded assignment is made available (not when you pick it up).



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% of the total points guarantees at least an A-, 80% of the total points guarantees 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 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 teaching assistants assigned to CS 1044, the instructor, or the free tutors provided by UPE. The discussion of your program source code must be limited to these people. Note that this specifically excludes discussions of your program source code with other students (even if they are not enrolled in CS 1044), or with tutors except for those named above.


Privately hired tutors are not an exception to this requirement, nor are athletic or other tutors provided by the University.


Copies of all submitted work are retained indefinitely by the Department. Submitted programs are subjected to automated analysis for detection of cheating.


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 Curator is in force for this class.