FRAMES
NO FRAMES
Course Description
Meeting place: CAS 226
Meeting times: MWF 10-11AM
Scope and Topics Covered
This course starts by quickly revisiting, and then building upon, advanced
programming concepts in C++ taught at the end of CS 111, especially dynamic
memory allocation, pointers, and recursion. Then, the main focus of the
course is on the design, analysis and implementation of fundamental data
structures used throughout computer science. These include linked lists,
stacks, queues, trees, hash tables, graphs, as well as specialized methods
for searching and sorting. All of our implementations will be in the the
object-oriented programming language C++. The emphasis in teaching this
course centers around the following:
- Developing elegant and efficient code from an abstract specification;
- Literate programming (writing programs that can be read by humans as
well as machines);
- Developing a toolbox of advanced data structures for use in your
future programming tasks, and an awareness of various design patterns that
recur frequently in advanced programming;
- Critical thinking about programs and the programming process, which
involves:
- Thinking about the best way to plan out the design using
object-oriented design and appropriate features of C++;
- Methodical and efficient development of the implementation using
step-wise refinement and incremental testing and debugging (using
appropriate debugging tools);
- Being able to convince yourself of the correctness of the
implementation by mathematical reasoning;
- Analyzing the running time (efficiency) of programs by inspection
and mathematical reasoning; and
- Evaluating the efficiency and correctness of programs empirically,
by using various tools in properly designed experiments.
Prerequisites
This course is designed for students who already program with a CS 111
level of proficiency in C++. If you have taken CS 111 in Java, or if you
have AP credit for a Java-based course, you are strongly encouraged to take
the alternate section of CS 112 taught in Java. If you do not have
significant previous exposure to programming, then you are requested to
transfer to CS 111. You are expected to be familiar with UNIX and EMACS
(or other equivalent text editor). Some help will be available in the
section, but if you have not used UNIX or EMACS before, then you should
attend the appropriate
tutorials provided by B.U. Office of Information Technology.
Exams
First Midterm Exam: Friday, February 24, 2006
Second Midterm Exam: Wednesday, April 12, 2006
Final Exam: Saturday, May 6, 2006
Teaching Staff
Instructor --
Hongwei Xi
Office Hours: M 1-2:30 and F 11-12:30
Location:
MCS 172, e-mail: hwxi AT cs DOT bu DOT edu
Teaching Assistant --
Dengping Zhu
Office Hours: W 4:30-6 and Th 2-3:30
Location: MCS 174, e-mail:
zhudp AT cs DOT bu DOT edu
Grader -- Matthew Cole
e-mail:
mattcole AT cs DOT bu DOT edu
Mailing List
The course mailing list is named cs112b1 and is managed by IT's
majordomo engine. All students registered for the course should add
themselves to the mailing list. To join the course mailing list, type
"csmail -a cs112b1" at the Unix prompt. To inspect who else is on
the mailing list, type "csmail -p cs112b1". To remove yourself from
the mailing list, type "csmail -r cs112b1".
Students are welcome to post messages and
questions to the mailing list. All messages to
cs112b1@cs.bu.edu are archived (click here).
Textbooks
Required:
-
R. Sedgewick,
Algorithms in C++ (Parts 1-4), 3rd edition.
Addison-Wesley, 1998, ISBN 0-201-35088-2.
-
R. Sedgewick,
Algorithms in C++ (Part 5), 3rd edition.
Addison-Wesley, 2002, ISBN 0-201-36118-3.
Class Calendar
Maintained by Hongwei Xi
Created: 2006.1.2 Last modified: 2006.1.29