Prerequisites: CS210 and CS240 and Math140.
StartEnd Dates: 5/31/2016 – 7/28/2016
Instructor: Joseph Paul Cohen ( joecohen at cs.umb.edu )
Teaching Assistant: Mark N. Vu (spark799 at cs.umb.edu)
Office Location: S3159
Office Hours: Tuesday 45pm
Course Room: W2126
Meeting Time: MoTuTh 6:00PM – 7:30PM
Lab/Recitation Location: Web Lab Map
Lab/Recitation Hours: Tuesday 8pm – 9pm
Piazza: https://piazza.com/class/ioq32zcwzvr2wx
DESCRIPTION
A systematic study of the methods of structuring and manipulating data in computing. Abstract data types. The design and analysis of algorithms. Advanced techniques for program development and organization. The language of instruction is Java.
PREREQUISITES
 CS 210, fluency in Java, knowledge of stacks, queues, binary search trees, and sorting
 CS 240, knowledge of C, static and dynamic memory allocation
 Math 140, Calculus I, knowledge of limits and summations.
COURSE OUTCOMES
 Demonstrate a familiarity with major algorithms and data structures.
 Apply important algorithmic design paradigms and methods of analysis.
 Synthesize efficient algorithms in common engineering design situations.
 Understand the difference between tractable and intractable problems, and be familiar with strategies to deal with intractability.
 Analyze worstcase running times of algorithms using asymptotic analysis. Compare the asymptotic behaviors of functions obtained by elementary composition of polynomials, exponentials, and logarithmic functions. Describe the relative merits of worst, average, and bestcase analysis.
 Explain the basic properties of randomized algorithms and methods for analyzing them. Recite algorithms that employ randomization. Explain the difference between a randomized algorithm and an algorithm with probabilistic inputs.
 Describe the greedy paradigm and explain when an algorithmic design situation calls for it. Recite algorithms that employ this paradigm. Synthesize greedy algorithms, and analyze them.
 Describe the divideandconquer paradigm and explain when an algorithmic design situation calls for it. Recite algorithms that employ this paradigm. Synthesize divideandconquer algorithms. Derive and solve recurrences describing the performance of divideandconquer algorithms.
 Describe the dynamicprogramming paradigm and explain when an algorithmic design situation calls for it. Recite algorithms that employ this paradigm. Synthesize dynamic programming algorithms, and analyze them.
 Explain the major graph algorithms and their analyses. Employ graphs to model engineering problems, when appropriate. Synthesize new graph algorithms and algorithms that employ graph computations as key components, and analyze them.
 Explain the concept and basic examples of basing cryptographic security on hard computational problems
TEXTBOOKS
Required  Algorithm Design by Jon Kleinberg and Éva Tardos. AddisonWesley 2005, ISBN 9780321295354. 

Recommended 
This book will serve as a reference for the CS210 prerequisite. Algorithms (4th Edition) by Robert Sedgewick and Kevin Wayne ISBN: 9780321573513 

Recommended 
This book will serve as a reference for the CS210 prerequisite. Java Structures: Data Structures in Java for the Principled Programmer by Duane Bailey ISBN 9780072399097 
RESOURCES
Eclipse IDE
Download Eclipse Neon (Latest Milestone Release)
Download Eclipse (Current Public Release)
Eclipse Java Demo Video
Eclipse GIT Demo Video
Linux
UNIX Tutorial for Beginners
Basic Linux and Package Management
Algorithm/Data Structure Visualizations
USFCA Algorithm Visualizations
Sorting At
Visual Go
GRADING POLICIES
Exams (3 total, lowest grade is dropped):  55% 
Projects:  25% 
Homeworks:  20% 
TURNING IN WORK
Turn in work by sshing into users.cs.umb.edu and entering your cs310 directory. You can scp your work as well. Any issues email operator at cs.umb.edu from your cs.umb.edu account. For an account go to the UNIX/Linux lab (S3159) and ask for the operator.
FILE FORMATS
I will only accept ASCII or UTF text (.txt,.java,.html,.tex …) files or pdf files.
LATE ASSIGNMENTS
I will only allow one late assignment. This assignment can be turned in anytime before the last class. You can change which assignment you turn in late if you would rather receive the points for a different assignment. For example you can use your late assignment on a homework and then if you are late on a project (worth more points) you can use the late assignment to turn in the project instead. Note: You will them receive no points for the homework.
COLLABORATION ON HOMEWORKS
You are encouraged to discuss homeworks with other students. Please only assist other students in finding the answer. Do not give answers to anyone. If you discussed a homework with someone document this on your homework.
ACADEMIC DISHONESTY
The penalty for cheating is extremely severe. It can result in an F in this course. Cheating consists of, but not limited to:
– Using or copying a person’s work (outside class or class member) on an exam or assignment in any fashion.
– Allowing your own work to be copied or used by another person.
– Submitting as your own work something that has been written by another person.
– Using any unauthorized reference on an exam or assignment.
– Not acknowledging in writing on an assignment any help you have received.