|
Home Page -- OOP at OSU
|
OSU CS 582, Fall 2005
|
Object-Oriented Analysis and Programming
Professor Timothy A. Budd
|
This is the Home Page for the Course Object Oriented Analysis
and Programming,
originating from the Department
of Computer
Science at Oregon State
University
in Corvallis, Oregon, USA.
Fall Term, Sept 26 to Dec 9, 2005, TTh 2-3PM, Colv 221
(possibly later moving to KEC).
Welcome to the Oregon State University
course in Object-Oriented Programming.
In the past this course was offered as both a
lecture course and as a distance education course. However, it has been
decided
to discontinue the distance education courses, and so the course is
offered now only in the lecture format.
Continue
The catalog description for this course reads as
follows:
``An examination of the ideas of
Object-Oriented design and Object-Oriented software construction. The
lectures present
the concepts of object-oriented analysis and programming in a language
independent fashion, illustrated with specific examples from a variety
of
programming languages. Students are expected to complete and report on
a
nontrivial project developed in an object-oriented language of their
choice.''
As indicated in the description, the course is intended
to be a broad introduction to the field of object oriented analysis and
programming. It is not a course in any particular programming language,
although students are expected to have the ability to learn at least
one
language on their own during the period of the course.
Continue
The course is open to any student in the
graduate program in computer science at Oregon State University.
Undergraduates
and students in other departments can take the course with the
permission
of the instructor. Although the course is listed as a graduate level
course
(for historical reasons), the material should be accessible to any
upper
division undergraduate with a background in computer science.
Students are expected to have at least two
years
programming experience. This can be in a conventional programming
language,
such as C or Pascal, or in an object-oriented language, such as Java or
C++.
Students should expect to spend about ten to
fifteen hours per week on course material. This includes reading the
text, answering the study questions, doing exercises, the midterm exam,
and programming
the final project.
Continue
The instructor is Associate Professor Timothy Budd, from
Oregon State University.
We do not yet have a TA assigned for this term.
I will ask that every member of the class introduce themself in a
short
introduction. (See Archive for posted
introductions)
Students who are able can also create a home page.
Continue
Participants are expected to have access to a
World-Wide-Web browser, and be able to send and receive electronic
mail.
The web browser will
be used to read the study material, while electronic mail will be the
medium for discussions, homework, and
examination.
Continue
My office is Kec 3049, on the OSU campus. Office
hours are TTh from 10 to noon, although you are welcome to try and drop
by at other times. Phone is 541-737-5581. Fax is 541-737-3014. E-mail
is
budd@acm.org.
Continue
This course is based around my book, An
Introduction
to Object-Oriented Programming, 3E (published by Addison-Wesley Longman, 2002). You
should be able to find a copy of this book at any good
technical bookstore (such as Powells in Portland), or
you can order it on-line. In the past the on-line prices were often
less than the OSU bookstore price, but now they seem very similar.
A variety of information for the textbook, include an errata
sheet, is available on-line.
In addition to the textbook, students will likely want to purchase
a reference
manual for whatever language they are using for their project. The OSU
bookstore
has quite a range of titles, as do many other technical bookstores. If
asked
(in the discussion group) I can suggest a few titles.
Other Books I have written
I've written many books,
several of which are related to the topic of this class.
- If you are using C++, you may want to learn about the STL data
structures classes. I have a data
structures textbook that discusses this topic.
- If you are using Java, I have a book on Understanding
Java, it is basically the material from this course, but tied
specifically to Java.
- Another project is a book entitled C++ for
Java Programmers. It is designed to help programmers trained in
Java make the transition
to C++. My most recent book is Big C++,
an introductory
textbook for learning about C++.
- I'm currently working on another Java data structures book, and a
book
tentatively titled "Python as a Second Programming Language".
Continue
A course is much more than simply a textbook.
The lectures themselves are only the beginning.
- Every chapter of the textbook comes with a
set of study questions. These are intended to be relatively
simple
questions, which merely ensure the student is learning the essential
points
of the material. Participants will be required to submit answers to
these
questions. Submissions will be directed to the instructor or teaching
assistant using electronic mail. Study question answers are due by
midnight on Sunday
following the week in which the given chapter is studied. The Professor
and/or Teaching Assistant will examine the student responses, but no
``grade''
will be assigned, other than a binary grade of completed/not completed.
(I have pedagogical reasons for requiring the student actually write
down
the answers to these questions; it is the on-line equivalent of
taking
attendance -- rather than seeing if the student is attending the
lecture,
it is seeing if the student is attending to the lecture.)
- Prior to submitting their answers to the study questions to the
TA or instructor, students are encouraged to discuss the material in
small groups among themselves.
- Students will be encouraged to participate in a hopefully
broad-based and on-going discussion carried on through an electronic
mailing list. It is through the medium of this list that we hope to
create the feeling of a ``community'' of people working
together on a common purpose. Students will be encouraged to comment on
and expand upon topics covered in the lecture, ask questions when they
encounter ideas they do not understand, and in general take control of
their own educational progress.
- As part of this process of building a community, I would ask
that every participant begin the term by writing a short introduction
that describes themselves, sharing this information with the other
members of the class. Give your name, your current affiliation, your
location, your interests, and whatever other information you feel like
sharing with other members of the course.
- Another way of trying to build a community out of a widely
dispersed group is to ask that everybody who is able build a home
page. I will make available a group page that gives links to all
submitted home pages. For those without access to a web server, I will
create accounts on one
of our machines just for this purpose.
- For students taking the course for credit, about half-way
through the term there will be an examination. The format of
the examination varies from term to term. It may be similar to the
study questions, or
it may be more open-ended. The examination will be presented on-line,
and
students are simply placed on their honor that they will answer the
questions
without assistance from other members of the class, and without
accessing
the on-line material.
- The final portion of the class is a project. More
details on the project are available in the following section.
For those taking the course for credit, the final grade will be
determined by the percentage of study questions completed, the mid-term
examination, and an evaluation of the final project (both the
program and the report). Completion of all material is
sufficient to obtain a grade
of ``B''. To obtain an ``A'' grade the student must demonstrate
creativity
as well as a firm mastery of the course material.
Continue
In order to reduce the load on the Teaching
Assistant and instructor and to encourage greater interaction on the
part of participants, students are encouraged to form study groups.
Study groups work best if there is physical proximity (such as a number
of students from the same
industrial site), however they can also be made to work using
electronic
mail. Study groups can also be formed around common interests, for
example
people using Delphi for their programming project. While study groups
are
not a requirement, they are nevertheless useful. The instructor will
try
to help in the formation of such groups.
Continue
Students taking the course for credit are
required
to complete a project in an object-oriented language of their
choice.
The major requirement for this project is that
it be suitable as a vehicle for demonstrating to the teaching assistant
and the professor that the student understands the principles of
object-oriented programming. Part of a successful completion of this
assignment is understanding and selecting a type of project that is so
suited. In discussions in the mailing list I will suggest ideas that
have proven to be successful projects in the past.
Students can work in teams on a project.
Teams can be no larger than four individuals, and team projects are
held to
a higher standard than are individual projects.
The project must be developed in a language in
which you have little or no previous experience. If you have
spent five years learing Java, then do your project in C#, or in
Python, or Delphi, or CLOS, or any of many other possibilities.
Projects need not be a task specific to this
course. A project that is useful at work or as part of a larger
research program or even in another course can be proposed. In such
cases approval for the use of the project in this fashion must be
obtained not only from myself, but also from the appropriate instructor
or supervisor.
Before week six a description of the
project must be submitted. This description will include the language
and platform to be used, the members of the team, and background on the
project (such as if it is being used in a research program or course).
The TA and/or instructor may comment on the project, or may simply
register an assent.
Where practical, source code or executable
versions of the project will be made available to the entire class for
examination during the last week of the course.
In addition to a working project, students must
submit a short (five to twenty page) report describing the
project, and
how object oriented principles were used in the programming of the
project.
The report should be well-written, formatted and spell checked. The
report
is used to determine how well you understood the concepts that have
been
discussed in class, so it should be detailed. Your grade is based on
the
quality of the report as well as the coding for the project.
Projects
Archive
Continue
In class ``discussions'' we be conducted using
an
e-mail mailing list. The address for this list is class-cs582@engr.orst.edu
You can contribute to a discussion by simply sending mail to this
address. Those of you who have a mail alias file may wish to select a
shorter
name for this address. Only those people who have registered for the
course
can be placed on the mailing list.
The mail list is archived, which you can access from the web page.
For
example, you can register a different mail address if you wish. Please
submit from the mail address you have registered, otherwise I must
manually approve your submissions. (Chiefly this moderator job is to
keep the spam out of the mail list).
Continue
Much of what goes on in this class will occur
using the medium of electronic mail. E-mail is a very powerful, and
sometimes dangerous tool. Please remember the following:
- For many of the participants, no matter where
they are physically located, English is not a native language. Please
be forgiving of errors in spelling, grammar, or syntax, and please
don't let a worry about committing such errors prevent you from
participating. (Just to make you feel more comfortable, I will
guarantee that I will make at least a few hundred such errors myself
over the course of the term).
- Misinterpretation is very easy in
e-mail. There is no ``body language'' to give context to statements,
only the words themselves. Something you view as an off-the-cuff
throw-away line may
be taken as a serious insult by somebody else. Avoid flames, by
avoiding
sparks. Strive for civility, please.
- There may be many on-going and inter-weaved
threads of discussion. Try to provide context, but do so in a concise
fashion. Do not simply include in your e-mail the entire text of a
message you are responding to, but do include hints, such as
starting out by saying ``Regarding the assertion that classes are
unnecessary, since everything you can do with classes you can do with
delegation, I think that .... ''
Continue
The following calendar lists the intended dates
for discussing specific sections of the text, as well as hyperlinks to
the
associated lectures and audio files. (Audio files not yet available for
the 3rd edition, sorry). Participants are asked to try to stay as close
as possible to this schedule.
A table of Study
Questions To Date is available.
- Week 1
-
- Introductions, Getting Started, Learning how to use the Web.
- Chapter
1 - Thinking Object Oriented
- Chapter
2 - Abstraction
- Week 2
-
- Week 3
-
- Week 4
- (No class on tuesday, I'm out of town).
- Week 5
- Week 6
-
- Week 7
-
- Week 8
-
- Week 9
-
- Advanced Topics
- Chapter
25 - Reflection and Introspection
- Thanksgiving Holiday, no classes Nov 24th
- Week 10
-
- Finals Week
-
- Project Demonstrations, Evaluation, Wrap up Discussions
- All course related material due by Dec 7.
A table of links to students home pages. Creating a
home page is encouraged, but is not required.
External Links
Here are some external links related to object-oriented
programming:
If you have links you think might be appropriate here, let me know.