Data Structure and Algorithms Essentials
Module 1: Introduction to the course
Xingang (Ian) Fang
Outline
Course Description
Instructor Info
Course contents
Communication
Course Description
Description:
This comprehensive course examines fundamental data structures such as arrays, linked lists, trees, graphs, hash tables, and heaps in depth. Students will also learn about important algorithms that are closely related to these data structures, such as sorting, searching, divide-and-conquer, greedy algorithms, etc. Participants must have a solid understanding of programming language fundamentals, including variables, constants, selection statements, iteration, arrays, file input/output operations, and functions, in order to excel in this course. Students will finish the course with a solid foundation in data structures and algorithms, allowing them to confidently tackle complex programming challenges.
Keywords:
Abstract Data Type (ADT); Data Structure; Algorithm; Algorithm Analysis; Sorting; Liked-list; Stack; Queue; Trees; Graphs; Hashing
Course Objective
Analyze algorithms in terms of time and/or space complexity.
Utilize arrays in computer programs
Utilize linked data structures (lists, trees and graphs)
Use trees (including height balanced AVL and B-Trees) in a variety of computational problems
Describe and implement heaps
Describe and construct hash functions and hash tables.
Employ algorithms pertaining to graphs to fulfill a variety of computational problems
Describe and use simple and complex sorting algorithms
Identify characteristics of greedy algorithms and their applicability to computational problems.
Instructor Info
Xingang Fang
Lecturer, CS department, UWF
email: xfang@uwf.edu
Zoom link: https://uwf.zoom.us/my/xfang
Course Contents
LMS (Canvas)
Code examples: GitHub repository
Official Textbook Examples: GitHub repository
Course Slides:
Html Slides hosted on GitHub
Slides based on Publisher slides are posted on Canvas
Textbook Info
Required textbook in this course
Algorithm, 4th edition, by Robert Sedgewick and Kevin Wayne
How to use this textbook
This is an algorithm book rather than a Java programming book. This course assumes that you have learned the basic concepts of Java programming language before. You can use the first section in the textbook to revisit essential Java concepts used in this course. You will need to learn language details on your own if you are not familiar with Java.
Canvas Course Shell
Learn Canvas LMS: Notification tool, calendar, mobile app
The front page
Optimize user experience
Links to
module pages (customized pages for each module)
other resources
Announcements
Mini-calendar
Grades distribution
Course summary
Course Supplement Material Website
Designed as a reference for students to better understand the organization of knowledge points
Convention
Extended (optional) contents are marked as FYI or Optional
Communication
Keep updated
Group email
Canvas announcement
Discord @everyone/@here message
Find help
Discord - sharable questions
Email; Discord DM - private questions, identify yourself first
Zoom (Office hour, appointment, etc.)
Always share your whole project by provide an archive of all source code files
Always identify yourself
provide course code
provide your name
Avoid 🚫
Canvas/Navigation messages
Provide error messages or screenshots without code