Skip to content

Latest commit

 

History

History
138 lines (91 loc) · 4.81 KB

Syllabus.md

File metadata and controls

138 lines (91 loc) · 4.81 KB

Olin DSA-17 Syllabus

Overview

Teaching Team + NINJAs

Your teachers are Hieu Nguyen, David Abrahams, Sidd Singal, and Katie Hite. Your NINJAs are Sarah Walters, Deniz Celik, Nitya Dhanushkodi, and Mike Bocamazo.

Course Learning Goals

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

Self Study

This is class is a 4 credit Independent Study (IS) in engineering. Note that it does not fulfill your OSS requirement.

Office Hours

  • 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.

Course Expectations

We have a set of expectations for this course, both for instructors and for students.

Instructors

  • 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

Students

  • 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)

Homework Assignments and Readings

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.

Late policy

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).

Honor Code

You will be expected to follow the Honor Code while doing work for this class.

Course Structure

Calendar

Weeks 0-2: Linear Data Structures

  • ArrayLists
  • LinkedLists
  • Stacks
  • Queues

Week 3: Maps and Hashing

  • LinearMaps
  • Hashmaps

Weeks 4-5: Search Engine Project

Week 6: Sorting

  • Bubble sort
  • Insertion sort
  • Mergesort
  • Quicksort
  • Heapsort

Weeks 7-8: Trees

  • Representations
  • Binary Search Trees
  • Augmentation and Self-balancing Trees

Weeks 9-11: Graphs

  • Representations
  • Breadth First Search
  • Depth First Search
  • Topological sort
  • Shortest Path Algorithms (Dijkstra and A*)

Weeks 12-13: Dynamic Programming and Greedy Algorithms

Weeks 14: Challenge Problems and Applications

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.

Grading

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:

Coding Assignment grading system (50 points total):

  • 50: Checked off on time
  • 25: Checked off late
  • 0: Not checked off