CSE2101 EECS 2101: Fundamentals of Data Structures
                                     Jeff Edmonds: Winter 2024-2025 M

Jeff, Readme, Common, Marking, Times, Dates, Description,
Enrolling, Mental Health, EClass, EClassM, Zoom, Videos, Solutions

Topics Slides Old Videos New Videos Notes
(Java,OO) Jeff skips
Abstract Data Types
Positions and Pointers
Contracts and Invariants
Running Time
Recursion x
Midterm Review
Balanced Trees
Hash Tables
Graphs
Algorithmic Paradigms
Other
Review

Request:
     Jeff tends to talk too fast. Please help him go pole pole slowly.
     - Please ask questions.
     When you email me something put 2101 in the subject.
     - A photos helps if you want me to know who you are.

How to Study:
     Watch, Pause, Think, and Unpause the slides/videos.
     Watch in the video the pre and post conditions for the next problem.
     Pause the video and try to solve it yourself.
     If you get stuck, watch for another slide or two.
     Repause it. Was that enought of hint so that you can now solve it?
     After watching the entire solution, ask yourself what you were missing.
     How did Jeff complete the steps?
     Maybe set all notes aside and see if you can now write up the solution on your own.

Texts:

Other's web pages:
Introduction: (ppt)


Andy's slides: These are slides of
Andranik Mirzaian.
My current thinking is to not cover it.
(Partly because I don't know it).
But you may find it useful.


Abstract Data Types: (
ppt, Notes Data Structures)
           (What the user of the data structure needs to know about how it is
           used, without needing to know how it is implemented.)


Positions and Pointers: (
ppt)
           (One data structure points at another forming linked lists and trees.
           They are often a challenge for new programmers in C or Java.)


Contracts, Assertions, and Invariants: (
ppt, Steps, Notes Invariants, Notes Data Structures)
           (Big systems need clear specifications about how its parts
           communicate. Big systems, data structures, and algorithms alike need
           to have clear specifications that never change.)
           (Jeff strongly believes that loop invariants is the most important topic in
           Algorithms. Instead of worrying about the entire computation, only
           worry about one step at a time - make progress while maintaining the
           loop invariant.)


Asymptotic Analysis of Time Complexity: (
ppt, Useful Math)
           (We classify algorithms based on whether they are polynomial or
           exponential time.)


Recursion: (
ppt, Notes)
           (Again do not try to understand the entire computation. Trust your
           friends to solve a smaller instances of your problem and use these to
           the solve your own instance.)


Midterm Review:


Balanced Trees:
ppt
           (A great data structure storing objects is a binary tree. If it is
           balanced than its depth is only log(n) with n nodes. Hence, operations
           are quick.)


Maps Hash Tables and Dictionaries:
ppt
           (Items are "randomly" placed in at table.)

Graph Search Algorithms (ppt, ass, ass sol, Soccer Strategies)
           (Graphs, ie nodes and edges, are very useful for representing
           data. The first task on them is to search through the nodes. )


Algorithmic Paradigms: (
ppt, greedy, dynamic programming, NP)
           (There are a few programming meta-algorithms that most algorithms fit
           into. These should be understood.)


Other: (
Andy's Text Processing and Memory Management:)

Machine Learning: I would love to cover some.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

9