Algorithms

Spring 2013
course
navigation

assignments

  due Tue Jan 29

getting started

  due Tue Feb 5

algorithm analysis

  due Tue Feb 12

data structures 101

# with a python object classes, and instances of something as nodes tree = BinaryTree() tree.insert(string) true_or_false = tree.contains(string)
or
# with python dictionaries as nodes tree = binary_tree() insert(tree, string) true_or_false = contains(tree, string)
(You do *not* need to balance the tree.) Hint: use alphabetic ordering and recursion to traverse the tree. For example, inserting "cat", "dog", "alpha", "beta" could give
cat / \ alpha dog / \ beta
  due Tue Feb 19

sorting

  due Tue Feb 26

graph basics

Here is a tree
and a cyclic graph
Pick any node, call it X. From X, do a depth-first search, and from that find the maximum depth and a vertex furtherst down, call it A. Now starting at A, do another depth first search, and find the deepest node from A, call it B. Return the diameter (we hope) as the depth from A to B.
Consider running this on a tree (an acyclic undirected connected graph) and a cyclic graph, like the two illustrated above. Does the algorithm work in either of these cases? Explain why you think so. What is it's O() behavior? Extra credit: prove your claim in both cases.
  due Tue Mar 5

midterm

  due Fri Mar 15

shortest path

  due Tue Apr 9

search

  due Tue Apr 16

game search

  due Tue Apr 23

final project proposal

  due Tue Apr 30

crypto

  due Fri May 10

final projects

 

course grade

http://cs.marlboro.edu/ courses/ spring2013/algorithms/ special/assignments
last modified Tuesday May 7 2013 1:20 am EDT