Computer Science 362.01
Data Structures and Algorithms
Spring 2013
Professor Valente
MEETINGS:
MWF 1:30-2:20 in Bagby 020
OFFICE HOURS:
MWR 2:30PM-4:00PM
TEXTBOOK:
Introduction
to the Design an Analysis of Algorithms, 3rd Edition
DESCRIPTION:
This course concerns itself
with the study of algorithms, including how best to design them, how to analyze
them for efficiency and determine whether they are correct. Naturally, many of the historically important
algorithms have been and continue to be strictly numerical in nature (for
example, computing the GCD of two numbers, and performing modular
exponentiation). Of course, the other algorithms we study are important
because the ADTs we design rely heavily on efficient algorithms for their
processing. Thus, in this course, we will look at algorithms and
problem-solving strategies we have studied before, but with an eye towards
careful analysis. With this analysis, we’ll be able to determine whether
or not an algorithm is efficient or even “feasible”, and accurately predict running
times for programs that use these algorithms. The analysis itself will
require a Mathematics “toolbox” so-to-speak, some
basic tools from which we will study early, but some others that we’ll
introduce as needed for particular problems. Finally, this is the course
in which a most important topic is studied in detail: Graph Theory.
Besides satisfying us CS purists by providing a rich data structure with
interesting mathematical properties to study, graphs also provide us with an
important way to model many problems, particularly problems related to
networks. Graphs also provide very good examples of and provide insights
into the study of NP-Complete problems.
GRADING:
In-class exams (March 1st and April 19th)
count 30%.
Homework (which may include programming) counts 30%.
Final Exam (scheduled for Tuesday May 7th at
2PM) counts 25%.
Class Attendance
and Participation counts 15%.
Based on 20 points for class
attendance – each unexcused absence costs you 3 points.
Also based on
30 points for daily problem solving tasks.
For this latter component, you will be
given 0 to 2 points for solving a problem
correctly
[0 = no show / couldn’t get started on it,
1 = good effort but not correct, 2 = correct]
TENTATIVE SCHEDULE:
Week Of
Topic Read
Jan 16th
Course Intro, Analysis
Framework Chapter
1 and Section 2.1.
Jan 21st The
Fundamentals of Algorithm Analysis:
Growth Rates, Analysis
of Iterative Algorithms Sections
2.2 and 2.3
Jan 28th Analysis of Recursive Algorithms,
Solving Recurrences Sections 2.4 and
2.5
Feb 4th, Feb 11th
Brute Force Algorithms Chapter
3
Sorting, Searching, String Matching
Exhaustive Search and DFS, BFS
Feb 18th, Feb 25th
Decrease and Conquer
Algorithms Chapter
4
Binary Search Tree Algorithms
TEST 1 IS ON FRIDAY, MARCH 1st
Mar 4th Divide and Conquer Algorithms Sections 5.1,
5.2
Mergesort
and Quicksort
Mar 18th Binary Tree Traversals Section
5.3
Fast Multiplication Algorithms Section 5.4
Mar 25th Transform
and Conquer Algorithms Section
6.1
Heaps and Heap
Sort Section
6.4
Apr 1st Horner’s Rule and Binary
Exponentiation Section 6.5
Other topics from Chapter 6 (time permitting) Section 6.6
Apr 8th Sorting By Counting, String Matching Sections 7.1, 7.2
Apr 15th Hashing Section
7.3
TEST 2 IS ON FRIDAY, APRIL 19th
Apr 22nd Dynamic
Programming Chapter
8
Apr 29th