homer@cs.bu.edu
Office hours: Monday 11-12, Tuesday and Thursday 12:30-1:30, and by appointment
yq@cs.bu.edu
Office hours:Tuesday 4-6pm, Thursday 3-4pm in MCS 263
Recommended: Some decent text on C++, Deitel, if nothing else.
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.
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.
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
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.
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.
Final Exam - Thursday, December 16 at 9:00 in the usual classroom.
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.