CS 3343 Analysis of Algorithms
Spring 08


Class Description

From the catalog: This course is to provide an introduction to the design and analysis of computer algorithms. The students will learn how to analyze the performance of computer algorithms, and programming techniques and data structures used in the writing of effective algorithms.

 

We will discuss classic algorithm design strategies (e.g., divide-and-conquer, dynamic programming, greedy approaches), data structures (e.g., hash tables, binary search trees), classic problems (e.g., sorting, knapsack problem, scheduling, graph-related problems) and the classic algorithms to solve them. We will also analyze algorithm complexity throughout, and touch on issues of tractibility such as NP-Completeness.

Objectives: to learn and apply techniques for the design and analysis of algorithms.

Prerequisites: CS 2413, CS 3233, MAT 2213

Time & Place: Mondays, Wednesdays 4:00pm - 5:15pm, SB 3.02.10A

Textbooks:

Instructor:

Teaching Assistant:

Yifeng Guo
E-mail: yguo at cs dot utsa dot edu

Office hours: Tuesdays & Thursdays 4-5pm @ SB3.01.04

Recitation sessions: Monday 5:30-6:20pm @ SB 3.02.10A

Schedule (tentative):

Week

Date

Topic

Notes

Reading

Assignment

Due

Misc

1

1/14

Introduction, administration

Slides

Ch 1,2

 

 

 

1/16

Basics, asymptotic notation

Slides

Ch 3

Hw1 solution stats

 

 

2

1/21

Holiday

 

 

 

 

 

1/23

Asymptotic notation

Slides

Ch 3

Hw2 solution stats

Hw1

How to prove big O using definition

3

1/28

Analyzing non-recursive algorithms

Slides

Ch 4

 

 

 

1/30

Analyzing non-recursive algorithms

Slides

Ch 4

Hw3 solution stats

Hw2

 

4

2/4

Analyzing recursive algorithms

Slides

Ch 4

 

 

 

2/6

Analyzing recursive algorithms

Slides

Ch 4

Hw4 solution stats

Hw3

 

5

2/11

Master theorem

Slides 

Ch 4

 

 

 

2/13

Master theorem, Review (weeks 1-4)

Slides 

Ch 1-4

 

Hw4

 

6

2/18

Exam 1  (covers weeks 1 – 5)

 

 

stats solution (Thanks to Deepthi and Henry)

 

 

2/20

Review of exam, Quick Sort

Slides

Ch 7

 

 

 

7

2/25

Quick sort

Slides 

Ch 7

Hw5 solution

 

 

2/27

Heap sort, Priority queue

Slides 

Ch 6

 

 

 

8

3/3

Heap sort, Priority queue

Slides 

Ch 6

 

 

 

3/5

Linear time sorting algorithms

Slides 

Ch 8

Hw6 solution

Hw5

 

9

3/10

Order Statistics

Slides 

Ch 9

 

 

 

3/12

Dynamic programming

Lecture 

Recruitment 

Ch 15 

 

Hw6

 

10

3/17

Spring break

3/19

11

3/24

Dynamic programming

Slides (updated)  

 

Hw7 Solution

 

 

3/26

Dynamic Programming

Slides  

Ch 15

 

 

 

12

3/31

Greedy Algorithm

Slides  

Ch 16

 

Hw7

 

4/2

Exam 2 (up to 3/24)

   

Solution Stats

 

 

13

4/7

Elementary graph algorithms

Slides  

Ch 22

Hw8 Solution

 

 

4/9

Minimum spanning tree

Slides

Ch 23

 

 

 

14

4/14

 

Slides

 

 

 

4/16

Shortest paths

 

Slides

Ch 24, 25

Hw9 Solution

Hw8

 

15

4/21

Graph search, topological sort

Slides

 

 

 

4/23

N/NP

Slides

 

 

Hw9

 

16

4/28

Final review

Slides

       

4/30

String matching

Slides

       

 

 

Final: May 09, Friday, 01:30 pm - 04:00 pm

Solution

 

 

 

 

Grading:

     Exam 1 15% 
     Exam 2 15% 
     Final Exam 30% 
     Lab Work 10% 
     Homework plus programming projects 30 %

No grades will be dropped.  Exams cannot be made up, cannot be taken early, and must be taken in class at the scheduled time.  There will be no make up exams. The grade that you obtain for the course will also serve as the grade for the lab.

Since your grade is partially based on computer and homework assignments, they must be your own work. You can ask me questions about any aspect of an assignment and pursue general discussions with others on the system or on an approach to solving a problem. You may discuss high-level ideas and thoughts about a homework assignment with your other classmates, but you have to work out all details of any solutions discussed and write up the solution completely on your own. In particular, when working with a student on an assigned homework problem you should do so verbally -- Nothing should be written. This is aimed at keeping your discussion at a high level so everyone can work out the details on their own. Please follow the spirit of this rather than working to finds ways to share details verbally. Also you must clearly acknowledge anyone (except the instructor and TA) with whom you discussed any problem and say briefly what you discussed.

You are not allowed to read, copy, or rewrite the solutions written by others (in this or previous terms). Copying materials from websites, books or other sources is considered equivalent to copying from another student.

Every cheating (for example, copy homework solutions from the web, friends or other textbooks) will be reported to the office of academic integrity. If two people are caught sharing solutions then both the copier and copiee will be held equally responsible. Cheating on an exam will result in failing the course.

It is your responsibility to contact me in a timely manner if there are extenuating circumstances that impact your ability to perform in this class. Your grade is 'not given' by the instructor, but rather is earned by you through demonstrating your mastery of the subject.


Last modified by Jianhua Ruan,   jruan at cs.utsa.edu ,