Meeting place: GCB 209
Meeting times: Tuesday & Thursday 12:30-2PM
Instructor's Office Hours: TR:5-7PM @ MCS172
Teaching Fellow's Office Hours: M:12:30-2PM @ PSY223; R:3:30-5PM @ PSY223
I thank Prof. John Byers
for giving me the material he prepared when teaching CS112 previously. The
current course is largely based on an earlier version of his. In particular, the
homework assignments are mostly taken from him.
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
- 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.
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.
First in-class midterm exam: Thursday, March 4, 2010
Second in-class midterm exam: Thursday, April 15, 2010
Final Exam: Friday, May 7, 2010
Office Hours: TBA
MCS 172, e-mail: hwxi AT cs DOT bu DOT edu
Teaching Assistant --
Office Hours: TBA
Location: PSY 223, e-mail:
kvodski AT cs DOT bu DOT edu
Grader -- TBA
The course mailing list is named firstname.lastname@example.org and is managed by IT's
Please be sure that you are on the CS112 mailing-list. If you
have so far not received any messages posted to the mailing-list,
you need to contact the instructor ASAP.
Students are welcome to post messages and questions to the mailing
list. All messages to cascs112a1-l AT cs DOT bu DOT edu are archived (click
Algorithms in Java (Parts 1-4), 3rd edition.
Addison-Wesley, 1998, ISBN 0-201-36120-5.
Algorithms in Java (Part 5), 3rd edition.
Addison-Wesley, 2002, ISBN 0-201-36121-3.
Maintained by Hongwei Xi