Skip to content

Latest commit

 

History

History
143 lines (95 loc) · 4.99 KB

SYLLABUS.md

File metadata and controls

143 lines (95 loc) · 4.99 KB

Olin DSA-18 Syllabus

Overview

Teaching Team + NINJAs

Your teachers are Ben Ziemann, David Abrahams, Nick Steelman, and Jingyi Xu. Your NINJAs are Serena Chen, Jason Lan, Erica Lee, Will Thorbecke, and Kevin Zhang.

Course Learning Goals

Students will improve their abilities to …

  • Develop and iterate on an approach to solving software engineering problems
  • Communicate and collaborate on data structure and algorithm design and implementation
  • Understand why common data structures and algorithms are used
  • Effectively and efficiently solve problems by using data structures and algorithms
  • Assess and communicate the efficiency and complexity of algorithms

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

Office hours are located in the first floor lounge of East Hall during the following times.

Monday

       8-9PM Willem & Kevin
       9-10PM Willem, Kevin, David & Serena
       10-11PM David & Serena

Wednesday

       8-10PM Jingyi & Jason

Thursday

       8-9PM Willem, Kevin & Erica
       9-10PM Nick, Willem, Kevin & Erica
       10-11PM Nick

Sunday

       8-10PM Ben, Serena

If you need help and it's not during office hours, check out our Slack channel, #dsa-18. 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 with data structures and algorithms
  • 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

Your homeworks for this class will be coding assignments. You will receive credit for homework via checkoffs. You must go to NINJA hours before homework is due to be checked off.

Late policy

You will have a “bank” of 7 late days. They can be used all for one assignment (get checked off seven days on one assignment) or split them up across multiple assignments. If you turn in an assignment late and you still have late days left, you can still receive full credit. Late days will only be subtracted on days there are NINJA hours. This means that if an assignment is due on Thursday night and you get checked off on Sunday, you lose one late day. If you get checked off on Monday, you would lose two late days (one day for Sunday, one day for Monday).

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
  • Hashing, Maps

Week 3-4: Sorting

  • Insertionsort
  • Mergesort
  • Quicksort
  • Heapsort

Week 5-6: Trees

  • Representations
  • Binary Search Trees
  • Self-balancing Trees

Weeks 7-9: Graphs

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

Weeks 10: 8 puzzle project

Weeks 11: Recursive backtracking

Weeks 12-13: Dynamic Programming and Greedy Algorithms

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