Phil Chan

322 Harris Center, 674-7280

`pkc@cs.fit.edu`

Office Hours: MW 11am-1pm (or by appointment)

Teaching Assistants:

- Jesse Torres, jtorres2015@my.fit.edu; Office hours: Tue 1-3pm, Harris Center 211
- Thomas van Haastrecht, tvanhaastrec2015@my.fit.edu; Office hours: Thu 1-3pm, Harris Center 211

**Textbook**

- Thomas A. Standish,
*Data Structures, Algorithms & Software Principles in C*, Addison Wesley, 1994. - (For java, I recommend: Goodrich et al.,
*Data Structures and Algorithms in Java*, 6th Edition, Wiley, 2014.)

**Groups -- Seating of groups during lectures
**

**
A Short Guide to code01.fit.edu
**

**
**

**
Assignments (Submit Server)
**

- HW1 --- hw1.c; Sample Input File 1, Sample Output 1, Sample Input File 2, Sample Output 2
- HW2 --- hw2.c, hw2_crypto.c, hw2_crypto.h;
Sample Input File 1 on code01, Sample Output 1,
Sample Input File 2 on code01, Sample Output 2

[*for initial development* on Windows: Sample Input File 1, Sample Input File 2 on Windows];

Java version: HW2crypto.java, Sample Input File 1, Sample Output 1, Sample Input File 2, Sample Output 2 - HW3 --- hw3.c,
Sample input data file,
Sample input query file,
Sample output;

Sample input data file 2, Sample input query file 2, Sample output 2 - HW4 --- hw4.c, Sample input 1, Sample output 1; Sample input 2, Sample output 2
- HW5 --- hw5.c,

fakeRandHeight.c, fakeRandHeight.h, doublyLinkedList.c, doublyLinkedList.h

(FakeRandHeight.java, DoublyLinkedList.java)

Sample input 1, Sample output 1; Sample input 2, Sample output 2 - HW6 --- hw6.c,

hw6in1.txt, hw6out1.txt

hw6in2.txt, hw6out2.txt

hw6out2extra1.txt, hw6out2extra2.txt, hw6out2extra3.txt - Term Project ---

- C: bogglePlayer.c, (your implementation is mostly in this file)

bogglePlayer.h (don't modify)

evalBogglePlayer.c (don't modify),

evalBogglePlayer.h (needs to be modified for different operating systems and has compilation instructions),

word.c,

word.h

- Java: BogglePlayer.java (your implementation is mostly in this file),

Word.java,

Location.java,

EvalBogglePlayer.java (don't modify),

- Data: words.txt (possible known words, "dictionary words")
- Performance of initial submissions for the term project

- C: bogglePlayer.c, (your implementation is mostly in this file)

**Lecture Notes**

- Introduction
- Growing your mind, The power of believing that you can improve, Neuroplasticity (cartoon), Neuroplasticity (Lara Boyd)
- Don't eat the marshmallow [setup: 0:25-0:48; kids: 2:45-4:45]; Resisting the marshmallow and the success of self-control [1:25 to 3:00; if-then plan: 4:30-5:30]
- Lists (Ch8: 8.1-8.2) Arrays, Singly Linked Lists, Doubly Linked Lists
- Analysis of Algorithms (Ch6: 6.1-6.4) Analysis of Algorithms, Big-O in How to: Prepare for a Google Engineering Interview
- Recursion (Ch3) Recursion
- Stacks and Queues (Ch7) Queues, Stacks
- Trees (Ch9.1-9.6) Trees, Turkducken and Trees, Priority Queues, Emergency Triage Scale, Google Ad Rank, Heaps
- Priority Queue Sorting, HeapSort (Ch 13.3) PQ Sorting and HeapSort, Obama on sorting
- Hashing (Ch11) Hash Tables, # of Facebook users
- Sorted/Ordered Maps (Skip Lists section) Skip Lists
- Graphs (Ch10: 10.1-10.6, MST) Graphs, Breadth-first Search, Depth-first Search, Connectivity and Spanning Trees, Maze-Solving Robot, Shortest Path, Directions in Google Maps, Minimum Spanning Tree, Directed Graphs
- Search Trees (Ch9.7-9.11) Binary Search Trees, AVL Trees, 2-4 Trees, Tries, Huffman Encoding, text compression
- Text Processing: Text Processing, Pattern Matching, Longest Common Subsequence
- Sorting (Ch13.4 MergeSort, QuickSort) Merge Sort, Quick Sort
- Data Structures and Algorithms: A Summary