COM 1101 Algorithms and Data Structures 1 - Winter 2001
Reviewing for the Final Exam
for Professor Futrelle's section
College of Computer Science, Northeastern U., Boston, MA
(Version of 3/6/2001)
This page lists the major topics to be covered on the Final Exam. The Final will
be held at 3:30pm, Tuesday the 13th of March in the Ell building auditorium --
the huge auditorium that can be reached from the front of the Ell building,
which faces the Quad and Huntington Ave. There will be other exams going on
in the auditorium
at the same time, so our class will occupy some corner of the auditorium,
away from the others.
In addition to this page, there have been a number of
other pages created during the course which are accessible from the course gateway.
These include lengthy notes for Quiz 2, notes for the Midterm and the wrap-up notes.
This page is not meant to be totally exhaustive and detailed. For example,
if a particular chapter
has been fully covered in the course, and all topics in it are relevant to
the Final, I'll simply note that and not go through and list all the topics in the
chapter. But often, less than all the material in a chapter will be covered
and I'll be especially careful to describe the parts you do not need to study.
Though such sections would probably be useful and educational, studying
them now would not offer you much in the way of short-term benefits in taking the Final.
At the end of the course, I have given you material emphasizing pointers and the use
of the new operator. But since this material is hardly covered in the textbook,
I am not emphasizing it on the Final Exam. Instead, I'm emphasizing material that
is explained in the textbook, material you can study there. The textbook referred
to below is of course,
Problem Solving with C++: The Object of Programming (3rd edition, 2001)
by Walter Savitch.
What you need to know for the Final Exam
- You should know chapters 1 and 2 cold. For example, an assignment statement
is always of the form: variable = expression The left-hand-side
says where a value is to be stored and the right hand side is an expression,
something that has a value, which
could come from an algebraic expression, a boolean expression or the return value
of a function. Also, know what's in Display 2.8.
- You should also know all the material in Chapter 3. This includes
knowing and understanding the terminology
that's introduced, for example, "directive", "preprocessor", "formal parameter",
"call-by-value mechanism", and all other special terms introduced by bolded words
in the chapter. The only exception is that I don't require you to memorize
the predefined functions in Display 3.2. Knowing terminology is important --
if you're serious about baseball, it would be hard to talk to someone who didn't
know the terms "ball", "strike", or "shortstop", and if you're serious about
clothing construction, terms such as "baste", "bobbin" or
"serger".
So learn your
Computer Science terminology and talk like a pro (and understand what you're
talking about)!
- For Chapter 4 and beyond, we'll be more selective about what's covered for
this course. It is important to understand call-by-value and how it contrasts
with call-by-reference. You can also profit from your understanding of passing
pointer arguments, which is basically what call-by-reference is doing "behind
the scenes". It allows the function to access the location where a value is stored
so the value there can be changed by the function and will of course remain
changed after the function returns. The material in Chapter 4 following page 198
is covered only superficially in this course. Read it for you edification, but
you don't need to know it this time around.
- In Chapter 5, you should know the material up to and including the Summary
on page 235. There is a good deal of material after this in Chapter 5,
but we'll treat it
as things you look up or learn as needed, not items that will be tested on
the Final Exam.
- Chapter 6 contains the important core concepts behind classes and object-oriented
programming, so there's a lot here to pay attention to. Remember, Structures are
just slightly specialized Classes, so concentrate on understanding Classes.
You do not need to learn the details of the Bank Account example or its
alternative implementation, but studying
them could help you understand Classes. Certainly, the Summary on pg. 334 is
worth studying. Constructors are an integral part of object-oriented languages
such as C++ and Java, so you need to understand them, how to define and use them.
- Chapter 7 on control structures contains much of the "bread-and-butter"
constructs of the everyday use of the language. There's no rocket science
here, so you need to have learned all the constructs described in the chapter.
And remember, the syntax of these control statements is in most cases identical
in Java, so you're getting two languages for the price of one! An important part of
this material is the use of Boolean expressions; you must know how to read, write
and use them correctly. Boolean expressions are also commonly used in
web searching, as I'm sure you've noticed.
- Chapter 8. Messy material. It will not be on the Final Exam. :-)
- Chapter 9 on arrays covers important fundamental material.
Arrays are the most basic
structures that can and do handle huge collections of data in real programs.
Among other things, you need to understand that arrays are always passed
by reference to functions, so changes to their contents persist,
they "take", after the function is executed and returns. Be sure you understand
the difference between passing an entire array as an argument versus just passing
the value of a single array element (a change to it will not persist).
Remember that an array declared as int A1[10] has an element of index 0
and no element of index 10. The legal index values go from 0 through 9.
You may find the examples in Section 9.3 useful, but you will not be tested
on them specifically.
It is common to have arrays of class objects and arrays in classes, so the material
in Section 9.4 is material you should know.
- Chapter 10. Focus entirely on Section 10.3, the C++ standard string class.
Know the basics of its use, as well as the most common members of the class,
all the items in Display 10.11. But you do not need to know the
details of the four find functions or the insert
or remove functions.
- Chapter 11 on pointers gets into a lot of details. All I'm asking you
to know for the Final is the material in Section 11.1.
- There are further topics that have come up toward the end of the course,
such as inheritance. But we have not been able to spend enough time with them
to learn them well. So I will not include these other topics on the Final Exam.
- And that is enough. I'm sure you'll agree.
Go to COM1101 home page (Gateway)
Return to Prof. Futrelle's home page