Data Structure and Algorithm Design

Course Introduction

Xingang (Ian) Fang

Introduction to HTML Slides

  • System:

    • Sphinx

    • Reveal.js

  • Navigation:

    • Left/Right Arrow

    • Up/Down Arrow

    • Space Bar

    • Esc Key

  • Print:

    • add “?print-pdf” to the URL after .html

    • choose number of slides per page

Introduction to the COP3530 course

  • Course Description

  • Instructor Info

  • Course contents

  • Communication

Course Description

  • Description:

    This course covers the design and implementation of algorithms and data structures. Topics include: algorithm analysis, abstract data types, recursion, sorting and searching, lists, stacks, queues, trees, graphs, and hashing.

  • Keywords:

    Abstract Data Type (ADT); Data Structure; Algorithm; Algorithm Analysis; Recursion; Sorting; List; Stack; Queue; Tree; Graphs; Hashing

Course Objective

  • Learn to design and implement algorithms to solve problems

  • Learn C++ fundamentals to construct essential data structures

  • Learn abstraction and modularity to build large programs

  • Learn abstract data types and data structures

  • Learn to analyze the efficiency of algorithms

  • Learn to choose the right data structure for a given problem

Instructor Info

Ian Fang, Ph.D.

Canvas Course Shell

  • Learn Canvas LMS: Notification tool, calendar, mobile app

  • Front page gives a calendar view of the course schedule

    • Follow the links to modules, pages, and assignments

  • Zoom tab

    • Find prospective meetings

    • View recordings of past classes

../_images/4534-canvas.png

Use Class Time as Your Primary Workspace

  • During the first weeks, actively follow the live walkthroughs for the course setup, Canvas layout, Git, Classroom 50, labs, and projects.

  • Take notes and ask questions as soon as a step is unclear. Reconstructing a missed technical workflow later is usually slower and more stressful.

  • Flexible attendance does not change your responsibility to learn workflows demonstrated in class. Later assignments build on these skills.

  • Before asking for help:

    1. Read the lab or project instructions and locate the relevant Canvas module.

    2. Review the class Zoom recording if you missed or need to repeat a demonstration.

    3. Reproduce the problem and copy the exact command and error message.

    4. Push your current code before requesting help with a programming problem.

Supplement Materials

Provided by the instructor as a supplement to the textbook

Supplemental Material Website

../_images/4534-website.png

Code Example Repository

../_images/4534-code-repo.png

Communication

  • Keep updated 🔔

    • Group email

    • Canvas announcement

    • Discord @everyone message

  • Get help

    • Discord - sharable questions

    • Email; Discord DM - private questions, identify yourself first

    • Zoom (Office hour, appointment, etc.)

    • Always share your whole project by pushing to GitHub when asking help on code

  • Avoid 🚫

    • Canvas/Navigation messages

    • Provide error messages or screenshots without code

Exams

  • Two midterm exams

    • 75 minutes

    • First class meeting time in week 6 and 11

  • Comprehensive final exam

    • 150 minutes

    • during final exam week

    • University schedule

Assignments

  • Labs: 1 week to finish, no grace period

  • Review quizzes: due on class meeting day, no grace period

  • Programming projects: 3 weeks to finish

  • Checkpoint projects: 2 weeks to finish

  • Late submission policy for projects and checkpoints:

    • Two days of grace period. Not accepted after that.

    • Last project is due on Friday without grace period!

    • Late penalty: 10% < 1 day, 30% < 2 days

    • Exceptions: medical emergency, family emergency, etc. that will affect your work over many days. Please contact me as soon as possible.

    • 🚫 Excuses caused by poor time management, unreasonable personal engagement, situations that only affect a few days, forget the deadline, will not be considered for fairness to other students who finish on time.

    • Plan ahead and start early!

ADT, Data Structure, Algorithm

ADT, Data Structure, Algorithm