CSCI-20 Advanced Programming Methods with Data Structures in C++ Spring 2016

advertisement
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
Download