FYI: code should compile but may not. THIS IS ONLY LECTURE MATERIAL so plz dont use for private assignments. code may not be up to standards, lecture notes
Mukund Iyengar
[email protected]
Office: Buchard 204
Hours: Monday 2.00 - 4.00 pm (or by appointment)
Email is probably the best form of communication. I do get a lot of emails, but I am reasonably prompt in replying to them all. Besides online communication, I will alos be happy to see you during or outside my office hours, just send an email! My office is in Howe, and my office hours are Monday, 2.00 pm - 4.00 pm.
Grading is loosely comprised of homeworks (55%), midterms (40%), and class participation (5%). I use a +/- grading scheme.
Homeworks, take-homes, and projects are typically submitted online on Canvas. A portal for submissions will be made available at appropiate time.
- Analysis of Algorithms: Time complexity, Space (storage) complexity, Big-O, small-O, and theta notations
- Solving problems using programming: Functions (modular programming), Object oriented programming (classes/objects), Recursion, Analyzing algorithms involving recursive forms using telescoping and substitution.
- Simple (linear) Data Structures: Linked Lists, Doubly linked lists, Stacks (push, pop, display), and Queues (enqueue, dequeue, display).
- Trees (non-linear data structures): Tree definitions and properties, Tree traversals (pre-, post-, in-order), Tree operations (insert, delete), Expression trees (Prefix, Infix, Postfix).
- Binary Search Trees: Lookup, Insert, Delete and Traversals.
- Priority Queues (PQ), PQ using linked lists, Heap as PQ
- Advanced Data Structures (time permitting): Self balancing trees, including Red Black Trees (creation) and AVL Trees
- Sorting: Bubble sort, Quick-sort, Mega-sort, Insertion-sort, and Heap-sort.
- Hash Tables: Hashing functions, Lookup using Hash Tables, Separate chaining, Linear probing, and Quadratic probing.