Data Structures & Algorithms Richard Newman
Clip Art Sources s s s s Initial design from Sahni’s course, modified greatly by Newman for Sedgewick’s book
What The Course Is About s Data structure: representation and storage of data. s Algorithm: method for solving a problem s Programs represent data s Programs use algorithms to manipulate those data
What The Course Is About Algorithm design methods needed to develop programs that do the data manipulation. The study of data structures and algorithms is fundamental to Computer Science.
Prerequisites s Asymptotic Complexity Big Oh, Theta, and Omega notations s C++ s Discrete Structures, Calculus
Web Site s s s Handouts, syllabus, text, source codes, exercise solutions, lectures, assignments, past exams, past exam solutions, TAs, etc. s Check twice weekly (48 hr apart)
Instructor s Dr. Richard “Dr. Nemo” Newman (nemo) s s Office hours: MWF 10:30-11:30 s Office: CSE-E346
Teaching Assistants s TA location: CSE-E309 s Md Mahmudul Hasan (mmhasan) s Office hours: M 10 th, T 9 th & 10 th s Rahul Prabhu (rprabhu) s Office hours: TBD
Assignments s Assignment guidelines s Submission procedures
Discussion Sections s Required to attend your section s TA may present a small problem that you are to do during discussion s TA may go through exercises from the book s TA will answer your questions
Goals s Devise and analyze algorithms and data structures to solve moderately hard problems s Correctly develop, document, and test programs to implement those algorithms and data structures
Roadmap s Fundamentals s Data Structures s Sorting s Searching s Graph Algorithms s Odds and Ends
Grades s 15% for quizzes s 5% for homeworks s 35% for projects s 15% for each exam (3 exams)
Grades (Rough Cutoffs) s A >= 80% s B+ >= 75% s B >= 70% s C+ >= 65% s C >= 60% s D+ >= 55% s D >= 50%
Why Study Algorithms? s We are in the information age! s Information = data with interpretation s Algorithms allow us to manipulate the data to obtain desired information s Effect of algorithm is huge – on time, on space, on power; and on information! s Impact of algorithms in all facets of science, medicine, law, engineering, art, music, business, and life
Why Study Algorithms? s Study of algorithms at least as old as Euclid ca. 300 BC s The name derives from a ca. AD 825 Arabic mathematician, Muhammed ibn al-Khwarizmi s Formalized by Church and Turing in 1930’s s Some important algorithms were discovered by undergraduates in a class just like this!
Why Study Algorithms? s Intellectual stimulation: “For me, great algorithms are the poetry of computation. Just like verse, they can be terse, allusive, dense, and even mysterious. But once unlocked, they cast a brilliant new light on some aspect of computing.” – Francis Sullivan
Why Study Algorithms? s Improve programming skills: “I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about code. Good programmers worry about data structures and their relationships.” – Linus Torvalds s “Algorithms + Data Structures = Programs” – Niklaus Wirth
Why Study Algorithms? s Unlock secrets of the universe: “Computer models mirroring real life have become crucial for most advances in chemistry today… Today the computer is just as important a tool for chemists as the test tube.” – Royal Swedish Academy of Sciences (Nobel Prize in Chemistry 2013)
Why Study Algorithms? s Everyone else is doing it! s For fun and for profit!
Next – Lecture 2 s Read Chapters 1 & 2 s Union-Find s Empirical analysis s Asymptotic analysis of algorithms s Basic recurrences