Boston University
College of Arts and Sciences
Computer Science Department
111 Cummington Street
Boston, MA 02215
Phone: (617)-353-8919 / Fax: 353-6457
Web: http://www.cs.bu.edu/

ß

CS 112 B1 -- Introduction to CS II (in Java) -- Spring 2012

 

Instructor and Lecture
Teaching Fellow and Lab Sections

Instructor: Wayne Snyder
      Email: snyder@cs.bu.edu
      Office: MCS 147
      Office Hours: TBA
      Cell Phone: 617-966-1065 (email vastly preferred)

    

Lecture Coordinates
     Time: TR 9:30 - 11
      Room: CAS B 18 A

Class Web Page: www.cs.bu.edu/fac/snyder/cs112/

Teaching Fellow: Ian Denhardt
      Email: isd@cs.bu.edu

     Office: CS "Terminal Room" (next to EMA 304)
      Office Hours: M 4:30 - 5:30, R 1-3

Lab Section Coordinates
    Times: M 10-11, 11-12
      Room: EMA 304 (above Radio Shack)
     

 

 

 

 

Prerequisites

CS 111 or programming proficiency in Java. A good working knowledge of some IDE (e.g., Dr. Java) is assumed. If you are not familiar with the BU computing environment, please talk to the TF after the first class.

Course Description

This course will introduce you to advanced programming techniques in Java. It has four goals (approximately in order of importance):

  1. Continue your study of the Java platform, and reinforce concepts (such as recursion and object-oriented design) introduced in CS 111. We will also continue to develop your ability to plan, write, and debug complex Java programs which satisfy a specification, and which can be understood easily (and maintained) by humans.
  2. Provide you with a "cookbook" of the most important data structures used in advanced programming;
  3. Introduce you to the study of algorithms, both as they relate to the data structures being considered, and as a separate object of study;
  4. Take the first steps in developing your ability to analyze the efficiency (running time) of algorithms, from two (increasingly less abstract) points of view:
  5. Introduce you to the "science" of computing -- how do computer scientists think about algorithms and data structures?

The overall goal is to provide you with a firm foundation for further study in computer science.

 

Course Materials and Handouts

We will be using Algorithms, by Sedwick and Wayne (no relation). Other reference material will be provided on the web site, and anything else may be found using Google (your best friend when programming in Java!).

Topics

Although our plans may shift as the semester goes on, we intend to follow the book fairly closely, omitting some part of each chapter, and probably at least one whole chapter (on string algorithms) as well. A detailed week-by-week roadmap, keyed to readings, handouts, and assignments, will be maintained on the course web page.

Policies

Lectures

Homework Assignments

Tests

Grades (tenative)

These percentages are tentative and may be changed at my discretion at any time. Class participation, coming to office hours and saying something intelligent, emails with interesting comments on the course material, etc. will be considered at the end of the term when I decide on the curve for the final grades. I am a sucker for students who show a genuine interest and enthusiasm for the course material, and this may bump you up to the next highest grade if you are close to the borderline! However,"genuine" is the important word here, and I have been teaching this class for two decades and I'm hard to fool.....

Miscellaneous

Policy on Academic Conduct

Collaboration Policy

Collaboration policy for this class is as follows. The last point is particularly important: if you don't make an honest effort on the homework but always get ideas from others, your exam score will reflect it.

Violations of Collaboration Policy

Violations of collaboration policy fall into two categories: ones that are acknowledged at the time they occur (for example, in clearly marked comments in your code) and ones that are unacknowledged. Acknowledged violations (e.g., using someone else's code for a method you didn't know how to write yourself, and stating clearly in your code that this is not your own work) will result in an appropriate reduction in the grade, but will not be considered cheating.

Unacknowledged violations of the collaboration policy--for example, not stating the names of your collaborators, or any other attempt to represent the work of another as your own--will result in an automatic failing grade and will be reported to the Academic Conduct Committee (ACC). The ACC often suspends or expels students deemed guilty of plagiarism or other forms of cheating. I have served on the ACC and have seen it happen. I will assume that you understand the CAS Academic Conduct Code (read it if you haven't).

If you are uncertain as to whether 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; if you can't reach me in time, then at the very least include a clear explanation of what happened in your homework write-up to avoid being treated as a cheater. Citing your sources is usually the easiest way out of trouble.