CS151 Syllabus, Spring 2001
Home Search E-mail Java Resources Discussion

4 Credits ­ 4 NS, Quantitative Proficiency

Lecture (everyone attends), Section -01:  M-W-F 9:00AM - 9:55 AM,  King 243
Lab, Section -02: Monday 1:30PM - 4:30 PM,  King 201
Lab, Section -03: Tuesday 1:30PM - 4:30 PM,  King 201

Instructors:

Stephen Wong  King 223A, x8386
Office Hours:  (See the instructor's home page.)

John Karro King 223C, x8697
Office Hours:  (See the instructor's home page. )

Antonio GarciaLangston 367, x5037
Office Hours:  TBA

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 second of a two-course sequence in which you will become familiar with those concepts that apply universally throughout computer science. You will also develop skills in programming, including principles of algorithm and data structure design and analysis.

The use of object-oriented programming techniques in Java will continue, with a shift of focus towards the study of  common data structures.  Object-oriented architecture and design will still be stressed.   In addition, topics such as concurrency and remote method invocation will be covered.

Course Textbooks

As there is no required textbook for this course plus the heavy use of code implementations not found in standard texts, students will be unable to complete the course without daily class attendence.

Highly Recommended :

  1. Gamma, Erich, Helm, Richard, Johnson, Ralph, and Vlissides, John, Design Patterns, Elements of Reusable Object-Oriented Software, Addison Wesley, 1995.   The bible of design patterns, a must-have for anyone serious about object oriented programming.  
  2. Bailey, Duane,  Java Structures: Data Structures for the Principled Programmer , WCB/McGraw-Hill, 1999.   ISBN 0-07-289179-3  A nice compact book, though our implementations of the data structures will be considerably different than those presented by Bailey.
  3. Budd, Timothy, Understanding Object Oriented Programming with Java, updated edition, Addison Wesley, 1997.  ISBN 0-201-61273-9  A nice book that focuses on OO than Java syntax.
  4. Eckel, Bruce, Thinking in Java, 2nd ed., Prentice Hall PTR, 1998.  ISBN 0-13-659723-8  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.
  5. Flanagan, David, Java in a Nutshell, 2nd ed., O'Reilly, 1997.   ISBN 1-56592-262-X  A great, though terse, Java reference.   This is the one you'll want in your backpack.
  6. Arnold, Ken, and Gosling, James, The Java Programming Language, 2nd ed., Addison Wesley, 1997.  ISBN 0-201-31006-6  The definitive reference for the Java language written by its creators.  The final word on Java.


Also Recommended:

  1. Fowler, Martin; Scott, Kendall; and  Jacobson, Ivar, UML Distilled: Applying the Standard Object Modeling Language, Addison Wesley, 1997.  ISBN 0-201-32563-2.  Useful for learning how to fully use UML diagrams.

Online Course Information, Syllabus, and Assignments

Information about this course, including syllabus and all lab assignments is be placed online as part of the Third Stream Computing Learning Center. The server is accessible from any Netscape WWW browser at http://exciton.cs.oberlin.edu/cs151

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 thrice weekly lecture meetings held in King 243.

Lectures will introduce all the topics.   JUST READING THE TEXTS AND/OR WEB SITES WILL NOT BE SUFFICIENT TO COVER THE MATERIAL!!   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.

As this is the second half of the introductory computer science class, the level of detailed instruction in the laboratories will be significantly less than that of the first semester.   Students will be expected to be able to design and write the graphical test programs required for the labs.  

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 40%
In-class Exams 30%
Milestones 10%
Final Project 10%

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.
 
Jeff Walker and Ken Lin are the course graders/tutors/lab assistants.
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.  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 or student LOCKER space. You are in particular need of a data disk at the first several labs of the semester.