In a modern piece of software, you wouldn’t have tests for just one class. You’d have exhaustive tests for all the functionality in your program. However, it would be challenging to put all of the tests in one single tests.cpp file. [Read more…]

## Setting up Docker and MySQL

Docker is an application that simplifies the create/deploy/run software dev cycle by using the concept of containers. A container is a way to package up an application and all of its dependencies.

Do the following to get Docker installed and a MySQL server running in a container. [Read more…]

## Spring 2018 Data Structures Prep

It is no secret that CSE 2341 – Data Structures – is a very demanding course. The course requires a great deal of dedication and perseverance. I have received a few requests about what to do over winter break in terms of review and prep. This blog post has some suggestions and links to possibly useful info.

## Gearing Up for a taste of Data Science

Here are some things to do to gear up for getting a taste of Data Science in CSE 3330.

- Download and install R. You can download it from this link
- Download and install RStudio from this link. Scroll down to the bottom of the page to find the installers for various platforms. Note that you will run this on your laptop directly, not through vagrant or anything like that.

Good Resources:

- The RStudio folks also produce some very useful cheat sheets for using R and RStudio. You can find a list of them here.
- Data Camp’s Introduction to R (a Free Course)

More to come…

## SMU in Weimar 2017 Info

Some important/useful information for our amazing study-abroad trip this summer:

- SMU-in-Germany,2017 Student Handbook_3.30.16
- SMU in Germany Orientation Meeting #1,2017
- How to Order Train Tickets in Germany

Travel Info

Class Docs

## Binary Trees and Binary Search Trees

Trees are a very important data structure, especially binary trees and its variants. Please watch the videos linked below to get up to speed on Trees, Binary Trees, Binary Search Trees.

- Data Structures: Introduction to Trees
- Data Structures: Binary Trees
- Data Structures: Binary Search Trees
- Binary Search Trees: Implementation in C/C++

## More on Linked Lists in C++

Linked lists can be tricky some times. Here are some additional resources as you’re working through understanding them.

Youtube Videos:

- Data Structures: Linked Lists in C++ by ReelLearning (Singly Linked Lists)
- For Singly Linked Lists
- This is a playlist with 5 or 6 vides; very clearly explained.

- How to Create a Doubly Linked List in C++
- Linked Lists (including Doubly Linked Lists)
- More on Linked Lists

## Learning SQL

For those new to it, SQL can be difficult initially to wrap your head around. One of the reasons is because it requires a different type of thinking from other languages like Java, Python, or C. You have to learn to think in sets (remember all those Venn diagrams from various places throughout school?). [Read more…]

## B+ Trees

B+ Trees are very efficient search tree data structures that are related to binary search trees. They are particularly useful in indexing situations where the entire data set cannot fit into main memory at one time. Each node in a B+ Tree contains multiple keys and pointers (as compared to 1 key and two pointers in a binary search tree). [Read more…]

## Binary Trees

Binary trees are a very fundamental data structure in computer science. As you continue to learn and explore in different sub-domains of CS, you’ll see them pop up quite frequently. Here are some things you should Binary Trees and their cousins.

- General Binary Trees
- Pre -, In -, and Post-order traversals
- The height (or depth) of a tree
- Different node terminology (leaf, level, ancestor, descendant, etc.)
- Some info to peruse

- Binary Search Trees
- Remember, binary search trees are binary trees that also conform to the binary search property: all values in the left subtree of a node are smaller and all values in the right subtree of a node are larger (duplicates not withstanding)
- Some algorithms you should think about w.r.t. bin search trees:
- inserting a new value
- searching for a value
- deleting a value from the tree
- determining the height of the tree
- determining if a binary tree is indeed a binary search tree
- what’s the most efficient way to create a copy of a binary search tree?
- what’s the best way to destroy (delete all nodes) a binary search tree?

- Some info to peruse
- David Eck link above
- Cliff Shaffer’s Data Structures and Algorithms book linked above Section 5.4 starting on page 168.

- AVL Tree – a Self Balancing Binary Search Tree
- AVL Balance Property: for every node n in an AVL tree, the height of the left subtree and the height of the right subtree may differ by no more than 1.
- Some info to peruse
- Cliff Shaffer’s PDF Book Section 13.2.1
- AVL Trees at Tutorials Point
- AVL Tree Animation – let’s you see the operation of inserting, searching, and deleting in real time.