Download presentation
Presentation is loading. Please wait.
Published byDarrell Neal Modified over 9 years ago
1
CS 312: Algorithm Analysis Lecture #1: Algorithms and Efficiency This work is licensed under a Creative Commons Attribution-Share Alike 3.0 Unported License.Creative Commons Attribution-Share Alike 3.0 Unported License Slides by: Eric Ringger, with contributions from Mike Jones, Eric Mercer, Sean Warnick
2
Introduction Prayer Spiritual/interesting thought
3
Thought “Education is not the filling of a bucket but the lighting of a fire.” W. B. Yeats
4
Objectives for Today Introduce course objectives Quickly cover course info. Define Problems, Solutions, and Algorithms Introduce 3 Questions Motivate the need for Analysis
5
Course Objectives Develop your general problem solving skills! Learn to perform theoretical analysis of algorithms Learn to perform empirical analysis of algorithms Compare theoretical and empirical analysis Become familiar with several families of algorithms suitable for solving many kinds of problems Use Visual Studio and C#
6
Course Info. Office Hours: TBD & By appointment Web page: https://facwiki.cs.byu.edu/cs312sum2012 Syllabus – read today! Regularly updated schedule Due dates Reading assignments Homework assignments Project guidelines Lecture notes Email: paul_felt AT byu DOT edu
7
More Course Info. Google Group: “BYU CS 312 Summer” Announcements Forum for discussion Subscribe and participate! Gradebook: http://gradebook.byu.eduhttp://gradebook.byu.edu
8
Work Load 6 hours/week in class 12 hours/week out of class Weekly projects Daily Reading and Homework
9
Course Policies Grades Early Late Other See syllabus for details
10
Another Thought “Computer Science is no more about computers than Astronomy is about telescopes.” -- Michael R. Fellows and Ian Parberry * * often misattributed to Edsger Dijkstra!
11
Definitions What is a problem? What is a solution?
12
Problems and Their Solutions Domain Input SetOutput Set Range Solution: Algorithm Computing Device Problem Instances Problem:
13
Properties of an Algorithm algorithm “A finite sequence of well-defined steps for solving a problem.” (like a recipe) Also Interested in Efficiency (as a function of inputs)
14
A Little History Abu Jafar Mu ḥ ammad ibn Mūsā ca. 780 – ca. 850 “al-Khwārizmī” “the (man) of Khwarizm”, his place of origin Khiva in present-day Uzbekistan and Turkmenistan Persian astronomer and mathematician Worked in Baghdad Authored many texts on arithmetic and algebra Methods for Adding Multiplying Dividing Extracting square roots Calculating digits of Properties: Precise Unambiguous Mechanical Efficient Correct Leonardo of Pisa, “Fibonacci” ca. 1170 – ca. 1250 Coined “algorithms” in his honor. Also imported Hindu-Arabic numeral system
15
Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, … Problem: compute the nth Fibonacci number, described here as mathematical recurrence relation
16
Solution: Algorithm
17
Three Questions 1.Is it correct? 2.How much time does it take, as a function of n? 3.Can we do better?
18
Is it Correct? function fib1(n) if n=0: return 0 if n=1: return 1 return fib1(n-1) + fib1(n-2)
19
How much time does it take as a function of n?
20
Can we do better? Key idea: Store the intermediate results function fib2(n) if n=0: return 0 create an array f[0..n] f[0] = 0, f[1] = 1 for i = 2.. n: f[i] = f[i-1] + f[i-2] return f[n]
21
Our Problem Solving Strategy For a given problem, Pick a computational platform (with associated elementary operations) Write an algorithm to solve the problem Ask the three questions: Make sure that it is correct Analyze the efficiency of the algorithm Look for opportunities for improvement
22
Why Rigorous Analysis? “A person well trained in computer science knows how to deal with algorithms: how to construct them, manipulate them, understand them, analyze them. This knowledge is preparation for much more than writing good computer programs; it is a general-purpose mental tool that will be a definite aid to the understanding of other subjects, whether they be chemistry, linguistics, or music, etc. The reason for this may be understood in the following way: It has often been said that a person does not really understand something until after teaching it to someone else. Actually, a person does not really understand something until after teaching it to a computer, i.e. expressing it as an algorithm… An attempt to formalize things as algorithms leads to a much deeper understanding than if we simply try to comprehend things in the traditional way.” Donald Knuth from Selected Papers on Computer Science,1996
23
Assignment Submit your schedule constraints on whenisgood calendar Join Google Group byu-cs-312-summer@googlegroups.com Visual Studio Install Visual Studio (follow directions in syllabus) or use an open lab machine Try out C# using tutorials (see links in syllabus)
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.