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.
Prerequisites
- CS 111 or equivalent. Familiarity with UNIX is also assumed.
-
Lectures
Tuesday, Thursday 11am-12:30pm in room MCS148
Sections
- Friday 2:00pm 3:00pm in ENA 304
- Friday 3:00pm 4:00pm in ENA 304
Instructor
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:
See http://www.cs.bu.edu/ugradprogram/tutoringhours.htm
Required Texts
Supplemental Texts (optional)
You will probably also need a C++ reference manual, such as:
- Deitel & Deitel, C++: How to Program (Prentice Hall); or
- Steve Oualline, Practical C++ Programming (O'Reilly); or
- any book on C++ you are comfortable with (such as your cs111 text). I
may also provide some additional handouts as we go along, which will be
posted on the course web page.
Other helpful links:
Tests:
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.
Policies
Lectures
- You are responsible for all the material covered in lecture and
in the readings. I will indicate what material is most important before tests,
however, it is important that you do all the readings and review your
class notes periodically.
- Class and lab attendance is very important. I will take attendance at random
intervals to check on your attendance and to learn your names. If your class
attendance has been a problem, I reserve the right to adjust your final grade
accordingly (i.e., downward).
- Class participation is also very important. Although the class is large,
I encourage questions, and will usually start class with a review of the last
class, and a request for questions on that material. Please don’t be afraid
to ask a question during the lecture: usually if you have a question then
this means that many people are likely to have a similar question, and it
is worth stopping me to get clarification. If we are running out of time,
I may defer your question for after class or email. I do welcome questions
by email, and will try but can not guarantee a timely answer on your schedule.
I answer class mail when I can, so if you don’t get a quick response from
me, please don’t be offended, just talk to me at the next class or contact
me by phone or stop by my office! Also, it is worthwhile to post general questions
to the course mailing list - often TF or other students get to answer it very
nicely before I get to my email.
Homework Assignments
- Homeworks are extremely important, as you can not learn these concepts (and
especially you can not learn the programming techniques) by simply reading
a description of them---you MUST get your hands dirty and learn by manipulating
the concepts.
- Please see the Schedule link on the web page
for the ongoing schedule of assignments. Homeworks will consist of programming
problems and (usually) some "pencil and paper" problems as well.
- You must submit hard copies of all assignments and simultaneously submit
electronic copies of your code using Gsubmit.
Exact details will be given with each assignment. Assignments are due at 10:30am
(usually on Tuesdays) in the CS Homework station. Late homeworks are not accepted
(except when prearranged with me well in advance, due to serious extenuating
circumstances). I am sorry to be harsh, but I often will discuss the solutions
to the problem sets on the day they are due - while the problems are still
fresh in your minds.
Miscellaneous
- There will be no incompletes in this class except for reasons of dire illness
near the end of a semester in which all previous work has been completed satisfactorily.
- You can not redo any assignment, nor do extra work after the semester is
over to improve your grade - this would not be fair to the other students.
- I have zero tolerance for any kind of academic misconduct (plagiarism, cheating
on exams), and be assured that I will instantly report violations of the Academic
Code to the Academic Conduct Committee. Please read the following section
carefully. Also note that I regularly make use of plagiarism-checking programs
for submitted code. Under
no circumstances should you be copying or using the work of others!
It is fine to discuss problems (in general terms) with others, but the
specifics of a solution and all of the writing should be done without any
collaboration. (See also Academic Conduct).
Grading
Approximately:
50% - written assignments
20% - midterm
30% - final
Homeworks may have different weights depending on their difficulty.
Re-grading Policy:
- 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.
- 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.