CSCI-20 Advanced Programming Methods with Data Structures in C++ Spring 2016 Lecture TR 6:30-7:45 PM, lab TR 7:50-9:05 in room in room 1812. Instructor: Keith Mehl Office: 2019 E-mail: kmehl@chabotcollege.edu Phone: (510) 723-7493 Web site: http://www.chabotcollege.edu/faculty/kmehl/ See my Web site for my schedule Course description: Design and implementation of larger programs in C++ using software engineering principles. Emphasis on definition and use of data structures. Includes specification of Abstract Data Types, recursion, dynamic memory allocation, stacks, linked lists, queues, binary trees, random access files, and use of hash codes. Designed to satisfy ACM guidelines for CS 2 as required for Computer Science and related transfer majors. Prerequisite: CSCI 15. This is NOT an introductory computer-programming course. I assume you have written several intermediate-length student programs in C++ (4- to 6-pages of code or more) and know how to create a multi-source-file project in an IDE like Code::Blocks, Quincy or Visual Studio. I assume you are comfortable with recursion and pointers, but will review these topics during the course. For this course, you will write several intermediate-length-to-long student programs, comprising as much as 10 or more pages of code. Topic list, in rough sequence: lists (linked lists, stacks, queues), introduction to graphs and trees (binary, n-ary, binary search, heaps), sorting, searching, hashing, direct file access, more on graphs and trees. A general introduction to algorithm analysis will be scattered throughout the course. Recommended Text: Data Abstraction & Problem Solving with C++, Carrano and Henry, Pearson, ISBN-13 978-0-13-292372-9. I will also take some material from Data Structures and Algorithm Analysis in C++, 3rd Ed. Mark Allen Weiss, ISBN 0-321-44146-X, and from some other sources. See my class Web site for links to some Web resources. If you want to use a different book, clear it with me in advance. When emailing me, PLEASE use PLAIN TEXT emails (no graphics, HTML or special fonts), use CS20 as the first characters on the subject line (exactly CS20, not CS 20, or CIS or CSCI), then your name and (briefly) why you're e-mailing me. ATTACH any files you want to discuss – DO NOT insert the code into the body of the email. The 'why' fields that get immediate attention are 'question' and 'absent'. I look at all other email as time permits. For questions, fully explain your question in the body of the e-mail. You may insert brief code extracts if your question pertains to a specific code problem. But attach all code needed to examine your problem. Grading policy: Programming assignments/homework/labs Pop quizzes (approximately weekly, adjusted as per CS14/15) 2 midterm exams (probably weeks 8 and 13) The final exam (must be taken as scheduled to pass the course) - 20% * - 10% - 20% each - 30% * Programming assignments are worth much more than labs. You must turn in all the programming problems, essentially working, to make a grade of C or above in this class. I do not grade programs turned in without test data and output. One test with my sample data is not enough. Grade ranges will be as follows: 90%-up - A, 80%-89.9% - B, 65%-79.9% - C, 55%-64.9% - D, less than 55% - F. If you find you cannot make class, or are often late, DROP. I may adjust these ranges depending on the overall performance of the class. THERE WILL BE NO MAKEUP EXAMS OR QUIZZES. If you cannot take an exam as scheduled, you MUST contact me BEFORE the exam. If you miss class regularly (I define this as missing two or more pop quizzes without contacting me, which, with class and lab, is six cumulative instructional hours), I may drop you from the course. You must take the final exam as scheduled to pass the course. Labs must be done in groups of (normally) two. All other work must be your own. DO YOUR OWN WORK. COPYING PROGRAMS WILL RESULT IN SEVERE CONSEQUENCES, POSSIBLY INCLUDING A GRADE OF F IN THE COURSE AND A REPORT OF ACADEMIC DISHONESTY TO THE COLLEGE. For use of the college only (this assessment is after-the-fact, and does not affect your grade) the college assesses course-level learning outcomes for students. For CSCI-20, these are as follows: 1: 2: 3: 4: 5: Write recursive methods Explain how recursion is implemented Define a stack ADT and implement a stack ADT as array (or vector) and as a linked list manipulate arrays using pointer notation design and code a complete program of 500 lines or more