- 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):
- Provide you with a "cookbook" of the most important data structures
used in advanced programming;
- Introduce you to the study of algorithms, both as they relate to the data
structures being considered, and as a separate object of study;
- Take the first steps in developing your ability to analyze the efficiency
(running time) of algorithms, from three (increasingly less abstract) points
of view:
- Analyze the mathematical characteristics of the algorithm mathematically
(e.g., "Big Oh" notation);
- Analyze the symbolic characteristic of the program by simulation (e.g.,
counting the approximate number of steps);
- Analyze the practical characteristics of the program by using appropriate
timing and profiling tools to determine the "wall clock" or
CPU time used by various parts of the program.
- 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:
- Core Java, by Cay Horstman and Gary Cornell, Sun Microsystems Press
(2005), ISBN 0-13-148202-5.
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
- You are responsible for all the material covered in lecture and in the readings.
I will clarify what material is most important before tests, however, it is
important that you do all the readings and review your class notes periodically.
- Class attendence is very important. I will take attendence at random intervals
to check on your attendance and to learn your names. Records of class attendence
will be considered when assigning final grades, and may affect the calculation
of cuttoffs (e.g. if you are close to the next highest grade and your attendence
has been excellent, I will bump you up).
- Class participation is also very important. I encourage questions, and
will usually start class with a review of the last class, and a request for
questions on that material. Please don’t be afraid to ask a question during
the lecture, as often this means that many people may have a similar question,
and it is worth stopping me to get clarification. If I are running out of
time, I may defer your question for after class or email.
Homework
Assignments
- Homeworks are extremely important, as you can not learn these concepts (and
especially you can not learn the programming techniques) by simply reading
a description of them---you MUST get your hands dirty and learn by manipulating
the concepts.
- There will be about about six homework assignments, normally one every
week. Please see the Topics
link on the web page for the ongoing schedule of assignments. Homeworks will
consist of programming problems and (usually) some written problems from the
lectures as well.
- You must submit electronic copies of your code using Websubmit (instructions to follow). You will hand
in no paper in this course (except for exams). Exact details of the submission
method and the late policy will be given with the first assignment.
- Lab sections will probably be devoted to free time to work on the assignments with the TF and sometimes me in the room. Please keep the time free, as I may develop some lab exercises as the semester goes on.
Tests
- There will be a midterm about halfway through
the term. All exams will be closed book, closed notes.
- The final exam for both sections is scheduled for the last day of class.
Under no circumstances will the final exam be given early due to travel difficulties.
- Makeup exams will be given only under the most extreme circumstances, and
only by arrangement with me before the normal exam time.
Grades
- 20% Midterm Exam
- 30% Final Exam (cumulative)
- 50% Homeworks
These percentages are tentative and may be changed at my discretion at any
time.
Miscellaneous
- There will be no incompletes in this class except for reasons of dire
illness near the end of a semester in which all previous work has been
completed satisfactorily.
- You can not redo any assignment, or do extra work after the semester is
over to improve your grade, as this arrangement would then by fairness have to
be extended to the rest of the class (an impossible situation).
- I have zero tolerance for any kind of academic misconduct (plagiarism, cheating
on exams), and be assured that I will instantly report violations of the Academic
Code to the Academic Conduct Committee. I am a past member and chairman of
this committee. Please read the following section carefully. Also note that
we intend make use of sophisticated plagiarism-checking programs for submitted
code.
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:
- You collaborated with another student in solving the homework problems;
- You copied the solution from a book, web site, or the work of another
student; or
- You got significant help in solving the problem, but do not acknowledge
this in your solution.
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.