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

Course Contents

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