Computer Science II
                    CISP 1020-P70 - Spring 2014

 Lecture & Lab: TR 6:15 PM-9:15 PM; MC254
 Instructor: Robert Lowe <[email protected]> or <[email protected]>
 Office Hour: R 5:00-6:00 MC254

 Class Gopher Page:   gopher://sdf.org/1/users/pngwen/courses/cs2

 Course Description
 ==================
 Advanced problem solving and algorithm development, structured
 programming, data structures, and applications, I/O techniques,
 lists, queues, trees, algorithms, and files.  Program development
 using Unix operating system.  This course is intended for University
 Parallel students.


 Entry Level Standards
 =====================
 The student is expected to be proficient in programming components
 taught in CISP 1010.  These include functions, arrays, string
 handling, argument passing, indirect addressing and elementary file
 I/O.  the student is also expected to have a working knowledge of
 the Unix operating system, a Unix-based editor such as vi or Emacs
 and program development in the UNIX environment.  The student must
 have math, writing, verbal and English language skills at the
 college level.

 Prerequisite
 ============
 CISP 1010 or department approval


 Textbooks (Recommended)
 =======================
 Goodrich, Michael, Robert Tamassia & David Mount, "Data Structures
   and Algorithms in C++, 2nd Edition" Wiley, 2011,
   ISBN 13:978-0-470-383277-8

 Savitch, Walter, "Problem Solving with C++.  8th Edition", 2012,
   Addison Wesley.  ISBN: 978-0-13-216273-9


 Other Recommended Reference
 ===========================
 Stroustrup, Bjarne, "The C++ Programming Language.  3rd Edition",
   1997, Addison-Wesley  ISBN: 978-0-201-88954-3


 Topics
 ======
 1. Introduction, Review of C++: Arrays, Strings, Pointers,
    Functions, Arguments, and Scope of Variables, Program Structure,
    I/O
 2. I/O, Pointer Arithmetic, Indirection, Double Indirection,
    Prototypes, Program Structure, Make Files
 3. Command Line Arguments, Classes
 4. Elementary File I/O, Strings
 5. Structures, Typedef, Dynamic Memory Allocation
 6. Lists, Stacks, Queues, Static and Dynamic Lists
 7. Doubly Linked Lists, Custom Classes
 8. Overview of Algorithm Complexity, Mid-term Exam
 9. Binary trees, Tree Traversals, Insertions and Deletions
 10. AVL Trees
 11. AVL Trees, Splay Trees
 12. Hashing, Binary Heaps, Priority Queues
 13. Sorting, Pointers to Functions
 14. Enumerated Data Types, Unions, Bitwise Operators


 Grading
 =======
 There will be 9 programming assignments, each are weighted evenly.
 Each assignment has two parts, a guided part and a challenge part.
 The guided part will count less than the challenge part.

 In addition to the main programming problems, there will be
 additional small programming assignments which will be given as
 homework.

 There are two exams, each worth 100 points.  The final exam is not
 cumulative.

 Assignments in each category will be averaged, and the final course
 average will be the weighted sum of these averages.  The
 distribution of points is as follows:


 Point Distribution                Grading Scale
 ----------------------            ------------
 Exams              50%            93-100    A
 Guided Labs        10%            88-92     B+
 Challenge Labs     30%            83-87     B
 Homework           10%            78-82     C+
                                   73-77     C
                                   65-72     D
                                   Below 65  F


 Policies
 ========
 1. Students are expected to do their own work. It is your
    responsibility to request help from me prior to the assignment's
    due date. Copying another student's work will not be tolerated
    and may result in a grade of F for all parties involved.

 2. I will take attendance each day. You are expected to attend all
    scheduled meetings.  You must be present for at least 75 percent
    of meetings in order to receive credit for the course. It is your
    responsibility to obtain information you may have missed.

 3. Maintaining continuous attendance in your classes is very
    important. If you are considering dropping or withdrawing from a
    course, please check with the Financial Aid Office before doing
    so. Dropping or withdrawing fr om a class can adversely affect
    your financial aid and/or lottery eligibility.

 4. All exams are required. In the event of an emergency, notify me
    in advance if at all possible. Failure to do so may result in a
    grade of zero.

 5. Extra time will not be granted to individuals on lab assignments.

 6. Calculators may not be used during exams unless I authorize them
    in advance.

 7. Cell phone ringers must be turned off during class.

 8. Surfing the Internet, reading email, texting, working on
    assignments and other such activities are not permitted during
    lecture.

 9. The college has defined an extended closure as lasting more than
    one week. In the event of an extended closure, the class will
    continue using the class web page and the college's online system
    as the primary method for distribution of assignments and
    material. The email system will be the primary method of
    communication