CSE 143: Computer Programming II - Java
Course Administration and Syllabus

Hal Perkins, Autumn 2001

Web site
http://www.cs.washington.edu/education/courses/143/01au-java/
 
Staff Information
Instructor Room E-mail Office hours
Hal Perkins Sieg 208 cse143-instructor@cs.washington.edu MF, 2:00-3:00; see my schedule for any changes

Teaching Assistants Room E-mail Office hours
Harlan Hile
Jonathan Ko
Valentin Kostadinov
Sam Li
 Sieg 226a harlan@cs.washington.edu 
jonko@cs.washington.edu 
valmk@cs.washington.edu 
songli@cs.washington.edu
see schedule on the Web

Course Goals
CSE 143 is a continuation of CSE 142.  Topics covered will include classes and interfaces; inheritance; basic design principles; exceptions; stream I/O; user interfaces; recursion; elementary data structures and associated algorithms (lists, queues, stacks, trees); and an introduction to performance analysis and implementation tradeoffs.  The Java programming language will be used to gain concrete experience with these ideas.  Successful completion of the course will give you the tools needed to construct substantial computer programs and the concepts needed to better understand computers and software.  The course also provides a good foundation for further study in computer science and engineering. 
Prerequisites
CSE 142.  To be fully prepared, you should have taken the Java version of the course, or have equivalent background (look at the summer CSE 142 web pages if you are not sure whether your previous course(s) included the appropriate topics).  If you took the C language version of CSE 142, you should consider taking the C++ version of CSE 143, which will be offered for two more quarters (Au 2001 and Wi 2002).  The new Java version of CSE 142 introduces basic programming concepts in the context of Java classes and objects, topics that were not included in the C version of the course. If you have done some object-oriented programming in another language (C++, for example) you should be able to make the transition to Java, and to this course, fairly easily.
Course Format
The class meets five days a week: three lectures on MWF, and two quiz sections on TTh.  On your own time, you have homework to do, mostly computer programs to design and debug.  Students almost universally report that CSE 143 is time-consuming (but also interesting and rewarding for many!).
Topics Covered and Schedule
Lectures: 11:30-12:20 pm MWF, Kane 220.
Sections: 8:30 or 9:30 am, Tuesday & Thursday.  Section JA is intended for students who feel they have relatively less background.  Exams and assignments are the same for all sections.  You must attend one of the CSE 143 sections labeled "Java programming" (JA-JE).  Sections start on October 4; no sections on Tuesday, October 2.
Topics, assignments, & exams: A day-by-day schedule is online.  This shows topics covered, textbook sections for each topic, and dates of major events.  The exact mix of topics and schedule is subject to change, as this is the first time the course has been taught using Java.
Staff: Check the online staff schedule for instructor and TA office hours and e-mail addresses, as well as lab consultants' hours. Please feel free to visit any of the staff during office hours, not just your own TA or the instructor.
Textbook and Materials
Course slides and notes will be distributed in class, and will be available on the web before class whenever possible (see the course lecture schedule).  Any extra printed copies of handouts will be in the racks outside Perkins' office (Sieg 208).  Once those are gone, you can print copies from the course web.
Textbook: Jaime Nino and Frederick Hosch, An Introduction to Programming and Object-Oriented Design using Java, Wiley, 2002.
In most any bookstore you can find an almost frightening number of books about Java.  You may find that one or more of these appeals to your learning style and background.
Quizzes and Exams
There will be two 50-minute midterm exams and a comprehensive final exam. There will also be regular short quizzes.  Tests may include a mixture of multiple-choice, short-answer, and programming questions. The tentative plan is to hold the midterm exams in class on Friday, October 26, and Friday, November 16.  The final exam will be held at the regularly scheduled time, Tuesday, December 18, from 2:30-4:20. You must take the exams when they are offered; please do not make plans which would prevent you from doing so. You must take the final exam in order to pass the course.   The final exam may be held in a room other than the usual lecture room.
Attendance
Attendance is expected at all quiz section meetings and lectures. There will be regular, graded quizzes in section. Attendance is not taken in lecture, but there may be some opportunities for credit that you will miss when you don't attend. If you miss a lecture, talk to a friend who was present, and be sure to check the Web site for class messages and updated lecture slides. Instructors and TAs will not furnish make-up materials to individuals who miss class.
This is not a distance learning course, even though a great deal of class material is available via the Web. Students who choose not to attend class cannot expect to succeed as readily as those who do.
Homework
Computer programming is best learned hands-on. Several sizable programming projects will be assigned throughout the quarter, as well as a number of smaller exercises, which may include problems to solve, questions to answer, short writing assignments, diagrams or charts to draw, etc. You should expect to have an assignment due every week.  Assignments must be done by each student individually, unless explicitly directed otherwise. Pick up graded written homework and exams from your TA in quiz section. Unclaimed homework is discarded at the end of the quarter.
Turning in Assignments
Each assignment will carry instructions about when and how it is to be turned in.   Some assignments may be collected in class or by e-mail. However, for most programming homework you will turn in the assignment electronically via the Web. There will be a special page with a form to fill out, and a "receipt" page is sent back to your computer to verify that we received the assignment.
Generally, the deadline for electronic submission of assignments will be Wednesdays at 10:00 p.m.  Any written assignments will be due at the beginning of your quiz section on Thursday mornings.
Late Policy
Except in truly exceptional circumstances, late homework will not be accepted. 
Grading Scheme (tentative)
Homework assignments are your opportunity to learn; exams are the place to assess how well you have mastered the material. That is why the homework does not count as heavily towards the final grade as might seem warranted, given the amount of time you will spend on it.
If you find an error in the grading, you must bring it to your TA's attention within one week of the time the item was returned.
Tools for Communication
The course web site is the primary source of information about CSE 143. In addition, everyone should read the newsgroup uwash.class.cse143.bboard. This is a forum for discussions about the class, and the course staff will monitor it and contribute. You are also required to have a UWNetID, and you must read email at the address you've provided to UW. We will send email to that address if we need to broadcast a message to everyone in the class.  Messages are archived on the course web site. 
You can reach the entire teaching staff at once by sending electronic mail to cse143-staff@cs.washington.edu .  This is often the fastest way to get an answer from some staff member (but you are encouraged to use the course newsgroup for most discussions and questions.) 
Labs and Computing Facilities
The Introductory Programming Laboratory (IPL) for CSE 142 and CSE 143 is in room 334 of Mary Gates Hall.  The IPL is our home base, and we provide consulting support there at scheduled times throughout the week.  Software to support the course is also installed in the other UWired public labs, and is freely available over the web: see the computing at home pages for help.  (The same instructions work for both CSE 142 and CSE 143.)
Materials
Students who work in campus labs will need two or three floppy disks to store their files.  Disks are not handed in.  You are responsible for having backup copies of your files in case something happens to the original version.
Course Administrator
Emily Warren (acting), Sieg 114; 616-3225, cse143-admin@cs.washington.edu.  See Ms. Warren for administrative matters related to the course such as scheduling conflicts, corrections to entries in our grade database, etc.  See the staff page for office hours. 
Computer Use Policy
Some excerpts from the campus policies. Take them seriously: "You must use all UW [computing] resources in strict accordance with local, state, and federal laws. These laws cover such areas as illegal access to computer systems, networks, and files; copyright violations; and harassment issues... Software and information resources provided through the university for use by faculty, staff, and students may be used on computing equipment only as specified in the various software licenses. Unauthorized use of software, images, or files is regarded as a serious matter and any such use is without the consent of the University of Washington...If abuse of computer software, images, or files occurs, those responsible for such abuse will be held legally accountable."
Academic Misconduct
All work turned in is expected to be your own. Unacknowledged copying or using parts of someone else's program, even if it has been modified by you, is plagiarism and is not acceptable! If you have a tutor or helper from outside the course, that person may not write any part of any program for you. The University has very clear guidelines for academic misconduct and the staff of CSE 143 will be vigorous in enforcing them. We make use of very effective automated tools for detecting similarities between homework solutions.
Although students are encouraged to study together to understand the course content, each student is expected to produce his or her own solution to the homework problems, unless explicitly allowed otherwise.
These rules are an attempt to reach an appropriate balance between three goals:
- Learning: The only way to learn to program is to do it; so it is important that every student actually gain the experience of solving problems, by writing and debugging programs.
- Cooperation: People learn best when they are able to exchange ideas and discuss things.  It is important that we create an atmosphere in which everyone involved in the course feels free to help each other out.
- Fairness: It is important that people receive credit only for work they do themselves.  It is fundamentally unfair and dishonest to represent someone else's work as your own.
There is no problem if you occasionally help a colleague by looking over his/her shoulder, ask questions, listen to explanations, discuss design and implementation issues and so forth.  It is a problem if you ever have a copy (printed or machine-readable) of someone else's code, or knowingly give your code to someone else.  It is a problem if you develop a solution to an assignment jointly with someone else or if you include code in your program that was written by someone else.
If you are not clear on whether some form of cooperation is allowed by these rules, don't guess - ask a TA or the instructor first.  Violations of these rules will be referred to the appropriate University authorities for disciplinary action.
Detailed Syllabus
See the lecture schedule available on the Web