Data structure (CSE 221)
Syllabus
This course is an introduction to data structures, focusing on implementation and application using Java. The objective is to provide students with a solid foundation in data structures, enabling effective organization, manipulation, and analysis of data in software systems. Students will explore key structures such as arrays, linked lists, stacks, queues, trees, and graphs, along with associated algorithms. By course completion, students will understand data structures in Java, allowing them to design efficient algorithms and develop software solutions for optimised data management.
2023F: TA(Dahee Kim, Juyoung Bang, Junesoo Kang)
Tentative Outline for the Courses:
Introduction to Data Structures and Algorithms - Overview of fundamental concepts in data structures and algorithms, focusing on their importance in computer science.
References:
The Algorithm Design Manual - Ch 3
Algorithms - Ch 1
Java programming and OOP - Basics of Java programming language, principles of OOP such as encapsulation, inheritance, and polymorphism.
Readings:
Data structures & Algorithms in Java - Ch 1 and 2
Fundamental Data Structures - Detailed study of various linear data structures and their implementations.
Readings:
Algorithm Analysis - Introduction to algorithm complexity analysis, Big O notation, and essential mathematical concepts for algorithm analysis
Readings:
References:
Algorithms by Jeff Erickson - Director's Cut Ch 9, Appendix I, Appendix II
Recursion - Understanding recursion, recursive algorithms, and their applications.
Readings:
References:
Algorithms by Jeff Erickson - Ch 2
Stacks, Queues, and Deques - Implementation and application of stacks, queues, and double-ended queues (deques).
Readings:
Generalised List - Study of generalised lists and their significance in data structures.
Readings:
Tree structures - Overview of different tree data structures and basic algorithms.
Readings:
Priority Queues - Understanding priority queues, their implementation, and use cases.
Readings:
References
Maps, Hash Tables, and Skip Lists - Detailed study of maps, hash tables, and skip lists.
Readings:
Data structures & Algorithms in Java - Ch 10.
References:
Introduction to Algorithms - Ch 11
Search Trees - Advanced study of various search trees (2-4-tree, red-black tree) and their properties.
Readings:
Data structures & Algorithms in Java - Ch 11.
References:
Algorithms - Ch 3
Introduction to Algorithms - Ch 12-13
Sorting - Examination of different sorting algorithms and their efficiencies.
Readings:
Data structures & Algorithms in Java - Ch 12.
References:
The Algorithm Design Manual - Ch 4
Algorithms - Ch 2
Introduction to Algorithms - Ch 8
Selection - Study of algorithms used for selecting elements from a data set.
Readings:
Data structures & Algorithms in Java - Ch 12.
Greedy Algorithm - Understanding the greedy method for problem-solving.
Readings:
Data structures & Algorithms in Java - Ch 13.
References:
Introduction to Algorithms - Ch 15
Algorithms by Jeff Erickson - Ch 4
Algorithm Design - Ch 4
Dynamic Programming - Principles and applications of dynamic programming in algorithm design.
Readings:
Data structures & Algorithms in Java - Ch 13.
References:
Introduction to Algorithms - Ch 14
Algorithms by Jeff Erickson - Ch 3
Algorithm Design - Ch 6
The Algorithm Design Manual - Ch 10
Graph structure - Detailed study of graphs, their properties, and related algorithms.
Readings:
Data structures & Algorithms in Java - Ch 14.
References:
The Algorithm Design Manual - Ch 5 and 6
Algorithms - Ch 4
Minimum Spanning Tree - Understanding and implementation of MST algorithms.
Readings:
Data structures & Algorithms in Java - Ch 14.
References:
Algorithms - Ch 4
Introduction to Algorithms - Ch 19, Ch 21
Shortest Paths - Study of algorithms for finding the shortest paths in graphs.
Readings:
Data structures & Algorithms in Java - Ch 14.
References:
Algorithms - Ch 4
The Algorithm Design Manual - Ch 8
Introduction to Algorithms - Ch 22
Flow - Understanding flow in networks and related algorithms.
Readings:
Algorithm Design - Ch 7
References:
The Algorithm Design Manual - Ch 8
Introduction to Algorithms - Ch 24
Algorithms by Jeff Erickson - Ch 10
Java resources
Java tutorial offered by w3school https://www.w3schools.com/java/
Jump to Java https://wikidocs.net/book/31
Code academy (Java) https://www.codecademy.com/learn/learn-java
Related textbook & lecture
Algorithms https://jeffe.cs.illinois.edu/teaching/algorithms/
Tech Dev Guide https://techdevguide.withgoogle.com/paths/data-structures-and-algorithms/
Data structure and algorithm analysis in Java http://people.cs.vt.edu/~shaffer/Book/
Video: Data structure and algorithm specialization https://www.coursera.org/specializations/data-structures-algorithms
Video: Coursera algorithm I https://www.coursera.org/learn/algorithms-part1
Video: Coursera algorithm II https://www.coursera.org/learn/algorithms-part2
Video: https://www.cse.cuhk.edu.hk/~taoyf/course/2100/23-spring/
C언어로 쉽게 풀어쓴 자료구조 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=183868288
With highest honor
2022F: Gunyoung Kang