1/6/2012
ES103: Data Structures and Algorithms
Atul Gupta
Computer Engineering is about
Solving problems by writing programming solutions
Not just any solution but the best possible solution of the problem Characteristics of the best solution
Efficient (performance or speed) Cost effective Scalable Useful Correct Robust Secure Modifiable (change)
1/6/2012
A Programming Solution
Inputs
Keyboard (user) Mouse (user) Network (system) Devices (system) Other programs
Computation #3
Computations Outputs
Monitor Network Devices Other programs
Computation #3
O/P #1
O/P #2
O/P #3
Computation #1
GUI
Computation
Data (Information) Processing of the Data Two principle ways
of Computation
Functional
Data F-2 F-3 F-4 F-5 F-1
Computation #3
Computation #3
Computation #1
Object-oriented o1 o2 o3 o5 o6 o4 o7
1/6/2012
Improving Computation
Data Structures
Choosing suitable data organization Having efficient data storing and retrieving mechanism
Design of Algorithms
Applying appropriate strategies for problem solving
Greedy, dynamic programming, divide and conquer, branch and bound,
Solution Characteristics
Efficient (performance or speed) Cost effective Scalable Useful Correct Robust Secure Modifiable
Computation #3
Computation #3
Computation #1
Computational Domains
Spreadsheets primitive persistent data with mathematical analysis (no algorithms) Database primitive persistent data with standard set of operations + query (no algorithms) Application Software (Word, Spreadsheets, ) - Advanced data structures + files + algorithms System software (OS, NOS, DS, DBMS, Compiler, System tools) Advanced data structures + files + efficient algorithms [Real time systems - Deterministic Solutions] Knowledge based systems + Data mining systems Database + dynamic data organizations + intelligent (machine learning) algorithms [Hard Problems approximate solutions]
1/6/2012
ES 103: Data Structures & Algorithms
Efficient organizations of complex program data including operations performed on them
+
Efficient problem solving approaches
ES 103: Course Objectives
Objectives
Learn about efficient data organizations Learn about various problem solving techniques Estimating algorithmic complexity Improved programming skills
Other benefits
GATE examination Job interviews
1/6/2012
ES 103: Course Highlights
Estimating algorithmic complexities Tools like Recursion, Iteration ADT
Linear data organizations like Arrays, Stacks, queues, Linked lists Non-linear data organizations like hashing, trees (and its many variances), graphs (and many variances) Examples
Searching and Sorting Algorithm Design Techniques like Greedy, Dynamic Programming, Divide and Conquer, Branch and Bound
About Me
Dr Atul Gupta, PhD (IITK), M Tech (IITR)
Associate Professor, CSE Discipline Convener, CSE Convener, CC
Research Interests (Software Engineering)
Software Modeling Software Testing Object-Oriented Software Development Empirical Software Engineering Test-Driven Development
1/6/2012
ES 103: Course Page
http://sites.google.com/site/atulkg/courses/es-103-data-structureand-algorithms-2012
Place for
Course slides Example codes (Practice Codes) Data structure codes (both in C as well as in Java) Programming Assignments Learning references and help
ES 103: Course Evaluation
Four Quizzes (5% each) Mid Semester Exam (20%) End Semester Exam (20%) Programming Assignments (30%)
C or Java
Attendance (10%)
1/6/2012
Lab Work
Programming Assignments Programming Language(s) TAs Additional help
References
Data Structures and Algorithms in C++ by Michael T. Goodrich, Roberto Tamassia, and David M. Mount Wiley Publications Introduction to Algorithms by Cormen, Leiserson, Rivest, and Stein, 2nd Ed., PHI Course Slides Internet