CAS CS 112 B1 - Spring 2003 - Introduction to Computer Science II
Syllabus

Course Description

Official Description: Covers advanced programming techniques and data structures. Topics include recursion, dynamic storage allocation, pointers, linked lists, strings, stacks, queues, trees, graphs, tables, searching, and sorting.

Elaboration: This course teaches programming style and advanced methods, using the C++ programming language. We will learn software engineering techniques that allow us to design, implement and analyze algorithms in a clear and modular manner. We survey advanced data structures and the algorithms which support them. The course is intended for students that already had a one semester programming course, such as CS 111, preferably in C++, and it is assumed that you have such experience.

The main emphasis of the class is the study a number of important data structures and related algorithms, such as stacks, queues, linked lists, arrays, graphs and sorting and searching algorithms. You will also learn how to create and understand recursive algorithms, to organize programs using modular programming techniques (and maintain them using separate compilation), and to properly document a program.

The rough schedule is as follows, at approximately one topic per week:

  1. Stacks
  2. Lists and Queues
  3. Priority Queues
  4. Recursion
  5. Analysis of Algorithms
  6. Trees
  7. Searching
  8. Sorting
  9. Tables and Hash Functions
  10. Graphs

Prerequisites and Related Courses

CS 111 or equivalent. I will expect you to be reasonably comfortable with C++. For the most part, we will no longer be learning C++; rather, we will be using it as a tool to do interesting things. If there some part of C++ you do not know, your first step should be to look it up in your favorite C++ book.

Staff

Professor: Leo Reyzin, reyzin@cs.bu.edu, (617-35)3-3283, MCS (111 Cummington St) 287. Office hours: Tu 12:30-1:30, Th 1:30-3:30.
    I encourage you to come to my office hours. If you need to talk to me but can't make the office hours, please send me email. I check it a few times on a weekday and at least once on a weekend.
Teaching Fellow: Gali Diamant, gali@cs.bu.edu. Office hours: W 1-3, Th 12:30-1:30 at the undergraduate lab (730 Commonwealth Avenue).

Texts

Data Structures and Program Design in C++, by Ryba and Kruse, Prentice Hall. Also recommended: some C++ book, e.g., C++ How to Program by Deitel and Deitel. Both should be availabe at the BU bookstore.

Meetings and Other Communication

Lectures are Tuesday and Thursday 11-12:30 in CAS (725 Comm Ave) B36. Lecture attendance is required. Students are responsible for all material covered in lecture. Some lecture material may not appear in the text.

You should have also selected a lab when you registered (if not, add a lab to your schedule!). Labs are a required part of the course. You must be registered in and regularly attend your lab section. If you are unable to attend your lab section, you must send email to Gali before the lab. Labs are held in ENA 304, at 730 Comm Ave.

The class has a home page: http://www.cs.bu.edu/~reyzin/teaching/s03cs112b/. On occasion, I will send out email to the class list, so please log in to csa and type csmail -a cs112b1. "I didn't get your email" won't ordinarily be an acceptable excuse.

Assignments and Tests

There will be about 7 homeworks (mainly programming) (50%), a midterm (20%) and a final (30%). The midterm will be in class some time in March (to be announced). The final exam will be scheduled by the registrar.

Late Policy: Every semester I have to manage extension requests from students ("I have a cold," "I have a job interview," etc.). In order to save everyone's time, I will allow you to manage your own extensions. The extension policy is as follows. Each student is credited four late days. If a homework is submitted late, the appropriate number of late days is deducted (rounded up--a fractional day counts as a full day). If you run out of late days, your late homework will not be accepted, and you will receive a zero for it. Exceptions to this policy will be granted only in extremely serious circumstances (such as extended hospital stays) that I hope none of you will have. So use your late days wisely, and don't expect me to make exceptions if you used them all up without good reason. Plan for that unexpected cold or headache on the last assignment.

Important Dates

Last day to drop without a W grade: Friday, February 14, 2003.
Last day to drop with a W grade: Friday, March 7, 2003 (earlier than previous semesters).
Final Exam (tentative): Thursday, May 8 at 9:00 AM.

Academic Honesty

Plagiarism is any attempt to represent the work of another as one's own. See the BU CAS Academic Conduct Code for full details, but here are two examples that are especially relevant to this course:
  1. Copying or modifying all or part of a program or piece of code, including code obtained from other students, a textbook or the World Wide Web, without explicitly acknowledging the source.
  2. Discussing with a student, friend, relative, acquaintance or other party any details about the solution to a homework problem without explicitly acknowledging that party.

Violations of academic honesty result in an automatic failing grade and are reported to the Academic Conduct Committee (ACC). The ACC may elect to suspend or expel students deemed guilty of plagiarism or other forms of cheating. Claiming that you forgot or otherwise accidentally failed to acknowledge an outside source will not help you.

You may discuss homework problems with other students in this class provided that you state the real and login names of those students in the header at the top the submitted file. Note that you may exchange ideas with other students as to how a particular homework problem might be solved, but you may not share, copy or exchange actual code. The code that you submit must have been written and tested in its entirety by you alone.

You may not collaborate in any way with anyone not currently registered in this course. There is certainly nothing wrong with discussing general concepts with tutors or other outside parties, but you may not discuss specific details about a homework solution, nor may you use code that you originally obtained from some other source, even if you have modified it.

The fact that you appropriately collaborate with another student will have no impact on your grade, assuming that you explicitly acknowledge any collaborators. Unacknowledged collaboration of any kind will be reported to the ACC.

If you are uncertain as to whether or not a particular kind of interaction with someone else constitutes illegal collaboration or academic dishonesty, please ask me before taking any action that might violate the rules.