CS 112 - Fall 2004 - Computer Science II
Syllabus

Professor:
Steve Homer
Office: MCS 281, Phone: (617) 353-8927
E-mail: homer@cs.bu.edu

Office hours: Monday 11-12, Tuesday and Thursday 12:30-1:30, and by appointment

Teaching Fellow:
Quan Yuan
Office: MCS 263, Phone: 358-1163
E-mail: yq@cs.bu.edu

Office hours:Tuesday 4-6pm, Thursday 3-4pm in MCS 263


Texts

"Data Structures and Program Design in C++," by Ryba and Kruse, Prentice Hall

Recommended: Some decent text on C++, Deitel, if nothing else.

Course Summary

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 (see the list below). 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.

Lectures

Lectures are held Tuesday and Thursday from 11 until 12:30 in CAS 313. Lecture attendance is required.

Students are responsible for all material covered in lecture. Some lecture material may not appear in the text. Lectures will be given by the instructor.

Labs

Labs are a required part of the course. You must be registered in and regularly attend your lab section. You are also free to attend other lab sections, if you would like to and if the classroom is not overcrowded. There will be occasional unannounced short quizzes in discussion to enforce attendance. If you are unable to attend your lab section, you must send email to Quan before the lab. Labs are taught by the TF. Labs are held in ENA 304, at 730 Comm Ave. Lab section schedule:

A2 in ENA 304, Thurs 2:00-3:00 PM

A3 in ENA 304, Fri 2:00-3:00 PM

A4 in ENA 304, Thu 6:00-7:00 PM

Schedule

The material we will cover during the semester will include :

1.Programming principles

2.Linear Data Structures (Lists, Stacks, Queues, Priority queues)

3.Testing programs

4.Recursion

5.Analysis of Algorithms

6.Trees

7.Searching

8.Sorting

9.Tables and Hash Functions

10.Advanced C++ concepts (templates, overloading, inheritance...)

11.Graphs

Roughly speaking, each topic will take up a week of our class time.

Finally we will attempt to put all this in the context of Computer Science as a scientific discipline. In particular, some of the currently active topics in the field will be discussed as they relate to various aspects of programming.

Grading

There will be about 6 programs, 2 or 3 very short quizzes given in section and a midterm and a final.

The course grade will be based on homework - 40%, quizzes - 10%, midterm - 20% and final - 30%.

Points will be taken off for late homework. Incompletes will not be given.

IMPORTANT DATES

The midterm will be some time around October 22.

Final Exam - Thursday, December 16 at 9:00 in the usual classroom.

Exams

Exams will be based on material covered in class and discussion as well as important concepts in the reading assignments that may not have been mentioned in class. The quizzes will be given in the lab sections. The midterm will be given in class. The final will be given during the final exam period. No makeup exams will be given for either test.

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 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, then I will be glad to discuss the matter with you. ------------------------------------------------------------------

Assignment #0:

1. Get a computer account by running new on csa.

2. After you log on for the first time, type help ethics and read through the BU Computing Ethics policy.

3. While logged in on csa, add your name to the course mailing list by typing "csmail -a cs112a1".

4. Run netscape and open the document

http//www.cs.bu.edu/faculty/homer/112/Home.html

5. Take a look at the various pointers on the class home page. In particular you will need to know about Unix, Emacs, how to compile, submit, and run a C++ program and how to use email.

Note: Important course information will be communicated via e-mail and the course WWW Home page. You are responsible for all information distributed by these means.