CSCI-1200 Computer Science II Sections 1-4,6
Fall 2001


Instructor: Prof. Chuck Stewart
107 Amos Eaton, (518) 276-6731, stewart@cs.rpi.edu
Office hours: after class and M 1-3pm, W 2-3:30pm
Webpage:www.cs.rpi.edu/~stewart/cs2
Lecture: T,F 10:00-11:20, Darrin 318
Teaching assistants:Chandrika Palagiri (palagc@rpi.edu), Kirsten Piotrowski (piotrk@rpi.edu)
Required book: Data Abstraction and Problem Solving With C++: Walls and Mirrors (3rd edition)
Carrano and Prichard
Addison-Wesley
Recommended book: C++ How to Program (3rd edition)
H.M. Deitel & P.J. Deitel
Prentice Hall, 2000

Lab Sections

Section 1: W 8:00-9:50am, Amos Eaton 215
Section 2: W 10:00-11:50am, Amos Eaton 215
Section 3: W 12:00-1:50pm, Amos Eaton 215
Section 4: T 6:00-7:50pm, Sage 3101 (Note the change)
Section 6: R 8:00-9:50am, Amos Eaton 215
Students who do not have a laptop should be in Section 4.

Course content

This course covers programming concepts, classes and object-oriented programming, recursion, and an introduction to data structures and algorithm design. Programming will be in C++. Carrano and Prichard will be the main text. Deitel and Deitel is a recommended text to help with the details of C++; if you prefer a different, comprehensive book on C++ you are welcome to use it instead.

Prerequisites

Computer Science I or the equivalent. Students should have mastered the following topics: variables, expressions, assignments, one and two-dimensional arrays, nested loops, function calls, parameter passing, scope of variables. Students are expected to know the basics of the C++ programming language or to learn them extremely quickly.

Preliminary Schedule

The preliminary schedule below should only be seen as a guideline, as it may be revised during the semester. Readings from the text books will be assigned in the course lecture notes.
Week Tuesday Lab Friday
1: Aug 28-31 Syllabus, review C++ Visual Studio; compilation Functions
2: Sep 4-7 Pre-test / C++ classes argc/argv and file i/o Member functions
3: Sep 11-14 Operators and friends Classes Dynamic memory
4: Sep 18-21 Pointers Pointers Pointer arithmetic
5: Sep 25-28 Dynamic memory and classes Copy constructors Linked lists 1
6: Oct 2-5 Test 1 Linked lists Linked lists 2
7: Oct 9-12 No class No lab Recursion 1
8: Oct 16-19 Recursion 2 Recursion Stacks
9: Oct 23-26 Queues Stack implementation Inheritance
10: Oct 30 - Nov 2 Templates Templates STL
11: Nov 6 - 9 Test 2 STL-1 STL
12: Nov 13-16 Alg analysis STL-2 Alg analysis
13: Nov 20-23 Trees No lab No class
14: Nov 27-30 Trees Trees Searching / sorting
15: Dec 4-7 Hashing Hashing Review

Requirements and Grading

Semester requirements will be a combination of labs, homeworks (including programming projects), and exams. The weights of these in determining the semester average are as follows:
Labs: 13%
Homeworks: 35%
Exams: 52%

Letter grades will be computed from the semester average. Maximum lower bound cutoffs for A, B, C and D grades are 90%, 80%, 70%, and 60%, respectively. These bounds may be moved lower, at the instructor's discretion.

Labs will be graded on a scale of 1-4, depending on the amount and quality of work completed. Labs will be designed so that students who work diligently can earn all 4 points. Students must attend their assigned lab sections unless prior permission has been given.

Homework, mostly in the form of programming projects, will generally be due weekly. Some projects, especially later in the semester, will require more than one week to finish.

There will be a pre-test given during the 3rd class. It will be worth 2% of the semester grade, so it will mostly be used as a checkpoint to ensure that students are adequately prepared to continue with the course.

There will be two regular in-class exams during the semester, and a final exam. The weighting of the exams will be 10%, 20% and 20%, with the 10% assigned to the test with the lowest score, even if it is the final. Exam questions will be closely related to homework and programming problems. Students must have a passing exam average in order to pass this course.

Late Policy

Hand-written assignments will be due at the start of lab. Programming assignments will be submitted electronically. Each student will be given three days (whole or partial) of grace for late assignments. These grace days should be used carefully. Once they have been exhausted, late assignments will not be accepted without a written excuse from the Dean of Students' office.

As an example, if student BG submits his/her 1st assigment 26 hours late, BG will have used two late days and have only one day left. If BG then submits another assignment 5 hours late, BG will have used his/her last late day. If BG then submits a 3rd assignment 1 minute late, it will not be accepted. STUDENTS SHOULD USE THEIR LATE DAYS WISELY, IF AT ALL.

Academic Integrity

Academic integrity is a problem on programming assignments. Students naturally want to work together, and it is clear they learn a great deal by doing so. Getting help is often the best way to interpret error messages and find bugs, even for experienced programmers. In response to this, the following rules will be in force. Students are allowed to work together in designing algorithms, in interpreting error messages, in finding bugs, but NOT in writing code. Students may not share code, copy code, or discuss code in detail (line-by-line or loop-by-loop) while it is being written. Such code is easy to spot manually and is easily detected using a variety of software tools. Students caught illegally collaborating in writing code will receive a 0 on the assignment plus a 5 percentage point penalty on their semester grade. Students caught a second time will receive an F in the course and will be reported to the Dean of Students office.

Copying, communicating or using disallowed materials during an exam is cheating, of course. Students caught cheating on an exam will receive a 0 on the exam, plus one letter grade reduction in their final course grade. They will be reported to the Dean of Students office.

Students are allowed to assist each other in labs, but must write their own lab solutions.

Refer to the Rensselaer Handbook for further discussion of academic dishonesty.