|
4 Credits 4 NS,
Quantitative Proficiency
- Lecture (everyone attends), Section
-01: M-W-F 9:00AM - 9:55 AM, King 106
- Lab, Section -02: Monday 1:30PM - 4:30
PM, King 201
- Lab, Section -03: Tuesday 1:30PM - 4:30
PM, King 201
- Lab, Section -04: Tuesday 1:30PM - 4:30
PM, King 135
Instructors:
Stephen
Wong King 223A, x8386 Office Hours: (See the instructor's home page.)
John Donaldson
King 223B,
x8095 Office Hours: (See intructor's home
page
)
Course Description:
Computer Science comprises a wide range
of subfields dealing with computers and computation, united by
common themes of design and abstraction. This course is the
first of a two-course sequence in which you will become familiar
with those concepts and skills that apply universally throughout
computer science. You will also develop skills in programming,
including principles of algorithm and data structure design and
analysis.
In this course we will focus on the object-oriented
("OO") paradigm of programming using the Java programming
language. This course differs from many introductory programming
courses in that it will not take the traditional path
of using procedural code (such as used in
C or Pascal) as a basis for OO programming. Instead,
we will start directly with OO principles and use them
as foundational princples for understanding computer science.
You may have heard of Java in connection with Netscape and the World
Wide Web. In fact, Java is a general-purpose language that is one of the
best expressions of OO design. Programs created using object-oriented
design principles are well-suited for today's computers. They interact
well with the computer's windows, menus and such (known collectively as
the Graphical User Interface, or GUI). Object-oriented design also makes
it easy to create program elements that can be reused in numerous
applications. Almost all professional programming done today uses this
approach.
We will use "design patterns," one of the foremost topics in object
oriented programming today, as a tool to learn OO techniques and the
ways of thinking needed for that paradigm. Also, as aids to
keep us focussed on proper level of abstraction, we will use
professional development environments such as Borland's JBuilder and
WebGain's StructureBuilder.
During the first weeks of the course you will learn about programming with objects
in Java, some simple design patterns, and basic OO philosophy.
In later weeks, you will apply these ideas to some
exciting programming problems, including graphics, multi-threading, and complex
algorithms.
Course Textbooks
Required:
 |
Timothy Budd, Understanding Object Oriented
Programming with Java, updated edition, Addison
Wesley, 2000. ISBN 0-201-61273-9
A nice book that focuses more on OO philosophy than Java
syntax.
|
 |
Bruce Eckel, Thinking in Java, 2nd
ed. , Prentice Hall PTR, 2000. ISBN
0-13-027363-5. Good OO treatment, with a little more
detail on syntax than Budd's book. The full text is
available as a free download from www.bruceeckel.com. Also at
the web site is his on-line only book: Thinking in
Patterns with Java, which is recommended reading.
|
Highly Recommended (available in the
Co-op):
 |
David Flanagan, Java in a Nutshell, 3'rd ed.,
O'Reilly, 1999. ISBN 1565924878. A great, though terse,
Java reference. This is the one you'll want in your
backpack.
|
 |
Ken Arnold, James Gosling and David Holmes, The Java
Programming Language, 3'rd ed., Addison Wesley, 1997.
ISBN 0201704331. The definitive reference for the Java
language written by its creators. The final word on
Java.
|
 |
Erich Gamma, Richard Helm, Ralph Johnson, and John
Vlissides, Design Patterns, Elements of Reusable Object-Oriented
Software, Addison Wesley, 1995. ISBN
0201633612. The bible of design patterns, a must-have for
anyone serious about object oriented
programming. |
Also
Recommended (not in the Co-op):
|
Martin
Fowler and Kendal Scott, UML Distilled: A Brief
Guide to the Standard
Object Modeling Language, 2nd ed., Addison Wesley, 1999. ISBN 020165783X.
Useful for learning how to fully use UML diagrams.
|
|
Baraba Lizkov with John Guttag, Program Development in
Java: Abstraction, Specification, and Object-Oriented Design,
Addison Wesley, 2000. ISBN 0201657686. This book
discusses, in fairly formal terms, many of the fundamental design
principles we will use in class. A good book to own
once you have figured out basically what is going on in
OOP. |
Online Course Information, Syllabus, and
Assignments
Information about this
course, including syllabus and all lab assignments is be placed online as
part of the Computer Science Program web site. The
server is accessible from any browser at http://exciton.cs.oberlin.edu/cs150
Attendance:
ATTENDANCE AT ALL MEETINGS IS
MANDATORY! Learning computer science is an
interactive process. There will be much material that is
covered in class that is not explicitly stated in the texts.
Both lectures and labs will involve many activities that cannot
be duplicated by outside of class. Note below that attendance
and participation by the student comprises 10% of the final
grade!
Lecture
Meeting
All students must
attend the weekly lecture meeting held in King 106. Lectures will introduce many topics, not all of which
are covered thoroughly or at all in the texts. Student
participatory activities will also be a major components of
these meetings and is an integral component of this
course.
Lab Meetings
Each week each
student must participate in a full three hour lab session in
one of the computer labs in King Building. These
lab sessions will introduce new material as well as
reinforce material from the lecture meetings. The process
will be for the instructor to explain something briefly and
have the lab group do it, explain something else briefly and
then have the lab group try to do that. The labs are
designed to exploratory and require careful deductive
thinking and strong communication with your peers. The
labs are not "cookbook" and, at times,
deliberately include parts that "don't
work." Trouble shooting your system is a valuable
skill to develop. The technical matters demonstrated
will be those expected of you in the weekly assignment, for
which the lab is meant to prepare you. In some cases you
will be able to begin work on the assignment already during
lab, as part of the interactive demos and hands-on process
of the lab meetings.
ALL STUDENTS MUST HAVE A WORKING CAMPUS E-MAIL
THE FIRST DAY OF LAB! SEE THE
COMPUTER CENTER STAFF IMMEDIATELY IF YOU DO NOT HAVE THESE
YET.
Assignments
- There will be approximately one lab
assignment due each week of the course. The lab meetings, as
mentioned above, will introduce new material interactively in
preparation for completing the assignment. Lab assignments are often deliberately too
long for completion during the weekly assigned lab meeting. What
is not finished during the lab session constitutes homework.
There will also be assigned readings in the course
textbooks. Homework is due no later than midnight before
the next lab day.
Grading (subject to change)
|
Attendance and Particpation |
10% |
|
Homework |
50% |
|
In-class Exams |
25% |
|
Final Exam |
15% |
-
Late Assignment
Penalty Policy:
5% off per day
late.
Exceptions only if the
instructor is contacted
before the
due date.
ALL ASSIGNMENTS AND EXAMS MUST BE
COMPLETED. ANY MISSED ASSIGNMENT WILL GENERATE AN
AUTOMATIC "NE" FOR THE ENTIRE COURSE.
Getting Help
- If, after attending class, doing assigned readings, and attending labs,
you still are having a problem with some technical part of the course,
you are encouraged to make an appointment with one of the tutors. You can
make such appointments either in person or by
sending an email message and, in the subject
line, marking the message for the specific tutor you want to get in
contact with. If a number of persons ask about the same matter,
the tutors may schedule a group meeting. The tutors will not have time,
however, to lead you carefully through an entire lab assignment each
week. If you need this kind of help, please come to me and we will
discuss it and perhaps get you a tutor from the office of Student
Academic Services. Never underestimate the value of asking your
peers!
-
-
-
Course Tutors:
-
You are encouraged to e-mail questions of a
technical nature to (or otherwise contact) our course tutors. We will
try to arrange it so that one of the tutors will answer accumulated
messages sometime during the noon hours and another one of the tutors
will field questions in the middle of the evening. They can be reached by
sending an email
message.
Computer Disks
- You will probably need to buy one or more boxes
of 3 1/2" high density PC-compatible computer data disks.
Some of the lab machines have ZIP disks, but be aware that you are
not guaranteed to be using one of them. You should bring at least
one disk with you to every lab session just in case you do not want to
store everything you work with on your Unix Web account. You are in
particular need of a data disk at the first several labs of the
semester.
Note: In order to meet the needs of the class, the above material
is subject to change at any time .
|