|
Home Page -- OOP at OSU
|
OSU CS 582, Fall 2004
|
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 27 to Dec 10, 2004, MWF 3-4PM, Covl 221.
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 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
e-mail introduction.
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. A graphical browser
(such as Netscape) is preferable, however a text-only browser (such as
Lynx) can be used if necessary. (In the latter case certain essential figures
may have to be mailed to the participant by ordinary postal 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 Dearborn 218, on the OSU campus. Office
hours are MWF from 10 to 11:30, 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++.
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 e-mail message
that introduces 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 only 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.
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
from Fall 1995 Class
Projects
from Spring 1995 Class
Projects
from Fall 1996 Class
Projects
from Spring 1997 Class
Projects from
Spring 1998
directory
of previous projects
Ideas for Possible
Projects
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.
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 will 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
-
- Week 5
- No lectures (I'm out of town).
- Take home midterm exam.
- Project descriptions also due by end of week
- Week 6
-
- Week 7
-
- Week 8
-
- Week 9
-
- Advanced Topics
- Chapter 25 - Reflection and Introspection
- Thanksgiving Holiday, no classes Nov 26th
- Week 10
-
- Finals Week
-
- Project Demonstrations, Evaluation, Wrap up Discussions
- All course related material due by Dec 8.
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.