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
  • Programming Assignment 1
  • Programming Assignment 2
  • Programming Assignment 3
  • Programming Assignment 4
  • Programming Assignment 5

  • Practice questions for exams

    These will be posted as they become available.
  • Practice questions for exam 1
  • Solutions to practice questions for exam 1
  • Practice questions for exam 2
  • Solutions to practice questions for exam 2

  • 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.
    1. C/C++ language summary
    2. Practical issues
    3. Functions
    4. 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. [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.

    2. [1/10/01] We continued the C++ summary and review, covering the basics of pointers and operations with pointers.

    3. [1/17/01] We covered dynamic memory allocation and more C++. Programming assignment 1 was made available.

    4. [1/22/01] We discussed assignment 1 and more on memory management.

    5. [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.

    6. [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.)

    7. [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.

    8. [2/5/01] We discussed assignments 1 and 2.

    9. [2/7/01] We discussed the functions in the notes, part 3, and began to look at abstract data types (notes, part 4).

    10. [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.

    11. [2/14/01] We continued looking at the stack ADT, this time doing a linked implementation of stacks.

    12. [2/19/01] We finished looking at linked stacks by seeing how to create a constructor for them. We talked about assignment 3.

    13. [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.

    14. [2/26/01] We implemented stacks in an object-oriented manner.

    15. [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.

    16. [3/5/01] We finished the implementation of queues and discussed destructors and garbage collection.

    17. [3/7/01] We went over Dijkstra's algorithm for computing shortest paths in a graph. That algorithm is used in assignment 4.

    18. [3/19/01] We began looking at the searching problem, and binary search trees.

    19. [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.

    20. [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.

    21. [3/28/01] We discussed height-balanced (AVL) binary search trees, including rotations, and when to use the rotations.

    22. [4/2/01] We continued looking at height-balanced binary search trees.

    23. [4/4/01] We finished height-balanced binary search trees.

    24. [4/9/01] Exam 2.

    25. [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.

    26. The remaining lectures covered priority queues and heaps. We covered templates and inheritance briefly at the end of the course.