Class Lectures and Reading Assignments
CS 51510
Algorithms
Fall, 2024

This page documents what we do in class. It contains Java programs that we will discuss in class, reading assignments, simple homework exercises that you can work on for practice and exam preparation (not for credit), and links to other sources of information.

Today we will look at a couple of more methods in the BinarySearchTree abstract data type and we will also profile the code.

Read Section 14.1 (pages 361 - 372), about dynamic programming, from the course textbook.

Today we will look at the methods in the BinarySearchTree abstract data type.

For next week, read Chapter 13 (pages 331 - 354), about Red-black trees, from the course textbook.

Today we will look at both the BinaryTree abstract data type and the BinarySearchTree abstract data type.

The second mid-term exam is today, in the PNW Testing Center, in SULB 318, at 11:00. Please try to arrive 10 or so minutes early. Be sure to bring your photo ID with you.

For next week, read Chapter 12 (pages 312 - 325), about binary search trees, from the course textbook.

The second mid-term exam will be this Wednesday, October 30. The exam will be held in the PNW Testing Center, in SULB 318, at 11:00. Please try to arrive 10 or so minutes early. Be sure to bring your photo ID with you. I will be there in the Testing Center while you take the exam.

Here is the collection of review problems for the exam.

Remember that the second mid-term exam will be one week from today, on October 30. Here is the complete collection of review problems.

Today we will look at examples of manipulating binary tree data structures.

Read Section 10.3 (pages 265 - 267) about the tree data structure from the course textbook.

Read Sections 12.1, 12.2, 12.3, and 12.4, about binary trees, from the following chapter.

Here is a nice overview of trees.

Today we will look at the detailed implementations of a hash table in the sub-folder HashTable.

Here is one more overview of hashing. Read Sections 9.4.1 and 9.4.2 from the following book.

The second mid-term exam will be two weeks from today, on October 30. The following link is a collection of review problems.

Here is another elementary explanation of hashing. Read Sections 48.1 - 48.4, 48.6, 48.7, and 48.8 from the following chapter.

Read Sections 16.1, 16.2, 16.3, and 16.4, about hash tables, from the following chapter.

Also read Sections 15.1, 15.3, and 14.4, about the Set and Map abstract data types, from the following chapter.

Today we will look at an implementation of a hash table.

For next week, read Chapter 11, Sections 11.1, 11.2, 11.3 (pages 272 - 292) about hash tables, from the course textbook.

Today we will finish the List abstract data type.

No classes today. Fall break.

For next Wednesday, read Chapter 11, Sections 11.1, 11.2, 11.3 (pages 272 - 292) about hash tables, from the course textbook. There's no class on Monday because of Fall Break.

Today we will talk about the List abstract data type.

Read the first two tutorials about the Java Collections Framework.

Read Chapter 10 (pages 248 - 271), about elementary data structures (array, stack, queue, list, tree), from the course textbook.

We will use the example of linked-list vs. List to introduce the difference between data structure and abstract data type.

The first mid-term exam is today, in the PNW Testing Center, in SULB 318, at 11:00. Please try to arrive 10 or so minutes early. Be sure to bring your photo ID with you.

For next week, read Chapter 10 (pages 248 - 271), about elementary data structures (array, stack, queue, list, tree), from the course textbook.

The first mid-term exam will be this Wednesday, September 25. The exam will be held in the PNW Testing Center, in SULB 318, at 11:00. Please try to arrive 10 or so minutes early. Be sure to bring your photo ID with you. I will be there in the Testing Center while you take the exam.

Here is a collection of review problems for the exam.

The first mid-term exam will be one week from today. Here is a collection of review problems for the exam.

The heap_sort sub-folder of the following zip file contains an implementation of the Heapsort algorithm.

Here are the heapsort notes that we used in class.

Here are the versions of buildMaxHeap() and maxHeapify() that we used in class.

Read pages 18 and 19 about QuickSort in Chapter 14, Sorting and Searching.

The quick_sort sub-folder of the following zip file contains implementations of the QuickSort algorithm.

Here is a list of high quality, free, online textbooks about Data Structures and Algorithms.

The first mid-term exam will be two weeks from today. Here is a collection of review problems for the exam.

For next week, read Sections 8.1, 8.2, 8.3, and 8.4 (pages 161 - 172) about the heapsort algorithm from the course textbook.

Read the Introduction to Part II of the course textbook (pages 156 - 160).

Read Sections 7.1, 7.2, and 7.3 (pages 182 - 192) about the quicksort algorithm from the course textbook.

Today we will look at this Java code that does generic sorting.

Read Section 14.8 (generic sorting) from Chapter 14, Sorting and Searching.

Read the following chapter about generically sorting a list of key-value pairs.

Read the following review of what a Java interface is.

Here is some example Java code that does generic sorting.

No class. Labor day.

For next week, read Sections 3.1 and 3.2 (pages 49 through 62) from the course textbook.

And read Sections 3.1, 3.2, and 3.3 (pages 53 through 62) from Data Structures & Algorithm Analysis.

Read Section 2.2 (analyzing insertion sort) from the course textbook (pages 25 through 33).

Read Section 2.3.2 (analyzing merge sort) from the course textbook (pages 39 through 44).

Read Section 14.5 (analyzing merge sort) from Chapter 14, Sorting and Searching.

Read this one paragraph analysis of merge sort.

For today, read Sections 14.1, 14.2, and 14.3 about the selection sort algorithm from the following chapter.

Read the following chapter about the bubble sort algorithm.

We will continue to discuss the code in the following zip file.

For next week, read Section 2.3 from the course textbook (pages 34 through 39) about the merge sort algorithm. Also read Sections 14.4 and 14.5 about merge sort from Chapter 14, Sorting and Searching.

Read Chapter 1 and Section 2.1 from the course textbook (pages 5 through 25).

We will discuss the code in the following zip file.

Read this introductory chapter about sorting algorithms.