31
CS2515 Algorithms and Data Structures I

CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

CS2515Algorithms and Data Structures I

Page 2: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on
Page 3: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on
Page 4: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on
Page 5: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on
Page 6: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Algorithms

Algorithms: the abstract specification of the processesthat are running on all of our computers, phones, games consoles, databases, autopilots, banking systems, autonomous vehicles, networks, ...

Algorithms process information maintained in data structures, and produce actions and results.

Page 7: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

algorithm

We'll see a more efficient version of this algorithm later this year which relies on an efficient data structure underneath

Page 8: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Data Structures

Data structures: the frameworks we use to maintain the data that are processed by the algorithms.

Inside data structures, we use algorithms to manipulate the data efficiently.

Page 9: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Abstract Data Types

Abstract Data Types: higher level patterns for organisingdata structures – patterns for reading data from the structure, for removing data, and for adding new data.

Page 10: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

think of this sketch of a 'graph' as an abstract data type

Page 11: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

data structure 2D matrix implementing the graph

Page 12: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Algorithms: three questions

Does it do what it is supposed to do?

How long will it take?

How much space (memory) does it need to run?

Page 13: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

What is the point?

1. Your programs must be correct • not just bug-free code, but implementing an algorithm

that does exactly what it is supposed to do.

2. Your programs should be efficient• programs that take too long to run are useless• understand the implication of choosing different

library functions• understand the implication of choosing different

design patternso what may be easier for you to code may be much

worse to run ...

Page 14: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Yawn – machines are getting faster every year – who cares about efficiency?

1. faster machines means users expect to solve bigger problems

2. some problems have known limits on their efficiency

Page 15: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

What is the point (part 2)?

3. You must be able to advertise your code to other programmers in terms they will understand • state what abstract data types you are using

• Programmers then know how to interact with them• state what data structures and algorithms you have

used to implement them• Programmers then know how efficient different interactions would be

4. You should not subvert the design pattern• understand the specified ways to interact with the data• don't interact with it in other ways

o abandons correctness and efficiency• don’t invite other programmers to subvert the design• be disciplined in your coding

Page 16: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

This ain't chemistry - this is art. Coding is art. And the shit I code is the bomb, so don't be telling me.

The shit you code is shit.

You and I will not make garbage. We will produce a chemically pure and stable product that performs as advertised. No adulterants. No baby formula. No chili powder.

Page 17: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

... and a fourth question

How do we implement it ?

We are going to use Python 3.• understand the library functions• learn how to implement structures and

algorithms efficiently

The module is a mix of theory and practice.

Does it do what it is supposed to do?

How long will it take?

How much space does it need to run?

Page 18: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Course info

Lecturer: Ken Brown

Lectures: Wednesday, 2pm – 3pm, WGB G01Friday, 10am – 11am, WGB 107

Lab classes: 2 hours per week of programming labsDays and times to be decided

Assessment: 80% by final written exam (90 minutes)20% by continuous assessment and in-class

tests

Page 19: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

http://www.cs.ucc.ie/~kb11/teaching/CS2515/Home/

Page 20: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Lab Days and Times

The CS2515 lab is provisionally scheduled for:

As far as we know, this is compatible with all of your timetables; if not, please let me know as soon as possible.

Every Friday12:00 – 14:00

starting in week 2

Page 21: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Module Objective

"Students should gain expertise in the use and implementation of simple data structures, and their application in the creation of efficient software."

Page 22: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Outline Syllabus

Motivation and OOP crash courseBasics of algorithm analysisArrays and LinkedListsLists, Stacks, Queues, Sets and DictionariesApplications RecursionBinary trees and balanced trees.Search and traversal algorithms for trees Hashing

Page 23: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Learning Outcomes

"On successful completion of this module, students should be able to:• Apply data structures and algorithms appropriately in

formulating solutions of meaningful computational problems;

• Implement computer applications employing simple data structures in a modern programming language;

• Implement simple data structures using array-based techniques and linked lists."

Page 24: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Assessment

90 minute written exam (december), worth 80%Continuous assessment, worth 20%

You must pass the combined exam and CA

The continuous assessment will consist of submitted software solutions to exercises, and in-class tests, attimes to be decided.

There will be a repeat exam in August.

Page 25: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Plagiarism

1. Plagiarism is presenting someone else’s work as your own. It is a violation of UCC Policy and there are strict and severe penalties.

2. You must read and comply with the UCC Policy on Plagiarism www.ucc.ie/en/exams/procedures-regulations/

3. The Policy applies to all work submitted, including software.

4. You can expect that your work will be checked for evidence of plagiarism or collusion.

5. In some circumstances it may be acceptable a reuse a small amount of work by others, but only if you provide explicit acknowledgement and justification.

6. If in doubt ask your module lecturer prior to submission. Better safe than sorry!

Do not submit work:• copied from previous

years’ students• scraped from a website

Page 26: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Self-directed Learning

The university assumes you will be spending at least 8 hoursper week on a 5 credit course, not counting revision at theend of the year.

There are 4 hours timetabled for CS2515.

That means you will need to spend at least 4 hours per weekworking on the material outside timetabled classes. Most of this will be re-reading the lecture notes, and implementing solutions.

The module is a mix of theory and practice – you will need topractice regularly, or you will not survive.

Page 27: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

The Programming Labs

Lab exercises are set most weeks. Some of these will be for hand-in, and the marks will contribute to your final mark for the module.

Other exercises are not formally marked, but they are still important.

You do need to do them each week• later assignments assume you have done previous ones• it builds up your skills in Python and in data structures• completing the programming exercises will help to fix the

material in your head• experimenting with runtimes will demonstrate the need for

efficient algorithms

Page 28: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Textbook

There is no required textbook.

The following would be good books to buy or to consult:

1. Data Structures and Algorithms in Python, Goodrich, Tamassia & GoldwasserWiley

2. Problem Solving with Algorithms and Data StructuresMiller & Ranum

3. Data Structures and Algorithms with PythonLee & HubbardSpringer

Page 29: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Python

We will be using Python 3

Make sure you keep up-to-speed with the labs and exercises for CS2513• the early weeks of that module are critical for being

able to do the labs in CS2515

Page 30: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Discrete Foundations

We will be assuming almost everything taught in CS1112 andCS1113: sets, functions, relations, logic, basic algorithms, graphs, trees, counting, complexity, Big-Oh notation, ...

Make sure you have that material to hand throughout the module. If you did not study those modules last year, please speak to me today.

Remember the theme of those modules:

precise communication

Page 31: CS2515 Algorithms and Data Structures Ikb11/teaching/CS2515/Lectures/L01-Introduction.pdf · Algorithms Algorithms: the abstract specification of the processes that are running on

Next lecture ...

Some initial algorithms

31