- Instructor
-
Craig S. Kaplan
-
Email:
cse143-instructor@cs.washington.edu
-
Office: Sieg 218, Phone: 616-4367
- Time and Place
- Lectures: MWF 1:10-2:10 pm, Sieg 134.
- Sections:
- AA: TTh 9:40-10:40 LOW 112
- AB: TTh 9:40-10:40 LOW 111
- AC: TTh 10:50-11:50 LOW 112
- AD: TTh 10:50-11:50 LOW 111
- Check the complete schedules for
instructor and TA office hours, as well as lab consultants' hours.
For answers to most questions, you can go to any of the staff, not
just your own TA or instructor. A fast way to reach any of the
course staff is by sending electronic mail.
- Course Goals
- This course is designed to follow CSE/ENGR 142 and round out your
training in the fundamentals of computer science. The main theme
of the course (and perhaps of computer science in general) is
abstraction. You'll learn about what abstractions are and
why we use them. You'll also design, construct and use many
abstractions yourself, while tackling interesting and challenging
programming problems.
Along the way, you'll be introduced to lots of useful and elegant
concepts, both in the classroom and in the lab. Here's a sampling:
- Modularization and encapsulation
- Principles of software engineering
- Abstract data types
- Performance analysis of algorithms
- Object-oriented programming
This course is taught in C++, but it is not a C++ programming
course. That is, the goal of the course is not simply to
make you a proficient C++ programmer. To teach this course, we
need a concrete programming language in which to explore the concepts
presented in lectures. One reason why we use C++ is because it
has powerful abstraction mechanisms that fit nicely with the goals
stated above. Naturally, the homework problems should have the side
effect of giving you some C++ programming ability.
The student who completes the course successfully will have the
tools needed for useful programming and the concepts needed to better
understand computers and software in a variety of situations. In
particular, the material will provide a good foundation to students
who continue in more advanced computer science and computer
engineering courses.
- Course Format
- The class meets three times a week for one-hour lectures. A
day-by-day lecture schedule may
be found on the Web. Twice a week, you meet with your TA and the other
members of your quiz section. On your own time, you have homework to
do, mostly computer programs to design and debug.
- Internet tools
- One of the most important methods of distributing information will
be the World Wide Web. The main course page is located at
http://www.cs.washington.edu/education/courses/143/CurrentQtr/.
Students are responsible for material there. Be sure to check the
web pages often for updates to the schedule, project clarifications,
sample solutions, etc.
E-mail is another important tool. Students are also responsible
for class announcements made via email, especially those on the list
cse143-announce.
- Course Materials
- The textbook for the course is
Mark Headington and David Riley,
Data Abstraction and Structures using C++, DC Heath,1994.
You may also wish to purchase
Stanley Lippman, C++ Primer.
Addison-Wesley, 1991. I used an earlier edition of this book
when I learned C++. It's also a great resource if you plan to
program in C++ after the end of this course. But note:
This book is based on a recent C++ standard, which is newer than
the Headington and Riley book and assumes a lot of new details
about C++ that I won't cover in this course.
You will also need two or three 3.5" high-density (1.4 Megabyte)
floppy diskettes for storing course files while not in the IPL.
They can be purchased at the computer section of the University
Bookstore and at many retail outlets.
- Quizzes and Exams
- There will be several quizzes, one midterm, and a comprehensive
final exam. All tests are closed book, closed notes, calculators
not permitted, unless otherwise announced. Tests cannot be made up.
Tests may include a variety of multiple-choice questions, short
answers, short essays, and programming problems.
The final exam will be 60 minutes in length, and scheduled during
the final lecture,
Friday, August 21st, at 1:10 pm in Sieg 134 (unless
another location is announced). It will not be possible to give
the final on any other day. Please be careful not to schedule
travel or other activities that conflict with the exams.
- Attendance
- Attendance is expected at all quiz section meetings. You are also
encouraged to attend every lecture. If you miss a lecture, talk to a
friend who was present, and be sure to check the Web site for class
messages. Handouts can be obtained from your TA, but other than that,
instructors and TAs will not furnish make-up materials to individuals
who miss class.
- Homework
- Developing good programming skills is crucial to your success in
this course and in any later software development endeavours.
Proficiency in a programming language frees you from the burden of
figuring out how to tell your computer to do something, and
allows you to concentrate on what you want it to do.
The only way to become a good programmer is to sit down and write
many programs. You need to run your program, discover that it
doesn't work, be frustrated, and eventually find the bug and fix it.
About five programming exercises will be assigned throughout the
course. Programming assignments must be done individually, unless
explicitly directed (see Academic Misconduct
below). Also, you may occasionally be assigned ungraded exercises
that help reinforce some concepts. You are encouraged to complete
these exercises.
- Turn-In
- Most programming assignments will be turned in via the Web.
Electronic submission forms will be available a few days before the
due date of the assignment. You must also print out and hand
in (in time) the receipt generated after your electronic submission
in order to get any credit for the assignment. Parts of some
assignments may be turned in by other methods. Specific instructions
will be available with each homework.
- Late Policy
- Work turned in electronically will have a specified deadline for
electronic submission. Other work is due at the beginning
of class unless announced otherwise. Except in truly exceptional
circumstances, late homework will not be accepted.
- Grading
- Your grade will be determined approximately as follows:
Homework | 35% |
Midterm | 25% |
Final Exam | 30% |
Quizzes | 5% |
Other | 5% |
- Computing Facilities
- The Introductory Programming Laboratory (IPL) for CSE 143 is in
Sieg 323. The computers are Windows 95 PCs outfitted with Microsoft
Visual C++, Netscape, Internet Explorer, and other tools. It may be
possible to complete assignments using other
UW computing facilities, or
at home,
especially on home PC's that have software similar to that in the IPL,
and Macintoshes to a certain extent, but our ability to support a
wider variety of platforms is limited.
- Computer Use Policy
- Some excerpts from the campus
policies
follow. 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. Although students are
encouraged to study together to understand general course content,
each student is expected to produce his or her own solution to the
homework problems. Copying or using sections of someone else's program,
even if it has been modified by you, is plagiarism and is not
acceptable. If a tutor or someone outside the course is helping you,
that person may not write any part of any program for you, even if
that tutor is provided by the University.
The University has very clear guidelines for academic misconduct and
the staff of CSE 143 will be vigorous in enforcing them. Here is some
further clarification: You may not copy code from someone else; that
is considered cheating. If caught cheating in this or any other way,
full disciplinary measures may be invoked, including a failing grade
and initiation of a cheating case in the university system. To avoid
creating situations where copying can arise, you cannot mail or post
or otherwise make your code available electronically to anyone. You
can post general questions about programming problems and even
pseudo-code snippets, but no actual C++ code.
For more information about what constitutes misconduct and how
to avoid it, read up on software
hygiene.
Now for the good news. It is educationally valuable to work with
others on general ideas for how to go about solving some problem, and
to help others in general terms when they are stuck. You may
occasionally look at (but not copy down) others' code on screens, but
only to give them help in debugging. If in doubt about collaboration
vs. cheating, just don't, or send the instructor mail asking for
clarification.