CS150 Syllabus, Fall 2000
Home Java Resources Discussion Dropoff

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 MANDATORYLearning 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 .