CSCI 3510, Spring 2001
Last modified: 5/2/01
Announcements
Syllabus
This course covers advanced programming, mainly concerning
representation of data and use of the memory. See the
syllabus.
Office hours
MW 12:00-2:00, TTh 5:00-5:30
Assignments
Assignments will be posted here as they become available.
See the syllabus
for information on how assignments will be graded.
See the checklist and general advise
and writing and commenting programs
for brief advice on producing high quality programs
Practice questions for exams
These will be posted as they become available.
Checking your grade
If you have obtained a password then you can
check your grades
as I have them recorded. You can obtain a password from me.
To obtain one by email, send me email indicating the password
that you want. Choose a string of 4 or 5 letters/digits.
Class notes
The class notes describe C/C++ language features and the basics of
object-oriented programming. You can also useful find material in
the appendix of the textbook.
- C/C++ language summary
- Practical issues
- Functions
- Abstract data types
Unix accounts and Unix tutorial
Although you may feel free to develop your programs under any system,
all programs will be tested using the g++ compiler under Unix.
All students will receive accounts in the lab in Austin 320.
If you already have an account, it has not been changed.
If you do not have an account, then your account is
your first initial followed by your middle initial followed by
up to six letters of your last name. All letters in your account
are lower case. If you do not have a middle initial, an x is used.
Your password is your three initials (first, middle, last) followed
by the last five digits of your social security number.
A brief tutorial on unix
is available.
Debugging Tutorial
You will need to be able to debug programs.
A brief debugging tutorial
is available.
Summary of material covered
- [1/8/01] We went over the syllabus and began a summary and
review of C++. The material on C++ is in the
C/C++ language summary
notes. We covered through the basic integer types.
- [1/10/01] We continued the C++ summary and review, covering
the basics of pointers and operations with pointers.
- [1/17/01] We covered dynamic memory allocation and
more C++. Programming assignment 1 was made available.
- [1/22/01] We discussed assignment 1 and more on memory
management.
- [1/24/01] We discussed more details of assignment 1,
and began discussing calling modes in C++. We covered call-by-value
and call-by-pointer.
- [1/29/01] We went over more details of the assignment and
discussed call-by-reference, function contracts, and output in
C++ and C styles. (To find out about the printf function, just
do
man printf
on one of the Unix computers. It tells the kinds of formats that
you can use. man is short for manual.)
- [1/31/01] We discussed input in C and C++ styles and issues
on debugging of programs. Then we began to look at
how functions can behave with respect to memory management.
You should read parts
2 and
3 of the notes.
- [2/5/01] We discussed assignments 1 and 2.
- [2/7/01] We discussed the functions in the notes, part 3,
and began to look at abstract data types (notes, part 4).
- [2/12/01] We began looking at abstract data types (ADTs).
This is in part 4 of the notes. We did an example, a stack
ADT.
- [2/14/01] We continued looking at the stack ADT, this time
doing a linked implementation of stacks.
- [2/19/01] We finished looking at linked stacks by seeing how
to create a constructor for them. We talked about assignment 3.
- [2/21/01] We talked some more about assignment 3 and then
looked at how to use a class to enforce the privacy rules of an
abstract data type.
- [2/26/01] We implemented stacks in an object-oriented manner.
- [2/28/01] This lecture introduced queues. We looked at a
few possible representations of queues, and began implementing queues
using one of those representations.
- [3/5/01] We finished the implementation of queues and discussed
destructors and garbage collection.
- [3/7/01] We went over Dijkstra's algorithm for computing
shortest paths in a graph. That algorithm is used in assignment 4.
- [3/19/01] We began looking at the searching problem, and
binary search trees.
- [3/21/01] We did more detail on binary search trees. We wrote
functions to perform lookup, insertion and extraction of the minimum
member, and began to think about how to do deletions.
- [3/26/01] We finished deletion from binary search trees,
and saw how to wrap binary search trees in a class. Copy constructors
were introduced, and a copy constructor for the set-of-integers
class was written.
- [3/28/01] We discussed height-balanced (AVL) binary search trees,
including rotations, and when to use the rotations.
- [4/2/01] We continued looking at height-balanced binary search
trees.
- [4/4/01] We finished height-balanced binary search trees.
- [4/9/01] Exam 2.
- [4/11/01] We went over the exam, and discussed some issues
with assignment 4 and assignment 5.
An important issue for assignment
5 is that in my class notes on the board I forgot to update the heights
of nodes in function singleRotateLeftwards. Since the height of the
nodes might change, they must be updated.
- The remaining lectures covered priority queues and heaps. We
covered templates and inheritance briefly at the end of the course.