CSCI 3510, Fall 2002

Last modified: 12/1/02

Announcements


Syllabus

This course covers advanced computer programming, mainly concerning representation of data and use of the memory. See the syllabus.


Office hours

MW 11:00-12:30, TTh 11:00--12:00 or by appointment.


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 giving your name, the course, and the password that you want. Choose a string of 4 or 5 letters/digits.


Information on Assignments

Assignments will be posted here as they become available. Some pages are available to help you know how to write programs.

  1. The syllabus contains information on how assignments will be graded.
  2. See checklist and general advise for brief advice on producing high quality programs.
  3. See short checklist for an abbreviated checklist.
  4. Some notes on commenting programs are also available.
  5. A brief debugging tutorial is available.


Assignments

  1. Programming assignment 1
  2. Programming assignment 2
  3. Programming assignment 3
  4. Programming assignment 4
  5. Programming assignment 5


Practice questions for exams


Class notes

The class notes describe C/C++ language features and the basics of object-oriented programming. You can also find material in the appendix of the textbook.

  1. C/C++ language summary
  2. Practical issues
  3. Functions
  4. Abstract data types


320 Lab information


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.

A brief tutorial on unix is available.


Summary of course so far

  1. [8/22/02] We began looking at memory management in C++. We talked about the memory, memory addresses and pointer variables. The * operator finds the thing that a pointer points to.

  2. [8/27/02] We continued looking at memory management. We say the heap, and the new and delete operators. We started working on arrays.

  3. [8/29/02] We looked at arrays, pointer arithmetic and memory management using arrays. We did examples using null-terminated strings.

  4. [9/5/02] We discussed programming assignment 1 and hash tables.

  5. [9/10/02] We discussed more on programming assignment 1, and also looked at structures in C++, and how to use pointers to structures.

  6. [9/12/02] We began looking at linked lists, and how to define functions on linked lists. We used both loops and recursion.

  7. [9/17/02] We discussed abstraction and information hiding. We defined an abstract, or conceptual, view of lists. Next time we will implement the conceptual view, and see how to use it in other modules.

  8. [9/19/02] We discussed progrmming assignment 2. Then we looked at functions on lists, including concatenation of lists.

  9. [9/24/02] We continued looking at linked lists. Functions can be implemented either in the physical view (inside the implementation of the abstract data type) or in the conceptual view (either inside or outside the implementation of the abstract data type).

  10. [9/26/02] Exam 1.

  11. [10/1/02] We began a study of object-oriented programming by looking at the basic concepts, and how they are written in C++.

  12. [10/3/02] We did an example of an abstract data type in an object-oriented style. We defined stacks, and wrote a class to implement them. We introduced destructors, and added a destructor to the stack class.

  13. [10/8/02] We looked at an alternative implementation of stacks, using linked lists.

  14. [10/10/02] We discussed programming assignment 3, and how to compute minimal spanning trees.

  15. [10/17/02] We discussed more on programming assignment 3, including how to implement the connection manager.

  16. [10/22/02] We talked about queues and a class that implements queues.

  17. [10/24/02] We went through details of an implementation of queues using an array.

  18. [10/29/02] We discussed programming assignment 4.

  19. [10/31/02] We discussed priority queues, and began to look at heaps.

  20. [11/5/02] We went through details of heaps, including the reheapUp and reheapDown operations.

  21. [11/7/02] We saw how to perform the update operation in heaps, and quantified the efficiency of heaps.

  22. [11/12/02] We began to look at the problem of sorting an array. We used heaps to develop an algorithm that sorts an array of size n in time proportional to n log2(n).

  23. [11/14/02] We continued to look at sorting. We developed the quicksort algorithm, with runs in time n log2(n) in the average case.

  24. [11/19/02] We proved a lower bound for sorting.

  25. [11/21/02] We looked at the searching problem, and explored methods of implementing tables.

  26. [11/26/02] We looked at basic binary search trees, and saw algorithms for lookup and insertion.

  27. [11/28/02] Break.

  28. [12/3/03] Exam 2.