CSC 321: Data Structures Fall 2017

Slides:



Advertisements
Similar presentations
PROGRAMMING LANGUAGE (JAVA) UNIT 42 BY ROBERT BUTTERFIELD TELEPHONE Data Structures and Algorithms.
Advertisements

1 CSC 421: Algorithm Design & Analysis Spring 2013 See online syllabus: (also on BlueLine2) Course.
CS 307 Fundamentals of Computer Science 1 Abstract Data Types many slides taken from Mike Scott, UT Austin.
Data Structures Introduction. What is data? (Latin) Plural of datum = something given.
CS503: Tenth Lecture, Fall 2008 Review Michael Barnathan.
1 CSC 222: Computer Programming II Spring 2005 Searching and efficiency  sequential search  big-Oh, rate-of-growth  binary search  example: spell checker.
CSCE 3110 Data Structures and Algorithm Analysis.
Data Structures Lecture-1:Introduction
Instructor: Dr. Sahar Shabanah Fall Lectures ST, 9:30 pm-11:00 pm Text book: M. T. Goodrich and R. Tamassia, “Data Structures and Algorithms in.
COMP 151: Computer Programming II Spring Course Topics Review of Java and basics of software engineering (3 classes. Chapters 1 and 2) Recursion.
1 CSC 221: Introduction to Programming Fall 2012 course overview  What did you set out to learn?  What did you actually learn?  Where do you go from.
1 CSC 221: Computer Programming I Fall 2004 course overview  what did we set out to learn?  what did you actually learn?  where do you go from here?
1 CSC 427: Data Structures and Algorithm Analysis Fall 2011 See online syllabus (also available through BlueLine): Course goals:
Data Structures Lecture 1: Introduction Azhar Maqsood NUST Institute of Information Technology (NIIT)
CSCA48 Course Summary.
Suzanne Westbrook, PhD School of Information: Science, Technology, & Arts Computer Science Dept, UA.
Introduction. 2COMPSCI Computer Science Fundamentals.
CSS446 Spring 2014 Nan Wang.  Java Collection Framework ◦ Set ◦ Map 2.
1 CSC 222: Computer Programming II Spring 2004 See online syllabus at: Course goals:
1 CSC 427: Data Structures and Algorithm Analysis Fall 2010 See online syllabus (also available through BlueLine): Course goals:
1 CSC 222: Object-Oriented Programming Spring 2013 Course goals:  To know and use basic Java programming constructs for object- oriented problem solving.
CSE 373: Data Structures and Algorithms Lecture 1: Introduction; ADTs; Stacks; Eclipse.
1 CSC 321: Data Structures Fall 2013 See online syllabus (also available through BlueLine2): Course goals:  To understand.
Data Structures and Algorithms Lecture 1 Instructor: Quratulain Date: 1 st Sep, 2009.
Data Structures Lecture 1: Introduction. Course Contents Data Types   Overview, Introductory concepts   Data Types, meaning and implementation  
1 CSC 221: Computer Programming I Spring 2008 course overview  What did we set out to learn?  What did you actually learn?  Where do you go from here?
1 CSC 427: Data Structures and Algorithm Analysis Fall 2006 See online syllabus (also available through Blackboard): Course goals:
Collections Data structures in Java. OBJECTIVE “ WHEN TO USE WHICH DATA STRUCTURE ” D e b u g.
CSC 143T 1 CSC 143 Highlights of Tables and Hashing [Chapter 11 p (Tables)] [Chapter 12 p (Hashing)]
COMP9024: Data Structures and Algorithms Course Outline Hui Wu Session 1, 2016
Mohammed I DAABO COURSE CODE: CSC 355 COURSE TITLE: Data Structures.
CSC 421: Algorithm Design & Analysis
CSC 427: Data Structures and Algorithm Analysis
CSC 222: Object-Oriented Programming
CSC 222: Object-Oriented Programming
CSC 222: Computer Programming II
CSC 421: Algorithm Design & Analysis
CSC207 Fall 2016.
CSC 321: Data Structures Fall 2016
Analysis and Comparison is ICS4U
DDC 2423 DATA STRUCTURE Main text:
CSC 221: Computer Programming I Spring 2010
CSC 222: Object-Oriented Programming
CS 315 Data Structures B. Ravikumar Office: 116 I Darwin Hall Phone:
CSC 221: Computer Programming I Fall 2005
CSC 321: Data Structures Fall 2015
JAVA COLLECTIONS LIBRARY
CSC 421: Algorithm Design & Analysis
CSC 222: Object-Oriented Programming
Lecture 2 of Computer Science II
CSC 421: Algorithm Design & Analysis
ECET 370 HELPS Education Your Life-- ecet370helps.com.
ECET 370 Lessons in Excellence-- ecet370.com. ECET 370 Entire Course (Devry) For more course tutorials visit ECET 370 Week 1 Lab 1 ECET.
ECET 370 HELPS Education for Service- - ecet370helps.com.
Road Map CS Concepts Data Structures Java Language Java Collections
structures and their relationships." - Linus Torvalds
Building Java Programs
CSE 142 vs CSE 143 CSE 142 CSE 143 You learned how to write programs and decompose large problems with: Print statements Methods Control Structures.
Introduction to Computer Science for Majors II
Road Map - Quarter CS Concepts Data Structures Java Language
Welcome to CSE 143! Go to pollev.com/cse143.
Building Java Programs
Review CSE116 2/21/2019 B.Ramamurthy.
Road Map CS Concepts Data Structures Java Language Java Collections
1.4 ทบทวน JAVA OO Programming Concepts Declaring and Creating Objects
CSC 321: Data Structures Fall 2018
CSC 421: Algorithm Design & Analysis
CSC 221: Introduction to Programming Fall 2018
structures and their relationships." - Linus Torvalds
Presentation transcript:

CSC 321: Data Structures Fall 2017 See online syllabus (also available through BlueLine): http://dave-reed.com/csc321 Course goals: To understand fundamental data structures (lists, stacks, queues, sets, maps, and linked structures) and be able to implement software solutions to problems using these data structures. To achieve a working knowledge of various mathematical structures essential for the field of computer science, including graphs, trees, and networks. To develop analytical techniques for evaluating the efficiency of data structures and programs, including counting, asymptotics, and recurrence relations. To be able to design and implement a program to model a real-world system, selecting and implementing appropriate data structures.

221 vs. 222 vs. 321 221: intro to programming via scripting focused on the design & analysis of small scripts (in Python) introduced fundamental programming concepts variables, assignments, expressions, I/O control structures (if, if-else, while, for), lists functions, parameters, intro to OO you should be familiar with these concepts (we will do some review next week, but you should review your own notes & text) 222: object-oriented programming focused on the design & analysis of more complex programs (in Java) utilized OO approach & techniques for code reuse classes, fields, methods, objects interfaces, inheritance, polymorphism, object composition searching & sorting, Big-Oh efficiency, recursion 321: data-driven programming & analysis focus on problems that involve storing & manipulating large amounts of data focus on understanding/analyzing/selecting appropriate structures for problems standard collections (lists, stacks, queues, trees, sets, maps) mathematical structures (trees, graphs, networks) analysis techniques (counting, asymptotics, recurrence relations)

When problems start to get complex… …choosing the right algorithm and data structures are important e.g., phone book lookup, Sudoku solver, path finder must develop problem-solving approaches (e.g., brute force, backtracking) be able to identify appropriate data structures (e.g., lists, trees, sets, maps) example: dictionary lookup you are given a large dictionary of 100K+ words want to be able to store and lookup words store in an unsorted ArrayList, perform sequential search insert into a sorted ArrayList, perform binary search store in an unsorted ArrayList, sort before each sequence of binary searches store in a LinkedList or TreeSet (?) or HashSet (?) the efficiency of each approach depends not only on the size of the dictionary, but the pattern of operations sequence of adds followed by sequence of searches? mixture of adds and searches?

Another example: anagram finder you are given a large dictionary of 100K+ words repeatedly given a word, must find all anagrams of that word pale  leap pale peal plea steal least setal slate stale steal stela taels tales teals tesla banana  banana there are many choices to be made & many "reasonable" decisions how do you determine if two words are anagrams? should you store the dictionary words internally? if so, how? should you preprocess the words? if so, how? is a simplistic approach going to be efficient enough to handle 100K+ words? how do you test your solution?

Possible implementations generate every permutation of the letters, check to see if a word how many permutations are there? will this scale? for each word, compare against every other word to see if an anagram how costly to determine if two words are anagrams? how many comparisons will be needed? will this scale? preprocess all words in the dictionary and index by their sorted form e.g., store "least" and "steal" together, indexed by "aelst" how much work is required to preprocess the entire dictionary? how much easier is the task now?

HW1: robot navigation HW1 is posted part1 is to be completed in 2-person teams, due in 1.5 weeks we will meet to go over the code, go over holes in your knowledge/skills part2 is to be completed individually, builds on part1 code both parts involve a grid with rectangular obstacles the grid is specified by a file that contains # rows & # cols on first line subsequent lines contain row/col of top-left and bottom-right corners of an obstacle

HW1 part 1: represent and access the grid read (and store) the grid info display the grid, with a frame and * for obstacles repeatedly prompt for and determine if positions are in obstacles ADVICE: work with your partner – you both should understand everything in your program be introspective – identify holes, work with your partner, come see me!

HW1 part 2: navigate the robot display row & column labels (last digit only) repeatedly process robot movements given: initial row & column sequence of moves using >, <, ^ and v NOTE: this part must be completed individually, building upon your team's code come see me A LOT!