Definition In simple terms, an algorithm is a series of instructions to solve a problem (complete a task) We focus on Deterministic Algorithms Under the same input it must produce the same output input Algorithm output Well defined sequence of computer instructions
Two Key Properties Correctness Efficiency Time CPU # of instructions An algorithm is correct if under all valid inputs, it produces the correct output Efficiency Same problem can have many ways (algorithms) to solve it Which one is more efficient? Efficiency means: How long will it take? How much storage will it need? Time CPU # of instructions Storage Space Memory
Representative Problems CS223 Algorithms D-Term 2013 Representative Problems
Problem Family I: Sorting Input A list of unsorted values Output The corresponding sorted list The algorithm must know how to compare values (<, =, or >)
Problem Family II: Searching Input A list of values L, and a key (single value) K Output The position in L that contain K (if exists) Search for 33? Search for C? Will it make a difference if the list is sorted ???
Problem Family III: Trees Input A tree of values Different problems Traverse the tree and list the values Search for a value in the tree Deletion from or insertion into the tree Can you notice a certain order in this tree? Binary Search Tree Left smaller than Right greater than Binary Tree
Problem Family IV: Graphs Input A graph of values G Different problems Traverse the graph Searching for a value in the graph Shortest path from one node to another What is the shortest path from F to B? What is the shortest path from F to all other nodes? Find a minimum spanning tree?
Problem Family V: String Processing Input One or multiple strings Different problems Search for one string in another Edit distance between strings String alignment Search for sentence “algorithms are fun” Find the smallest difference between this document and another document
Too Many Others Protein networks Scheduling problem Greatest Common Divisor (GCD) DNA sequence alignment Nearest neighbor (closest gas station to me) Matrix multiplication
Course Outline (What You Will Learn) Algorithmic Strategies and Methodologies Tree and graph traversal, Greedy Algorithms, Dynamic Programming, Divide and Conquer Problem Types/Families Sorting, Searching, Graph and Tree Algorithms, Scheduling and Optimization, String Processing Algorithms on Different Data Structures Arrays, Trees, Queues, Graphs, Strings, Hash Tables, Linked Lists Analysis and Evaluation Coding and running algorithms, Analytical analysis using big-O notation
CS223 Algorithms D-Term 2015 Course Logistics
Textbook Required Introduction to Algorithms T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein. Third Edition, MIT Press, 2009.
Course Logistics Website: http://web.cs.wpi.edu/~cs2223/d15 Electronic WPI system: blackboard.wpi.edu Lectures MTRF (2:00pm - 2:50pm) Grading All assignments are done individually
Scheduling Scheduling for assignments, exams, and quizzes Visit the website: http://web.cs.wpi.edu/~cs2223/d15
Course Management Course Webpage: Homework/Project submissions Electronically on blackboard.wpi.edu (Required) Viewing Grades On blackboard.wpi.edu
Office Hours Posted on the course web page Covers most days of the week Make use of them– they are there for YOU !
Programming Language In assignments, use Python In lectures, I will use pseudocode closer to Python