FRAMES
NO FRAMES
Course Description
Teaching Fellow: Rui Shi
Meeting place: MCS B29
Meeting times: Tuesday & Thursday 9:30-11AM
Instructor's Office Hours: Tuesday 11-12 and Wednesday
4-6 at MCS 172
Teaching Fellow's Office Hours: Monday 3-5 and Friday
3-5 at MCS 174
Scope and Topics Covered
This course starts by quickly revisiting, and then building upon, advanced
programming concepts in Java taught at the end of CS 111. 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
Java. 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 Java;
- 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 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 in-class midterm exam: Tuesday, February 27, 2007
Second in-class midterm exam: Thursday, April 12, 2007
Final Exam: Tuesday, May 8, 2007
Teaching Staff
Instructor --
Hongwei Xi
Office Hours: TBA
Location:
MCS 172, e-mail: hwxi AT cs DOT bu DOT edu
Teaching Assistant --
Rui Shi
Office Hours: TBA
Location: MCS 174, e-mail:
shearer AT cs DOT bu DOT edu
Grader -- TBA
e-mail:
TBA 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 Java (Parts 1-4), 3rd edition.
Addison-Wesley, 1998, ISBN 0-201-36120-5.
-
R. Sedgewick,
Algorithms in Java (Part 5), 3rd edition.
Addison-Wesley, 2002, ISBN 0-201-36121-3.
Class Calendar
Maintained by Hongwei Xi
Created: 2006.12.28