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 A1 -- Introduction to CS II (in Java) -- Summer I, 2008

 

Instructor and Lecture
Teaching Fellow and Lab Sections

Lecture Coordinates
     Time: M - R 2 - 4
      Room: PRB 149

Instructor: Wayne Snyder
      Email: snyder@cs.bu.edu
      Office: MCS 280 (also CAS 102)
      Office Hours: M: 10 - 12 in MCS 280
      Phone: 358-2739 (email vastly preferred)

    

Teaching Fellow: Ilir Capuni
      Email: ilir@cs.bu.edu

     Office: PSY
      Office phone:

      Office Hours: TBA

Lab Time:: in ENA 304 -- next to CS Lab over Radio Shack):
     

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

Class Mailing List: cs112@cs.bu.edu

Please put yourself on the mailing list immediately by typing "csmail -a cs112" at the Unix prompt.

Prerequisites

CS 111 or programming proficiency in Java. A good working knowledge of Unix and common Internet tools (web browsers, ftp, ssh) is also assumed. Some help will be available in lab the first week, but if this is not sufficient, then you should attend the appropriate tutorials provided by the BU Office of Information Technology (see www.bu.edu/cc/tutorials/). IT also sells a small book "Unix in a Nutshell" which is quite useful. Additional links to useful information will be provided on the class web page.

Course Description

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

  1. Provide you with a "cookbook" of the most important data structures used in advanced programming;
  2. Introduce you to the study of algorithms, both as they relate to the data structures being considered, and as a separate object of study;
  3. Take the first steps in developing your ability to analyze the efficiency (running time) of algorithms, from three (increasingly less abstract) points of view:
  4. Continue your study of the Java platform, and reinforce concepts (such as inheritance and packages) 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.

The overall goal will be to make you think scientifically about programming in Java, and to introduce you to the basic paradigms of computer science. To that end, we will also introduce a number of "enrichment lectures," some taught by myself, and some by other CS professors, on important topics in Java and in the science of computing.

 

Course Materials and Handouts

No textbook will be used for the course. I will be using web resources and giving you handouts posted on the web page. The main algorithms covered are to be found in:

You could consider buying a good reference book on Java, such as:

although the Sun web site contains excellent tutorial and reference material on Java (see the course web page under Java and NetBeans resources for a link). Really, for Java, Google will usually answer any question you have.

Topics

Although our plans may shift as the semester goes on, we intend to follow the book fairly closely, omitting a few chapters with advanced material. 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

These percentages are tentative and may be changed at my discretion at any time.

Miscellaneous

Policy on Academic Conduct

Whenever you submit a piece of academic work and sign your name to it, you are verifying that this work is the result of your own intellectual efforts; it is Plagiarism to submit work solely under your own name in which:

In general, you must always provide proper attribution of authorship by naming all persons, books, or resources that provided intellectual content towards the final result. In some cases, you will need to describe the extend of the contribution, particularly when literally copying the words or artistic artifacts of another. To fail to provide proper attribution is plagiarism. Plagiarism demeans the seriousness of what we do in class, and does not allow you as a student to obtain a fair grade for the results you worked hard for.

In this course, unless explicited directed to do otherwise, you will do all of your work alone; in some cases, you may be explicitly directed to work as part of a team. In any case, you must specify precisely the authorship of the content of your submission.

I will discuss the issue of plagiarism with the grader, and use as a matter of routine automated tools to check submitted programs and files for copying. I don't like to be involved in this, but it is necessary in order to provide a fair environment for your work. In cases of suspected plagiarism, I will discuss the matter with the student(s) involved and, when warrented, submit the case to the Academic Conduct Committee. Please take this issue seriously and talk to us if you have any concerns or questions.