Official Course Description. (Somewhat outdated.) This course will further develop and expand upon the topics introduced in CS 141. Advanced programming techniques will be covered, with extensive use of recursion and dynamic data structures. Abstract data types, including lists, queues, trees and graphs, will be studied. Specific emphasis will be given to tree traversals and binary search trees. Algorithms for searching and sorting will be explored along with methods of comparative analysis. The topics in this course provide an essential foundation for the further study of computer science.
More Accurate Description. This course further develops and expands upon the topics introduced in CS 141. It covers principles and techniques fundamental to the design and development of larger computer programs. This includes: data abstraction and object-oriented design; elementary data structures such as vectors, linked lists, stacks and queues; algorithms for searching and sorting; analytical methods for evaluating the efficiency of algorithms; and the algorithm design technique of recursion. An object-oriented language such as C++ and its associated Standard Template Library will be used to illustrate the concepts and techniques. The topics in this course provide an essential foundation for the further study of computer science.
Prerequisites. CS141 or equivalent.
Location and Times. Lectures: Snell 175, TuTh 1:00-2:15. Lab: Science Center 334 (ITL), M 10:00-10:50.
Instructor. Alexis Maciel. Science Center 379, 268-2385, firstname.lastname@example.org.
Office Hours. M 2:00-3:00, Tu 2:30-3:30, W 10:00-11:00 (in SC 334), W 2:00-3:00, Th 2:30-3:30.
Required Text. None.
Topics to be covered. Data abstraction, classes, object-oriented design, exceptions, linked lists, vectors, stacks, queues, iterators, templates, the STL, analysis of algorithms, recursion, binary search, quicksort, mergesort, sound programming principles. If time permits, inheritance, polymorphism, trees and binary search trees.
Grading. Your evaluation will be based on several homework assignments (A), which will be mostly programming assignments, two tests (T), two test corrections (C), one for each test, a final exam (F), and your lab attendance (L). Your course grade will be computed using the following formula:
The final exam will not be cumulative. At the final exam, you will have the option of writing make-up exams for Tests 1 and 2. Tentative dates for the tests are Thursday, October 11 and Thursday, November 8. These will be evening exams. All students are required to write the final exam (no exemptions).
The lab grade (L) will be based on your attendance of the labs, your performance on the assignments, and whether you hand in your assignments early. Details will be given in the Assignment Policy.
Policy for missed work. There will be no make-up assignments. Late assignments may be accepted if a good excuse is provided and if arrangements are made at a reasonable time, in advance, if possible. Make-up tests can be arranged under the same conditions. Other special arrangements can be made for students forced to miss more than a few days of class.
Laptops and other electronic devices. These are permitted in class only for the purpose of taking notes. Nothing else. Please turn off your phone ringers while in class or at the lab.