Download 3110.Intro

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Program optimization wikipedia , lookup

Stream processing wikipedia , lookup

Reactive programming wikipedia , lookup

Algorithm wikipedia , lookup

Sorting algorithm wikipedia , lookup

Genetic algorithm wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Data-intensive computing wikipedia , lookup

Corecursion wikipedia , lookup

Transcript
CSCE 3110
Data Structures and
Algorithm Analysis
Instructor Information
Dr. Yan Huang
Email: [email protected]
Office: NTRP F251
Phone: 565-8353
TA: TBA
Course Webpage and Schedule
Course webpage can be found at:
http://www.cse.unt.edu/~huangyan/3110
The lecture schedule is:
Tuesdays & Thursdays 2:30PM- 3:50PM
@ NTRP B142
Office hour: Class day @ 1:15PM-2:15PM and 4:00-5:00pm or
by appointment
Objectives
Understand dictionary/search data structures (lists, trees, hash
tables).
Understand graph representations and algorithms.
Understand time and space analysis for both iterative and
recursive algorithms and be able to prove the correctness a
non-trivial algorithm.
Be able to translate high-level, abstract data structure
descriptions into concrete code.
Understand how real-world problems map to abstract graph
problems.
Be able to communicate clearly and precisely about the
correctness and analysis of basic algorithms (both oral and
written communication).
Data structures will include lists, vectors, queues, stacks, trees,
hash-tables, and graphs.
Algorithms include searching, sorting using the above data
structures, iterative, and recursive algorithms
On assignments, students are asked to implement data
structures and algorithms using a high-level programming
language.
On exams, students are asked to solve problems using analytical
methods and programming skills acquired from lectures and
assignments to demonstrate knowledge and comprehension of
course material.
 Prerequisites
CSCE 2050 and MATH 2770
 Text Book
“Data Structures & Algorithm Analysis in C++” (3rd
Edition). Mark Allen Weiss
 Other Reference
“C++ How to Program”, 5th edition, H. M. Deitel, P.
J. Deitel
Assumed Background
Assumed Background: It is assumed that the student has
taken CSCE 2050 and MATH 2770, and thus is knowledgeable
about the following:
From CSCE 2050:
Experience with non-trivial software design; object-oriented design
and abstract data types; C++ language features including pointers,
classes, and templates; linear and binary searching; recursion;
basic data structures (linked lists, stacks, and queues); basic sorting
algorithms (insertion, selection, and merge sort); simple time
analysis of algorithms.
From Math 2770:
Proof techniques (induction, contradiction); mathematical
structures (sets, relations, trees, graphs); important mathematical
manipulations (sums, combinatorics).
What else do you need?
Unix account from the department machines
Turn in homework using project command
Subscribe to the class email list (link available
from the class webpage) to be updated
promptly about class information
Grading Information
Assignments 40%
Projects 20%
Two exams: 35%
Class participation: 5%
Grading scale (based on 100 points)
A 90-100 points
B 80-89 points
C 70-79 points
D 60-69 points
F below points
Programming Assignments
Each assignment may have a mixture of
written and programming components.
Each assignment will specify the material to
be turned in.
All programming will be in C/C++, and must
compile on a University Unix/Linux machine.
No credit will be given for programs that do
not compile.
Project
You have the option to work alone or form a group
with another student for the term project
If you choose to work in a team, both students will
receive the same marks for the project
The description of the term project will be posted
soon (in two weeks) and you are encouraged to work
on it as soon as possible
You will have to make a 10 minutes presentation at
the end of the semester
Important Notes
 All assignments are due before class of the due date.
A late penalty of 10% will be applied to all late
assignments for up to 3 calendar days. Assignments
that are not turned in 3 days after the due date will
not be accepted.

All holidays and weekends will be counted as
calendar days
 Missed exams will be granted zero points. Illness
and severe circumstances may be accommodated
only with solid evidence. Email me before exam and
provide solid evidence whenever possible.
Important Notes
 Academic misconduct includes the submission of
program code or assignment answers that appear so
similar to another person’s work as to be semantically
indistinguishable. Misconduct cases will be handles
swiftly, discreetly,and summarily in accordance with
University principles.
Questions?
What this course is about ?
Data structures: conceptual and concrete
ways to organize data for efficient storage and
efficient manipulation
Employment of this data structures in the
design of efficient algorithms
Analysis of the complexity of your algorithms
Why do we need them
Requirements for a good software:
Clean Design
Easy maintenance
Reliable (no core dumps)
Easy to use
Fast algorithms
Efficient
data structures
Efficient algorithms
Why do we need them ?
Computers take on more and more complex
tasks
Imagine: index of 8 billion pages ! (Google)
Software implementation and maintenance is
difficult.
Clean conceptual framework allows for more
efficient and more correct code
How Fast Are Our Computers?
In current computer architectures, we can
perform a linear scan of
1 megabyte of data in 1 second
1 gigabyte of data in 2 minutes
1 terabyte of data in 2 days
How long does it take took to scan 8
billion pages (google)?
Now you are searching the word “insomnia”!
Google index 8 billion pages.
Assume each page has 100 words (which is a
humble number)
Each word has 10 letters, each letter is one byte
It takes around 21 hours to perform a liner
scan of 8 billion pages!
Word Wide Wait!
Topics
Algorithm Analysis
Arrays, Stacks and Queues
Vectors, lists and sequences
Trees
Heaps / Priority Queues
Binary Search Trees –
Search Trees
Hashing / Dictionaries
Sorting
Graphs and graph algorithms
Example
What to do?
Sol. 1 Sequential matching
Sol. 2 Binary searching:
- order the words
- search only half at a time
Ex. Search 25 in 5 8 12 15 15 17 23 25 27
25 ? 15
15 17 23 25 27
25 ? 23
23 25 27
25 ? 25
How many steps?
One Step Further
Given n numbers, how many steps do we need
to search a number from the n numbers,
using
Linear search
Binary search (when and when not to use binary
search)?
Some example data structures
Set
Stack
Tree
Data structure = representation and operations
associated with a data type
What will you learn?
What are some of the common data structures
What are some ways to implement them
How to analyze the complexity of your
algorithms using the data structures
How to use them to solve practical problems