The objectives of this course are:
- Demonstrating the importance
of the analysis and design of algorithms.
- Teaching mathematical tools
used in the analysis and evaluation of algorithms.
- Teaching important classes
of algorithms. These are mainly the brute-force, greedy,
divide-and-conquer, backtracking, branch-and-bound,
heuristics, and numerical approximation algorithms.
- Familiarizing students with
common concrete examples of algorithms taken from
different applications such as searching, sorting, tree
traversal, finding the shortest paths, scheduling,
optimization, graph traversal, graph exploration (backtracking
and branch-and-bound), and numerical approximation.
- Explain the distributed
paradigm, consensus, and leader election.
- Distinguish between logical
and physical clocks, and describe the relative ordering
of events in a distributed algorithm.
The main topics covered in this
course are:
- An introduction to
algorithms: basic definitions, approximate algorithms,
and heuristics. Simple examples.
- Efficiency of algorithms;
average and worst-case analyses; elementary operations;
examples.
- Asymptotic notation; Big O,
Little o, Omega and Theta notations.
- Analysis of control
structures and simple algorithms.
- Deducing recurrence
relations that describe the time complexity of
recursively defined algorithms, and solving them.
- Some data structures:
graphs, trees, associative tables, heaps, and binomial
heaps.
- Brute-force algorithms.
- Greedy Algorithms.
- Divide-and Conquer
algorithms.
- Backtracking and branch-and-bound
algorithms.
- Numerical approximation
algorithms.
- Definition and
characteristics of distributed systems.
- Consensus and leader
election in distributed systems.
- The logical ordering of
events in distributed systems.
Textbooks:
- Fundamentals of
Algorithmics, Gilles Brassard and Paul Brately,
Prentice-Hall International, 1996.
- Distributed Operating
Systems , Tanenbaum Andrew, Prentice-Hall,
1995.
References:
- Designing and
Building Parallel Programs, Ian Foster, Addison-Wesley,
1995.
There are two tests, one final
exam, and about 10 homeworks consisting of approximately 30 to 40
problems and exercises. Students are to submit their homeworks to
their instructor using Email. A randomly selected subset of the
homeworks will be graded. Students are encouraged to cooperate,
but the homeworks are to be prepared and submitted individualy.
The tests and final exams strongly depend on the homeworks.
The evaluation components defined
above will carry the following weights:
- Test 1: 20%
- Test 2: 20%
- Homeworks: 10%
- Final Exam: 50%
The following
information was Extracted from ACM Computing Curricula 2001 on
the Internet
Algorithms and
Complexity (AL)
Algorithms are
fundamental to computer science and software engineering. The
real-world performance of any software system depends on only two
things: (1) the algorithms chosen and (2) the suitability and
efficiency of the various layers of implementation. Good
algorithm design is therefore crucial for the performance of all
software systems. Moreover, the study of algorithms provides
insight into the intrinsic nature of the problem as well as
possible solution techniques independent of programming language,
programming paradigm, computer hardware, or any other
implementation aspect.
An important part of
computing is the ability to select algorithms appropriate to
particular purposes and to apply them, recognizing the
possibility that no suitable algorithm may exist. This facility
relies on understanding the range of algorithms that address an
important set of well-defined problems, recognizing their
strengths and weaknesses, and their suitability in particular
contexts. Efficiency is a pervasive theme throughout this area.
AL1. Basic
algorithmic analysis [core]
Minimum core
coverage time: 4 hours
Topics:
- Asymptotic analysis of upper
and average complexity bounds
- Identifying differences
among best, average, and worst case behaviors
- Big O, little o, omega, and
theta notation
- Standard complexity classes
- Empirical measurements of
performance
- Time and space tradeoffs in
algorithms
- Using recurrence relations
to analyze recursive algorithms
Learning objectives:
- Explain the use of big O,
omega, and theta notation to describe the amount of work
done by an algorithm.
- Use big O, omega, and theta
notation to give asymptotic upper, lower, and tight
bounds on time and space complexity of algorithms.
- Determine the time and space
complexity of simple algorithms.
- Deduce recurrence relations
that describe the time complexity of recursively defined
algorithms.
- Solve elementary recurrence
relations.
AL2. Algorithmic
strategies [core]
Minimum core
coverage time: 6 hours
Topics:
- Brute-force algorithms
- Greedy algorithms
- Divide-and-conquer
- Backtracking
- Branch-and-bound
- Heuristics
- Pattern matching and string/text
algorithms
- Numerical approximation
algorithms
Learning objectives:
- Describe the shortcoming of
brute-force algorithms.
- For each of several kinds of
algorithm (brute force, greedy, divide-and-conquer,
backtracking, branch-and-bound, and heuristic), identify
an example of everyday human behavior that exemplifies
the basic concept.
- Implement a greedy algorithm
to solve an appropriate problem.
- Implement a divide-and-conquer
algorithm to solve an appropriate problem.
- Use backtracking to solve a
problem such as navigating a maze.
- Describe various heuristic
problem-solving methods.
- Use pattern matching to
analyze substrings.
- Use numerical approximation
to solve mathematical problems, such as finding the roots
of a polynomial.
AL3. Fundamental
computing algorithms [core]
Minimum core
coverage time: 12 hours
Topics:
- Simple numerical algorithms
- Sequential and binary search
algorithms
- Quadratic sorting algorithms
(selection, insertion)
- O(N log N) sorting
algorithms (Quicksort, heapsort, mergesort)
- Hash tables, including
collision-avoidance strategies
- Binary search trees
- Representations of graphs (adjacency
list, adjacency matrix)
- Depth- and breadth-first
traversals
- Shortest-path algorithms (Dijkstra's
and Floyd's algorithms)
- Transitive closure (Floyd's
algorithm)
- Minimum spanning tree (Prim's
and Kruskal's algorithms)
- Topological sort
Learning objectives:
- Implement the most common
quadratic and O(NlogN) sorting algorithms.
- Design and implement an
appropriate hashing function for an application.
- Design and implement a
collision-resolution algorithm for a hash table.
- Discuss the computational
efficiency of the principal algorithms for sorting,
searching, and hashing.
- Discuss factors other than
computational efficiency that influence the choice of
algorithms, such as programming time, maintainability,
and the use of application-specific patterns in the input
data.
- Solve problems using the
fundamental graph algorithms, including depth-first and
breadth-first search, single-source and all-pairs
shortest paths, transitive closure, topological sort, and
at least one minimum spanning tree algorithm.
- Demonstrate the following
capabilities: to evaluate algorithms, to select from a
range of possible options, to provide justification for
that selection, and to implement the algorithm in
programming context.
AL4. Distributed
algorithms [core]
Minimum core
coverage time: 3 hours
Topics:
- Consensus and election
- Termination detection
- Fault tolerance
- Stabilization
Learning objectives:
- Explain the distributed
paradigm.
- Explain one simple
distributed algorithm.
- Determine when to use
consensus or election algorithms.
- Distinguish between logical
and physical clocks.
- Describe the relative
ordering of events in a distributed algorithm.
AL5. Basic
computability [core]
Minimum core
coverage time: 6 hours
Topics:
- Finite-state machines
- Context-free grammars
- Tractable and intractable
problems
- Uncomputable functions
- The halting problem
- Implications of
uncomputability
Learning objectives:
- Discuss the concept of
finite state machines.
- Explain context-free
grammars.
- Design a deterministic
finite-state machine to accept a specified language.
- Explain how some problems
have no algorithmic solution.
- Provide examples that
illustrate the concept of uncomputability.
AL6. The
complexity classes P and NP [elective]
Topics:
- Definition of the classes P
and NP
- NP-completeness (Cook's
theorem)
- Standard NP-complete
problems
- Reduction techniques
Learning objectives:
- Define the classes P and NP.
- Expsignificance of NP-completeness.
- Prove that a problem is NP-complete
by reducing a classic known NP-complete problem to it.
AL7. Automata
theory [elective]
Topics:
- Deterministic finite
automata (DFAs)
- Nondeterministic finite
automata (NFAs)
- Equivalence of DFAs and NFAs
- Regular expressions
- The pumping lemma for
regular expressions
- Push-down automata (PDAs)
- Relationship of PDAs and
context-free grammars
- Properties of context-free
grammars
- Turing machines
- Nondeterministic Turing
machines
- Sets and languages
- Chomsky hierarchy
- The Church-Turing thesis
Learning objectives:
- Determine a language's
location in the Chomsky hierarchy (regular sets, context-free,
context-sensitive, and recursively enumerable languages).
- Prove that a language is in
a specified class and that it is not in the next lower
class.
- Convert among equivalently
powerful notations for a language, including among DFAs,
NFAs, and regular expressions, and between PDAs and CFGs.
- Explain at least one
algorithm for both top-down and bottom-up parsing.
- Explain the Church-Turing
thesis and its significance.
AL8. Advanced
algorithmic analysis [elective]
Topics:
- Amortized analysis
- Online and offline
algorithms
- Randomized algorithms
- Dynamic programming
- Combinatorial optimization
Learning objectives:
- Use the potential method to
provide an amortized analysis of previously unseen data
structure, given the potential function.
- Explain why competitive
analysis is an appropriate measure for online algorithms.
- Explain the use of
randomization in the design of an algorithm for a problem
where a deterministic algorithm is unknown or much more
difficult.
- Design and implement a
dynamic programming solution to a problem.
AL9.
Cryptographic algorithms [elective]
Topics:
- Historical overview of
cryptography
- Private-key cryptography and
the key-exchange problem
- Public-key cryptography
- Digital signatures
- Security protocols
- Applications (zero-knowledge
proofs, authentication, and so on)
Learning objectives:
- Describe efficient basic
number-theoretic algorithms, including greatest common
divisor, multiplicative inverse mod n, and raising to
powers mod n.
- Describe at least one public-key
cryptosystem, including a necessary complexity-theoretic
assumption for its security.
- Create simple extensions of
cryptographic protocols, using known protocols and
cryptographic primitives.
AL10. Geometric
algorithms [elective]
Topics:
- Line segments: properties,
intersections
- Convex hull finding
algorithms
Learning objectives:
- Describe and give time
analysis of at least two algorithms for finding a convex
hull.
- Justify the Omega(N log N)
lower bound on finding the convex hull.
- Describe at least one
additional efficient computational geometry algorithm,
such as finding the closest pair of points, convex
layers, or maximal layers.
AL11. Parallel
algorithms [elective]
Topics:
- PRAM model
- Exclusive versus concurrent
reads and writes
- Pointer jumping
- Brent's theorem and work
efficiency
Learning objectives:
- Describe implementation of
linked lists on a PRAM.
- Use parallel-prefix
operation to perform simple computations efficiently in
parallel.
- Explain Brent's theorem and
its relevance.
- December 15, 2001
Stanford University:
161. Design and Analysis of
Algorithms-Efficient algorithms for sorting, searching, and
selection.Algorithm analysis: worst and average case analysis.
Recurrences and asymptotics. Data structures: balanced trees,
heaps, etc. Algorithm design techniques: divide-and-conquer,
dynamic programming, greedy algorithms, amortized analysis.
Algorithms for fundamental graph problems, e.g., depth-first
search, connected components, topological sort, shortest paths.
Possible topics: network flow, string searching, parallel
computation. Prerequisite: 103 or 109, Statistics 116.
*4 units, Aut (Plotkin), Win (Guibas)
Fall 2002/2003
Ismail Ababneh,
Acting Dean of the IT College
Dean's Office, Information Technology College
Office Hours: 12-1 Sunday; 9-10 Tuesday and Thursday;
8:15 to 9:15 Monday
Office phone
(962) 6 4871101 ext 3351
Electronic mail address
cs340@alalbayt.aabu.edu.jo
Last revised: 29-10-2002.