Syllabus
This course offers a comprehensive introduction to data structures, emphasizing their implementation and application within the Java programming language. The primary objective is to equip students with a robust understanding of data structures, crucial for the efficient organization, manipulation, and analysis of data within software systems. Throughout the course, students will delve into fundamental data structures including arrays, linked lists, stacks, queues, trees, and graphs. In addition to these structures, the course will cover essential algorithms related to sorting, searching, and traversal. Students will learn about dynamic memory management, recursive techniques, and the complexity of various operations. By the end of the course, students will have a solid understanding of how to implement and utilize data structures in Java, enabling them to design efficient algorithms and develop optimised software solutions for complex data management challenges.
2023F: TA(Dahee Kim, Juyoung Bang, Junesoo Kang)
Tentative Outline for the Course:
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
2023F: Gunyoung Kang