3013-Algorithms
General Course Info
- Days: MWF 10:00 a.m. - 10:50 a.m.
- Location: BO 320
- Semester: Monday January 18th - Friday May 5th
- Holidays:
- Spring Break Monday March 13th - Friday March 18th
- Easter Wednesday April 5th - Friday April 7th
- Last Day for “W”: Monday March 27th
- Last Day of Class: Friday May 5th
- Final Exam: Wednesday May 10th from 10:30 am - 12:30 am
Resources
Here are some open source books for the course. I hope you guys appreciate the amount of effort it takes to put material together and then put it on the internet for free.
- Discrete Structures for Computer Science: Counting, Recursion, and Probability
- Thanks To: Michiel Smid
- Open Data Structures
- Algorithms
- Thanks To: Jeff Erickson
- Wikipedia Collection of Data Structures
Assumed
- This course assumes you know what
array based data structures
andlist based data structures
are. - For example you should be able to write (from scratch) an
array based stack
andqueue
along with alist based stack
andqueue
. If you cannot, go study. - You should have a general understanding of recursive functions.
- You should have a general understanding on graph structures more specifically be able to write and traverse a basic Binary Search Tree (BST).
- Basic OOP skills. Mainly encapsulation and implementation hiding, in other words packaging a data structure with the methods to manipulate that data structure.
Note About This Courses
I will try to go over the list of topics (see below) in the order they are listed, and I have a path that I like to follow when introducing these topics. However, I approach each course with the hopes that student interaction and feedback will steer the course in a direction that may not be what was previously planned. This is stressful for some of my more "organized" students, and I can appreciate their angst. So I always provide a study guide before each exam to ensure everyone is on the same page with the topics I expect you to study. The study guide could have actual test type questions, small programs to implement, or vocabulary and topics.
Algorithm Categories
- Backtracking
- Brute Force
- Dynamic Programming
- Greedy Algorithms
- Recursion
Topics List
As I stated above, we will try to stay on task, but let me give you an example of why things can't always be taught sequentially. There are always multiple ways to implement every data structure. For example there is a data structure called a priority queue. It can be implemented in many ways, some better than others. Some of these won't make sense right now, but you will get the idea. Here are a few:
- Use an array, and order the items in the array using the "priority" value.
- Use a singly linked list, and order the nodes using the "priority" value.
- Use an array based binary tree, called a binary heap and using the "priority" value to order the heap.
- Use a doubly circular linked list, and follow the algorithm known as a Fibonacci Heap to keep the items in order.
So ultimately based on class input and questions that come up in discussion, I may jump around a bit so an explanation will make sense. Remember though ... I make study guides for each test!!
- Array Based vs List Based Structures
- Array Based Implementations
- Complexity
- Introduction
- Will be discussed with each data structure
- Linked List Types
- Stack, Queue, Priority Queue, Deque
- Array Based Binary Search
- Binary Tree's
- Components
- Array Based
- Binary Heap (Array Based)
- Fibonacci Heap (Possibly)
- Binary Tree Implementation (List Based)
- Trie
- Balanced Tree's
- AVL
- Red Black (Possibly)
- Hash Tables
- Graphs
- Array Based and List Based Implementations
- Basic Graph Algorithms
- DFS (Depth-First Search)
- BFS (Breadth-First Search)
- Minimum Spanning Trees
- Prim's Algorithm (Minimum Spanning Tree)
- Kruskal's Algorithm (Minimum Spanning Tree)
- Shortest Path
- Dijkstra's Algorithm (One Way Shortest Path)
- A-Star Algorithm (Possibly)
- Sorting:
- O(n^2)
- Bubble Sort
- Selection Sort
- Insertion Sort
- O(n lg n)
- Merge Sort
- Quick Sort
- Other
- Counting Sort
- Radix Sort
- O(n^2)
Resources
Grading
Categories | Grade | ||
---|---|---|---|
Exams (3) | ⇦40% | A ⇨ | 89-100 |
Programs (3-5)1 & Assignments | ⇦25% | B⇨ | 79-88 |
Final2 | ⇦20% | C⇨ | 69-78 |
Algorithm Presentations | ⇦05% | D⇨ | 59-68 |
Github Portfolio | ⇦10% | F⇨ | below 59 |
1. Despite the low overall value of the programming portion of the course, ALL programs must be turned in running to pass the course. They don't have to be necessarily correct, but they must run and they need to at least approach the solution (a "Hello World" program will not work).
2. Plane ticket prices, events like weddings, or trips out of the country are not valid excuses for missing the final exam at its scheduled time. I will not make accommodations for anything other than an issue vetted by the dean of students.
3. The 10% for project presentations will be taken from Programs & Assignments if we have time to do presentations.
Academic Misconduct Policy & Procedures
Cheating, collusion, and plagiarism (the act of using source material of other persons, either published or unpublished, without following the accepted techniques of crediting, or the submission for credit of work not the individual’s to whom credit is given . The Department of Computer Science has adopted the following policy related to cheating (academic misconduct). The policy will be applied to all instances of cheating on assignments and exams as determined by the instructor of the course. (See below for link to MSU definitions.)
- 1st instance of cheating in a course: The student will be assigned a non-replaceable grade of zero for the assignment, project or exam. If the resulting grade does not result in a letter grade reduction, the student will receive a one letter grade reduction in course.
- 2nd instance of cheating in a course: The student will receive a grade of F in course & immediately be removed from course.
- All instances of cheating will be reported to the Department Chair and, in the case of graduate students, to the Department Graduate Coordinator.
Note: Letting a student look at your work is collusion and is academic misconduct!
See Also: MSU Student Handbook: Appendix E: Academic Misconduct Policy & Procedures https://msutexas.edu/student-life/_assets/files/handbook.pdf.