CS 1704 - Spring 2004

Syllabus


Course Information

Title: Introduction to Data Structures & Software Engineering
Index number
: 16168
Lecture Location
: Pamplin Hall 31
Lecture Time
: Monday, Wednesday, & Friday 10:10 AM - 11:00 AM

Description

This course introduces a disciplined approach to problem-solving and emphasizes the utility of software engineering principles applied to programming practices. Also stressed are program design and implementation involving multiple modules, verification of program correctness, and abstract data types and objects such as strings, arrays, sets, linked lists, stacks, queues, and files.  

Contact

Instructor: Solomon S. Gifford
E-mail: sgifford@vt.edu
Phone: (540) 213-5914
Office: McB 521
Office hours:     Monday & Wednesday 11:15am - 12:15pm or by appointment.  
                          Common appointment times are 9:30am and 12:15pm MWF.
AOL IM:  VTCS1704 
          E-mail is the preferred method of communication; only call in an emergency. 

Teaching Assistants

GTA:  Michael Narayan
Responsibilities:  Homeworks, Quizzes and Selected Project Grading
E-mail:  mnarayan@vt.edu
Phone: N/A
Office: N/A
Office hours:  MCB 124: Tuesday & Thursday 10:20am - 10:40am (NO PROJECT HELP!  He also helps CS2204 students at that time.)
                        MCB 118: Monday 1:30pm - 4:00pm (For project help only when a project is due that night.)
          AOL IM:  VTCS1704 
UTA:  Margaret Dickey (Meg) 
Responsibilities:  Project help
E-mail:  mdickey@vt.edu
Phone: N/A
Office: 116/ 118
Office hours: Sunday 4:00pm-8:00pm, Tuesday & Thursday 1:00pm-4:00pm (On weeks when a project is due, instead of holding the Tuesday hours, Meg will hold hours Monday night from 5:00pm - 8:00pm.)
AOL IM:
  VTCS1704 

Note:  As you can see, if either one of the TA's or I are holding office hours, I/he will be signed on to AOL AIM.  You can contact the TA or me to find out quick information, but do not expect a TA or I to debug your project remotely.  Please also note that I may be signed on from home, so do not make an assumption as to where the screen name is originating unless it is during the regularly schedule hours above AND the announcements page does not have a change.  Please also note that office hours are subject to change, so please refer to the website and not the hardcopy syllabus for the most current information.

Textbooks

You are required to have one of the following.  Please note that the "Complete C++ Training Course" editions include C++ How to Program textbook and the C++ Multimedia Cyber Classroom. The bookstores have the C++ How to Program (4th Edition).

    1. The Complete C++ Training Course, (4th Edition), Deitel & Deitel, Prentice-Hall, 2003.  ISBN 013100252X
    2. The Complete C++ Training Course (3rd Edition), Deitel & Deitel, Prentice-Hall, 2001.  ISBN: 0130895644 
    3. C++ How to Program (4th Edition), H. M. Deitel & P. J. Deitel, Prentice Hall, 2003. ISBN: 0130384747
    4. C++ How to Program (3rd Edition), H. M. Deitel & P. J. Deitel, Prentice Hall, c2001. ISBN:  

If you feel that you need supplements to the course notes and textbook, I recommend one of the following:

  1. Programming and Problem Solving with C++, 3rd Edition, Dale, Weem & Headington, Jones & Bartlett, 2002.
  2. The C++ Programming Language (3rd Edition), B. Stroustrup, Addison-Wesley, 1997.
  3.  The C++ Programming Language, Special Edition (3rd Edition), B. Stroustrup, Addison-Wesley, 2000.

The course notes will available on-line before the lecture.

Web page

http://courses.cs.vt.edu /~cs1704/spring2004/

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.

Grading

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. Instructor & TAs. Copying code from or to 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.

Check your grades online!

I will send e-mail to the class listserv and/or post an announcement on the Announcements page when grades are available for a given project, assignment, quiz, or exam. Grading will be based on the following.

Graded Item

Number of Points

Tentative Dates

Projects 

As assigned, (~400)

Varied

Software Engineering

As assigned (~100)

Varied

Exam 1

100

TBA

Exam 2

100

TBA

Quizzes/Homeworks

As assigned (~100)

Varied

Final Exam 200 May 10, 2004: 7:45am - 9:45am

Total Points:

Around 1000

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.  Do not expect a curve, though I reserve the right to apply one.

Statute of Limitations

Any questions or complaints regarding the grading of a project, assignment, quiz or exam must be raised within one week after the score is made available (not when you pick it up).  I reserve the right to deny legitimate grade changes due to grading errors if the score is not challenged within the week.

Late Policy

I will require a Dr's note and/or a Dean's excuse for any late or make-up work not approved by me via e-mail in advance of the deadline.  Generally speaking, I will not approve late or make-up work except in extra-ordinary circumstances.  The only exception to this policy is in regards to projects.  See the project/assignments webpage for details.   

Attendance

Attendance at all classes is necessary for students to succeed in this course.  However, I will not be taking the time to call role at each lecture.  Students are strongly encouraged to attend lecture however, as I will be administering quizzes frequently to check your progress.  No makeup quizzes will be given unless pre-approved by the instructor. If you miss lecture, it is your responsibility to obtain notes, handouts, and other information from your classmates. Do not be late to class! If you are tardy because of extenuating circumstances, you should sit in the empty seats near the door so as not to distract your classmates. Do not come to the classroom if you will be more than 10 minutes late.

Quizzes

Short quizzes will be given during lecture frequently. Quizzes may cover any material up to and including the day's lecture, including the reading required for the lecture.  While I reserve the right to give pop quizzes, most quizzes will be announced during the previous lecture.  However, some quizzes may simply be filling out an opscan form for attendance.  These probably will not be announced, and may be given when I notice that fewer students have attended that lecture.  Since some quizzes will be taken using opscan forms, so bring a #2 pencil to each lecture!  Quizzes most likely will not be equally weighted, nor the questions on each quiz.

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 (currently Windows Server 2003).

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++ .NET compiler is installed on a number of Windows PCs in various computer labs around campus. CS lab hours and other lab information are posted on the CS lab home page.  If you are using another compiler or Windows version, it may be advisable to test each of your programming projects in the lab prior to submission.  Any discrepancy in OS or compiler versions will be solved by running the program on one of the machines in 118 McBryde.

The programming projects may be subjected to runtime testing using the Curator System or they may be hand graded. See the Curator homepage (http://www.cs.vt.edu/curator) 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 linked from the Curator homepage – 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.

All of the programming projects will 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 or I will use your last submission as the submission to be graded. Note that if you make an incomplete submission (e.g., omitting required documentation) as your final submission, then the TAs or I 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.

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, including the software engineering portion of all projects.  See the General Programming Standards for additional requirements.

Exams

Two exams, dates TBA, will be administered.  A final exam will be given during its common time.  You must bring your VA Tech ID card to the tests and final exam! Because the tests and final exam include multiple choice and are scored via machine, also bring a number 2 pencil and a good eraser.

If a serious illness prevents you from taking any of the tests, send an e-mail 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!  

If you have three exams in twenty-four hours, you must request a rescheduling before April 16th.

See Departmental Policy on KOOFERS, OLD PROGRAMS, CHEATING, AND COMPUTER USE for required policies.

Additional Information

Classroom Etiquette

Talking to other students during class is disruptive to other students around you. Do not talk during class.

All classes will begin promptly; I expect you to be in your seat and ready to begin work. If you are forced to arrive late or leave early, please sit near the door so as not to disrupt others. Please do not begin rustling papers, books, coats, etc. before I dismiss class.

My class is NOT an opportunity for you to make up for missed sleep. Such behavior is insulting to the instructor, discourteous to students around you, and shows a lack of moral fortitude. If the lecture is worth that little to you, then at least have the courage to skip class and accept the consequences.  If I announce a quiz in the middle of class and you are asleep, your quiz will NOT be graded.

The Honor Code:

I have presented a large number of students to the honor court and in each case students were found guilty.  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 homework assignment in a general way, i.e., to discuss the nature of the assignment. In other words, you may discuss with your classmates the goal of an assignment but not how to achieve that goal. 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 the instructor. Please feel free to discuss the assignment and your program or solution specifically with the instructor. The discussion of your individual program or solution must be limited to the instructor.

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

The Honor Code will be strictly enforced in this course. All assignments will 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.

Every graded work in this course in any form carries an implied signature on the following pledge. 

//    On my honor:

//   

//    - I have not discussed the C++ language code in my program with

//      anyone other than my instructor or the teaching assistants

//      assigned to this course.

//   

//    - I have not used C++ language code obtained from another student,

//      or any other unauthorized source, either modified or unmodified. 

//   

//    - If any C++ language code or documentation used in my program

//      was obtained from another source, such as a text book or course

//      notes, that has been clearly noted with a proper citation in

//      the comments of my program.

//   

//    - I have not designed this program in such a way as to defeat or

//      interfere with the normal operation of the Curator System.

//

//    <Student's Name>

Asking Questions by E-mail or IM

When contacting the instructor, please include your name, and student ID number before stating your question.

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) until the end of the semester. 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.)

Keep all returned assignments (graded hard copy and e-mail responses from the automated grader) until the end of the semester.

Special Accommodations

If any student needs special accommodations because of a disability, religious preference, etc., please contact the instructor during the first week of class or at least one week before such accommodations are needed.