- 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):
- 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.
- 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 two (increasingly less abstract) points
of view:
- Analyze the mathematical characteristics of the algorithm (e.g., analyzing the number of "basic operations" as a function of size of input)
- Analyze the empirical characteristics of the program by running experiments (e.g.,
actually counting the number of "basic operations");
- 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
- 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 no one is saying anything, I'll start calling on people! 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 weekly homework assignments, in the beginning we will have weekly programming assignments to get you up to speed; thereafter we will alternate programming and written homeworks. Please see the Topics
link on the web page for the ongoing schedule of assignments.
- You must submit electronic copies of your homeworks (both Java and written) using Websubmit (instructions to follow in first homework). 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 focus on Java techniques necessary for doing the homeworks.
- I will drop the lowest homework grade at the end of the term.
Tests
- There will be a midterm about halfway through
the term (duh). All exams will be closed book, closed notes.
- The final exam will be on May 7th from 9-11 am in the lecture room.
- Makeup exams will be given only under the most extreme circumstances, and
only by arrangement with me before the normal exam time.
- I may give weekly or bi-weekly "review" quizzes to see how you are absorbing the material. These will not be factored into your grade, and are intended to give you an idea of how well you are doing.
Grades (tenative)
- 20% Midterm Exam
- 30% Final Exam (cumulative)
- 50% Homeworks
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
- 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
Collaboration Policy
Collaboration policy for this class is as follows.
- You are strongly encouraged to
collaborate with one another in studying the textbook and lecture material.
- As long as it satisfies the following conditions, collaboration on the homework assignments is encouraged and will not reduce your grade:
- Before discussing each homework problem with anyone
else, you must give it an honest half-hour of serious thought.
- You may discuss ideas and approaches with other students in the class, but not share actual code.
In other words,
the code you write must be entirely your own, which you must write and debug
without looking at other people's code. Don't permit others to copy your code.
You must also acknowledge
clearly
in the appropriate portion of your solutions (e.g., in the comments of your
code) people with whom you discussed
ideas for that portion.
- You may get help from TFs and Java tutors in the lab for specific
problems with writing and
debugging your code. Don't expect them to do it for you,
however.
- If you get really stuck with a bug (defined roughly as over an
hour of frustration), you are allowed to get help from a
friend as long as you acknowledge that help clearly in your
solutions (e.g., in the comments of your code).
- You may not work with people outside this class (but come and talk to
us if you have a tutor), seek on-line solutions, get someone
else to do it for you, etc.
- You are not permitted to collaborate on exams.
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.