Your teachers are Hieu Nguyen, David Abrahams, Sidd Singal, and Katie Hite. Your NINJAs are Sarah Walters, Deniz Celik, Nitya Dhanushkodi, and Mike Bocamazo.
Students will improve their abilities to …
- Develop and iterate on their own approach to solving programming problems
- Communicate the rationale behind their design decisions
- Assess and communicate the efficiency and complexity of their solutions
- Design efficient data structures and algorithms to effectively solve problems
- Understand why common data structures and algorithms are used
This is class is a 4 credit Independent Study (IS) in engineering. Note that it does not fulfill your OSS requirement.
- Monday: 6-8pm Deniz, 8-10pm Nitya
- Wednesday: 6-8pm Deniz, 8-10pm Sarah
- Thursday: 6-8pm Nitya, 9-11pm Sarah
- Sunday: 7-11pm Mike
If you need help and it's not during office hours, check out our Slack channel, #dsa-17. We advise using it over emailing us when you have code questions (but emailing us is great too). Other people might have the same questions, so using the Slack channel can help them out too.
We have a set of expectations for this course, both for instructors and for students.
- Accommodate all experience levels
- If we don’t know the answer to something, we’ll be willing to work with you to figure it out
- Return assignments in a timely manner
- Be open and responsive to feedback
- Treat all students with respect
- Professional conduct
- Accommodate and respect all experience levels
- Complete work, come to class, and be engaged.
- Treat the course, the instructors, and the ninjas with respect
- Communicate with instructors (provide constructive feedback, let us know if you’re falling behind or won’t be in class)
You will have both code and reading assigned for this class. We expect you to complete the readings before the next class period. You will receive credit for homework via checkoffs. You must go to NINJA hours before homework is due.
You will have a “bank” of 5 late days. They can be used all for one assignment (get checked off five days on one assignment) or split them up across multiple assignments. Late days are used on weekdays only. If you turn in an assignment late and you still have late days left, you can still receive full credit.
If you are out of late days, your homework will lose 50% of the total value of the assignment. We will accept late work up to week after the assignment was originally due. If you are having trouble with an assignment or have extenuating circumstances and will be unable to complete the assignment, please let the teaching team know (either in person or via email).
You will be expected to follow the Honor Code while doing work for this class.
- ArrayLists
- LinkedLists
- Stacks
- Queues
- LinearMaps
- Hashmaps
- Bubble sort
- Insertion sort
- Mergesort
- Quicksort
- Heapsort
- Representations
- Binary Search Trees
- Augmentation and Self-balancing Trees
- Representations
- Breadth First Search
- Depth First Search
- Topological sort
- Shortest Path Algorithms (Dijkstra and A*)
For the first six weeks, we will focus on some basic data structures and their implementation in Java, as well as how they can be used in programming interview questions and puzzles. You will apply these data structures in the first mini-project: a wikipedia search engine.
We will then study five sorting algorithms, before moving on to looking at the Tree and Graph data structures, as well as more specific algorithms associated with them. Then we’ll look at two very specific types of algorithms: Greedy and Dynamic Programming, both of which are very interesting paradigms of thought.
Throughout the course, we will look at some key concepts like runtime and space analysis, data structure augmentation, and intentional decision-making.
If you want to know your current grade in the class at any point, ask us and we’ll let you know.
Point values/totals subject to change
Grade Scale:
- 92%: A
- 90%: A-
- 88%: B+
- 82%: B
- 80%: B-
- 78%: C+
- 72%: C
- 70%: C-
- 68%: D+
- 60%: D
This will be the rubric we will be using for your homework assignments:
- 50: Checked off on time
- 25: Checked off late
- 0: Not checked off