Datateknik D3-2006
Aalborg University| Computer Science Dpt.| Control Engineering Dpt.
Home| Course
Course
› Schedule › Lecture 1 › Lecture 2 › Lecture 3 › Lecture 4 › Lecture 5 › Lecture 6 › Lecture 7 › Lecture 8 › Lecture 9 › Lecture 10
Home
› Welcome ! › Prerequisites › Course Topic › Course Ojectives › Text Books › Additional Material › Fun Challenges › Course Grading › Contact

Schedule

Lecture Title Date Time Room
1 Introduction, Growth of Functions 10/10 12h30-16h B2-109
2 Representing and Manipulating Numbers 13/10 8h15-12h B2-109
3 Recurrences 24/10 12h30-16h B2-109
4 Probabilistic Analysis and
Randomized Algorithms
27/10 8h15-12h B2-109
5 Extra Material, Sorting 31/10 12h30-16h B2-109
6 Extra Material, Sorting 3/11 8h15-12h B2-109
7 Sorting in Linear Time
Data Structures
7/11 12h30-16h B2-109
8 Extra Material, Hashing and Hash Tables 10/11 8h15-12h B2-109
9 Binary Search Trees, Red-Black Trees 14/11 12h30-16h B2-109
10 Red-Black Trees, String Matching,
Solutions to implementation Exercises
17/11 8h15-12h B2-109

Since this course is supposed to help you for your projects, you are highly encouraged to ask for specific subjects you want to learn about, as long as they are in the scope of this course :). Concerning the solutions to the exercises: You are supposed to find them and I will help you during the exercise sessions. Only some solutions will be provided on this web page.

Lecture 1 : Introduction, Growth of Functions

Abstract: Basic introduction to algorithm design, correctness of algorithms, analysis of algorithms, and asymptotic behaviours. Note: I will come back to chapter 2 when I treat sorting to avoid being redundant.

Reading: Chapters 1 and 3.

Material: lecture slides.

Exercises: pdf.

Suggested solutions: pdf.

Lecture 2 : Representing and Manipulating Numbers

Abstract: Binary representation of integers and floats, implementation of basic operations (in processors), basic arithmetics on integers and some applications, limits of the representation (integers and floats), and optimization issues.

Reading: A chapter related to binary representation in any reasonable architecture book. The choosen course book for architecture, or one of the additional listed books is fine. Ask at the library or borrow one from me.

Material: Slides pdf.

Exercises: Exercises of lecture 1: We make the deal that you try exercises of section 4 and then you check if you understand the solution of section 5. Don't cheat. Then you do these exercises on numbers: pdf.

Lecture 3 : Recurrences

Abstract: Introduction to recurrences and some techniques to solve them such as the substitution method, the recursion tree method, and the master method.

Reading: Chapter 4 and read again section 3.2.

Material: slides.

Exercises: Finish the exercises on numbers from last time.

Solution: Suggested solution to the RGB exercise rgb.c.

Lecture 4 : Probabilistic Analysis and Randomized Algorithms

Abstract: Introduction to counting, probabilities, and randomized algorithms.

Reading: Chapter 5 and appendices A and C.

Material: slides.

Exercises: (on recurrences, previous lecture)

Solution: suggested solution.

Lecture 5 : Extra Material, Sorting

Abstract: Some extra material on computing polynomials and sorting algorithms (bubble sort, selection sort, insertion sort, merge sort, quicksort).

Reading: Chapters 2 and 7.

Material: polynomials and sorting slides.

Exercises:

Lecture 6 : Extra Material, Sorting

Abstract: Heapsort, powering numbers, and Fibonacci revisited.

Reading: Chapter 6.

Material: powering numbers and sorting (cont.) slides.

Exercises (many but short and simple):

Solution: suggested solution for 7.2-b.

Lecture 7 : Sorting in Linear Time, Data Structures

Abstract: Previous sorting algorithms were comparison sorts, here we study other kinds of sorts (counting, radix, and bucket sorts), and basic dynamic data structures such as stacks, queues, and linked lists.

Reading: Chapters 8 and 10.

Material: sorting in linear time and data structures slides.

Exercises:

Lecture 8 : Extra Material, Hashing and Hash Tables

Abstract: Introduction to hash functions and hash tables. The problem is to store or retrieve data in a dictionary data structure implemented efficiently as a hash table. Presentation of suggested solutions to the implementation of the different sorting algorithms. Extra material: the linux scheduling algorithm in O(1).

Reading: Chapter 11.

Material: hashing and hash tables and linux O(1) scheduler slides.

Exercises:

Solution: suggestion for 8.1-2.
Suggested implementations for the

Lecture 9 : Binary Search Trees, Red-Black Trees

Abstract: Introduction to binary search trees that can be used as dictionary or priority queues, and a particular search tree structure (red-black tree) that has the property to keep the tree balanced. Also extra material on searching/exploring state-spaces.

Reading: Chapters 12 and 13. Sections 22.1, 22.2, 22.3 for those interesting in searching. Wikipedia on red-black trees.

Material: (general) searching/exploring, binary search, binary search trees, and red-black trees slides.

Exercises:

Lecture 10 : Red-Black Trees, String Matching, Solutions to Implementation Exercises.

Abstract: Extra material on findind shortest paths, string matching, finish red-black trees, presentation of solutions for the previous implementation exercises (if time left).

Reading: Wikipedia page on string searching and Chapter 32.

Material: Previous slides on red-black trees, shortest-paths slides, and string matching slides.

Exercises: