Course Description

This course will introduce you to advanced programming techniques and data structures in C++. Topics include program design and development, recursion, dynamic storage allocation, linked lists, stacks, queues, trees, graphs, tables, searching and sorting. All this will be embedded into the highly disciplined structure provided by the object-oriented programming language C++. We will become familiar with concepts needed to assess the efficiency of various programming constructs.

Computer Science is much more than just programming, and even programming is much more than just coding. Part of the course will be devoted to offer you a broader perspective onto this field: you will get glimpses into some problems studied in the more advanced courses of the CS curriculum.


CS 111 or equivalent. Familiarity with UNIX is also assumed.


Tuesday, Thursday 11am-12:30pm in room MCS148



Gene Itkis
email: itkis+cs112 @ cs . bu . edu
Office: mcs-284; 353-5285
Office Hours: Tuesday 12:30-2:30pm, Thursday 9:30-10:30am (or by appointment)
Office hours policy
I have the regular office hours as posted above. However, I keep an open door policy: if you need to talk to me and cannot make it during the office hours or need to see me sooner - do not hesitate to stop by my office whenever my door is open. If I am really busy, I may ask you to stop by at a different time - do not be offended or discouraged if this happens. But generally I will be able to talk to you, esp. if you have something relatively short. During the office hours, of course, you are guaranteed that I will be available.

Teaching Fellow

Liying Tang
email: litang @ cs . bu . edu
Office: PSY-230; 358-2358
Office Hours: Monday 2:00 - 3:30, Wed 2:00 -3:30 (in undergraduate lab)

General tutoring hours for the CS lab:



Required Texts

Supplemental Texts (optional)

You will probably also need a C++ reference manual, such as:

Other helpful links:


Midterm: Tuesday 10/28 (tentative)

Final: Monday 12/15

Performance self-monitoring:

The grade statistics for homeworks and tests will be published on the web.

The danger zone is one standard deviation below average or worse.

If you find yourself in this danger zone more than a couple times - you have a good chance to fail the class. If you are in the danger zone a few times, then (1) talk to the instructor (and/or TF) without delay; (2) make sure that your performance improves.



Homework Assignments




50% - written assignments
20% - midterm
30% - final

Homeworks may have different weights depending on their difficulty.

Re-grading Policy:

  1. If you submit the wrong file or a file with the wrong filename, this includes submission of an empty directory, submission of an executable, etc., then 50% will be taken off from your original grade. Note: In such cases you will be required to show a proof that your source file has a last modification date prior to the submission deadline. Note: attempts to cheat on this will be reported. See Academic Conduct.
  2. You can and are encouraged to talk to the TF about your homework and ask for help in understanding why you lost some points. If you ask to re-grade your homework and the grader finds no basis for your complaint, then 10% will be taken off your original grade. Note: This is not to discourage you from disputing your grade, but rather to encourage you to read and understand the comments of the grader before complaining. The penalty does not apply to your questions about your grade and mistakes -- only to the unsubstantiated re-grade requests. At the same time, remember that the graders are human and can make mistakes as simple as arithmetic errors in computing your scores, and will be happy to make corrections in such cases.