220 likes | 281 Views
CS 130 A: Data Structures and Algorithms. Course webpage : www.cs.ucsb.edu/~suri/cs130a/cs130a Email: suri @cs.ucsb.edu Office Hours: 11-12 Wed. CS 130A: Prerequisites. First upper division course More in-depth coverage of data structures and algorithms Prerequisites
E N D
CS 130 A: Data Structures and Algorithms • Course webpage: www.cs.ucsb.edu/~suri/cs130a/cs130a • Email:suri@cs.ucsb.edu • Office Hours: 11-12 Wed
CS 130A: Prerequisites • First upper division course • More in-depth coverage of data structures and algorithms • Prerequisites • CS 16: stacks, queues, lists, binary search trees, … • CS 40: functions, recurrence equations, proofs, … • Programming competence assumed • C, C++, and UNIX • Refresh your coding and debugging skills • Use TAs
Text Book • Data Structures & Algorithm Analysis in C++ by Mark Allen Weiss • Supplemental material from Introduction to Algorithms, by Cormen, Leiserson, Rivest, Stein [MIT book] • Lecture material primarily based on my notes • Lecture notes available on my webpage • See web page for lectures updates, assignments.
CS 130 A: Grade Composition • 2 Midterm exams (30% total) • 2 Programming assignments (30% total) • 1 Final exam (40%) • Homework assignments • They will not be graded: they are to help you practice problem solving and prepare for exams • Solving homework problems key to understanding. • Solutions will be made available, so you can self-assess your understanding and work with TAs to correct your mistakes. • Attend all lectures! • Schedule is tentative. • Unexpected changes in midterm/exam dates
Some Advice and Caution • Posted schedule of lectures, assignments, exams is tentative • Reviews unplanned • Unexpected events may change dates of midterms • No makeup exams, no extensions. • Attend all lectures. • Read lecture notes (material) before coming to class.
Teaching Assistants • Teaching Assistants: • Bay-Yuan Hsu (soulhsu@cs.ucsb.edu) • Discussion: Wed 6:30-7:200 (GIRV 1119) • TA hours: Mon 4-6 (Trailer 936) • Semih Yavuz (syavuz@cs.ucsb.edu) • Discussion: Tues 6:30-7:20 (GIRV 1116) • TA hours: Tues 3:30-5:30 (Trailer 936)
Discussion Sections • No discussion section this week • Discussion Format • No new material discussed • It is meant as a help session • Use them to go over homework assignments • Programming pointers • But TA are not there to help you write or debug code
What the course is about • The course is primarily about Data Structures • Algorithms covered in small part (20%) • CS 130B is the main algorithms course • Data structures will be motivated by applications although we won’t discuss them in any detail
What the course is about • This is a Theory course, not programming/systems • Primary focus on concepts, design, analysis, proofs • Includes 2 coding assignments, but no programming taught • C++, Unix competence expected • My teaching philosophy for 130A • Discovery and insights. Big picture. • Best understood in abstract form, with pen-paper • Alternative Style: learn by coding. (If coding is your thing, feel free to program the data structures.) • Exams on conceptual understanding, not coding details. • Homework exercises model for exam questions.
Course Outline • Introduction and Algorithm Analysis (Ch. 2) • Hash Tables: dictionary data structure (Ch. 5, CLRS) • Heaps: priority queue data structures (Ch. 6) • Balanced Search Trees: general search structures (Ch. 4.1-4.5) • Union-Find data structure (Ch. 8.1–8.5, Notes) • Graphs: Representations and basic algorithms • Topological Sort (Ch. 9.1-9.2) • Minimum spanning trees (Ch. 9.5) • Shortest-path algorithms (Ch. 9.3.2) • B-Trees: External-Memory data structures (CLRS, Ch. 4.7) • kD-Trees: Multi-Dimensional data structures (Notes, Ch. 12.6) • Misc.: Streaming data, randomization (Notes)
What are your goals? • A step towards the BS degree • Just a required CS course • Becoming a well-rounded computer scientist • Intellectual (theory) aspects of CS • Clever ideas • Interview questions at elite software companies
My goals • Algorithms is my research expertise • A lively and enormously active area of research • Broad impact on almost every area of CS • My personal mission: • transmit some of the knowledge and enthusiasm • Win the best teacher award • Weekly Jokes • Send me your jokes!
Why Study Algorithms and Data Structures? • Intellectual Pursuit
Why Study Algorithms and Data Structures? • To become better computer scientist
Why Study Algorithms and Data Structures? • World domination
Algorithms are Everywhere • Search Engines • GPS navigation • Self-Driving Cars • E-commerce • Banking • Medical diagnosis • Robotics • Algorithmic trading • and so on …
Emergence of Computational Thinking • Computational X • Physics: simulate big bang, analyze LHC data, quantum computing • Biology: model life, brain, design drugs • Chemistry: simulate complex chemical reactions • Mathematics: non-linear systems, dynamics • Engineering: nano materials, communication systems, robotics • Economics: macro-economics, banking networks, auctions • Aeronautics: new designs, structural integrity • Social Sciences, Political Science, Law ….
Modern World of Computing • Age of Big Data, birth of Data Science • Digitization, communication, sensing, imaging… • Entertainment, science, maps, health, environmental, banking… • Volume, variety, velocity, variability • What all happens in 1 Internet minute?
Why Data Structures? • Data is just the raw material for information, analytics, business intelligence, advertising, etc • Computational efficient ways of analyzing, storing, searching, modeling data • For the purpose of this course, need for efficient data structures comes down to: • Linear search does not scale for querying large databases • N2 processing or N2 storage infeasible • Smart data structures offer an intelligent tradeoff: • Perform near-linear preprocessing so that queries can be answered in much better than linear time