|
|
The
contents of this website, the links contained therein directly and
indirectly, and the contents of the said links, are copyrighted. They are provided exclusively for
non-profit educational use by the students currently enrolled in this
course and for the duration of this semester. No other use or any use by others is allowed
without authorization of the professor in this course and copyright holder or holders. No videotaping or recording without professor's prior permission is allowed in class.
Course
OutlineOPTIMAL METHOD OF STUDY
Although
the lecture covers most of the required material, in addition to
regular class attendance you are expected to read the covered sections
of the textbook before and after they are discussed in class. Moreover,
it is recommended that at the beginning of semester you read or scan
through the course text lightly from cover to cover. It is suggested
that you examine the table of contents of the textbook next. This
provides a logical overview of the course from the author's
perspective. When you begin your course of study, always read the
introduction at the start of each chapter before you read the chapter
itself. Do not skip the Exercises section. Following the above
recommendations will allow you to achieve your goal in this course
(e.g., a desired final grade) with less effort.COURSE OVERVIEW
Despite
its mathematical content, this is a practical course with emphasis on
programming in a ``very high level programming language": Abstract Data
Types, and their object-oriented implementations. It assumes a previous
introduction and knowledge of college-level algebra and calculus,
discrete mathematics (particularly important), and skill in programming
in Java. In addition to practical knowledge of advanced programming,
this course will give you an insight into contemporary methods and
techniques of algorithms' analysis. You will also learn a number of
classic algorithms and their data structures the knowledge of whose is
considered fundamental for any person with a college degree in Computer
Science. I hope you will find the subject fun to study.SUBJECT AREAS OF EMPHASIS
After
passing this course you should have a solid knowledge of programming in
Abstract Data Types, as well as understand their implementations,
complexity, and limitations of use. In particular, you should be
familiar with computer representations of the classic data structures:
stacks, queues, trees, lists, priority queues, and tables, with basic
algorithms which process these data structures (e.g., list processing,
tree traversals and balancing, searching, hashing, sorting, and
others), as well as with concepts of algorithms' complexity (``Big Oh",
``Big Theta", worst-case vs. average-case). Although memorizing of
programs is generally not required, except for small basic routines
specifically pointed out in class, you should be able to describe on
examples their functional behavior. Moreover, you should know the time
complexity of these programs in terms of ``Big Oh" and ``Big Theta"
notation.QUIZZES, MIDTERM, AND FINAL EXAMINATION
Quizzes
will consist of five ``easy" questions each, with allowed time 5 - 10
min. The purpose of quizzes is to test whether you follow the class
presentations, read the text, and understand the material.Unlike
the quizzes, the midterm and the final's questions will be a matter of
considerable difficulty. For full credit they will require not only
your solid knowledge of the subject but also certain level of your
creativity, as for instance, solving a problem, writing and running a (fragment of
a) program under NetBeans, or evaluating its running time.All
quizzes, midterm, and the final examination are closed book. The time
allowed for completion is 1 hour for a test and 2 hours for the final. Use of NetBeans is required. Mathematica and
Calculators are allowed but not required. The
examination goal is to determine your level of expertise in the subject
matter by asking questions which randomly cover topics throughout the
textbook. Because of time limitations, these questions cannot address
every single issue of the areas of emphasis; hence their randomness.
Your focus should be on understanding and applying the concepts, the
methods, the algorithms and the data structures investigated in the
textbook, with an emphasis on programming with Abstract Data Types.
However, without memorizing strategic facts, like definitions,
theorems, and basic algorithms, it may be fairly difficult to quickly
produce a full credit answer.TIP ON TAKING AN EXAMINATION
* Time yourself carefully. Spending a lot of time on one or two
questions while ignoring the others is not a good strategy. If a
question seems very difficult to you, take your best shot at the answer
and, if time allows, come back to it later.
* Read every question very carefully so that you have a good
understanding of it. If the question consists of more than one part,
make sure to answer all of them.
* Do every problem. An educated guess often
earns a partial credit, while a blank answer does not.
|
|
|
|
|
|