CS2606:  Data Structures and OO Development

Summer II 2006

Class Location Pamplin 3001
Class Time M-F 9:30-10:45
Final Time Sat., Aug 12, 10:30

Course Description & Objectives: Introduction to the principles of software engineering and the design and implementation strategies appropriate for large software projects. Includes the specification of project requirements, verification and validation techniques and software maintenance.  The focus of this class is theoretical software engineering and its application to large project development. Projects for this course are intended to introduce students to the complete software process from system conception through implementation.  The objectives include to provide information technology students with the skills to specify, design and implement large software systems.

Instructor:

Name: Dr. K. Todd Stevens
Email: todds1
@cs.vt.edu
Office:  619 McBryde Hall
Office Hours:  M-Th 10:45-11:45;   and by appointment
Office Phone: 231-1960

GTA:

Name:  Ramya Ravichandar

Email:  ramyar@vt.edu

Office:  ?

Office Hours:  ?

I prefer to talk to students in person, so talking to me during my office hours, after class, or making an appointment is best. I will answer questions over the phone whenever I'm in the office (although this usually does not work well), but in-person students get priority over email or phone calls.

Course URL: http://courses.cs.vt.edu/~cs2606/SummerII_2006/

Texts & Materials:   A Practical Introduction to Data Structures and Algorithm Analysis {Second Edition)
                                       
by Clifford A. Shaffer

Pre-requisites:  Grade of C or better in CS2605.

Honor Code:    The Honor Code, and in particular, the document "DEPARTMENTAL POLICY ON KOOFERS, OLD PROGRAMS, CHEATING, AND COMPUTER USE," (posted at the course website under Departmental Policy on Koofers, Old Programs, Cheating, and Computer Use ) applies to this course and will be strictly enforced. Homework and exams must be done strictly on an individual basis. Design and coding of programming assignments must be done strictly on an individual basis. 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 the graduate teaching assistants, the instructor, or the free tutors provided by ACM or UPE. Any discussion of your program source code must be limited to these people.  Always give credit for work that is not entirely your own (e.g., parts of programs or homework answers borrowed from a book).

Assignments & Grading:  All assignments will be turned in at the assigned time  All work must be computer generated;  in particular, Homework assignments will not be accepted in handwriting.  I repeat, all out-of-class assignments must be done individually, without help from any other students.

This is in large part a programming course, and programming projects count for 45% of your grade. You are expected to produce programs which are both readable and correct.  The CS Departmental Documentation Standards entitled "Elements of Programming Style" (available from the course website under Elements of Programming Style ) will be enforced. One purpose of a data structures course is to teach efficient algorithms and use of appropriate data structures. Another purpose of this course is to exercise your design abilities.  Further it is not sufficient that a program generate the correct answer and be written with good documentation style. Projects will also be graded in part on design and organization quality, and in part on efficiency. You should certainly pay attention when the instructors discuss issues related to "good" and "poor" design choices for the projects. These issues directly affect your grade.

Late Policy:  Late work is not accepted.  Personal catastrophes (e.g. serious health issues, family, etc.) should be discussed with the instructor before the assignment is due, to determine when and how the work will be completed and turned in .   

Grading:   

Homework 15% Out of class homework
2  Exams 30% In-class exams 
Quizzes 5% In-class, at least 1 lowest grade dropped
Smaller Programs 10% Smaller program to implement specific algorithms, short deadlines
3 Projects 40% Large Project

Course Projects: These are large programming assignment for which you must produce a good design and implementation.  You should turn in these projects on a CD.  You need to include all of your source files and a README.txt file on how to compile and run your program.  These projects must be demoed to the GTA;  signup times will be provided shortly before each project is due.

Smaller Programs: As stated above, these will be smaller programming assignments to implement specific algorithms, such as Skip Lists, and will have much shorter deadlines.  These will be turned in via email.  You need to include your source code as attachment(s) along with a README.txt file on how to compile and run your program.  A makefile is preferred.  I strongly recommend that you email the assignment to yourself, copy the files to a directory (like the GTA will), and compile your program according to your own instructions.  This will make sure you are sending all of the files, and it should compile.  Make sure your program works under the environment described below.

Equipment and Programming Language:  All programming for this course will be done in C++. The GTAs will will compile and test programs using Gnu G++ under the Cygwin release on the CS Undergraduate lab machines.  It is the responsibility of the student to submit a program that will successfully compile and execute on the specifed platform. Computing facilities are available for use in the Departmental Computing Lab.  Test data les will be provided via the CS2606 website.

Attendance & Quizzes: Attendance is not required, but for most students it is virtually impossible to pass without regularly attending class.  Quizzes will typically not be announced and may not be made up by students absent or late to class.

Special Assistance: Any student who needs special accommodations because of a disability should contact the instructor the first week of classes to make arrangements.  Please do not wait to see if you will need special accommodations for this class;  let me know ASAP so that it does not become a major problem.  It is the responsibility of any student with a disability who requests a reasonable accommodation to contact the Services for Students with Disabilities (SSD) Office,150 Henderson Hall, 231-3788, www.ssd.vt.edu/.