"A math course where you get to play" -- Your Instructor
Our awesome class!

Course Information

  • Course Number: CS 5006
  • Semester: Summer 2019
  • Hours: 6:00pm-9:15pm
    • Thur. Schedule: Lecture | Activity | Lab
  • Location: WeWork- 600 California Street 20C
  • Piazza: Forum Board (Office Hour and locations are listed in forum)
  • Instructor: Mike Shah
  • E-mail: mikeshah( a t )Northeastern
  • Office hour location: 20th floor lobby area.
  • Office Hours: Wednesday from 5-7:30 pm PST.
  • Teaching Assistant: Guoxing "Andy" Wang
  • E-mail:
  • Office Hours:
    • Friday: 3-10pm PST SF campus
  • Teaching Assistant: Kai Wu
  • E-mail:
  • Office Hours:
    • Wed: 5-10pm PST SF campus.

Schedule/Road Map

The following is our tentative syllabus for the course, some small changes should be expected throughout the semester. I will announce in class or through e-mail any major changes.

Acquire the Course Monorepo by clicking here Do not do a 'git pull' until class officially starts (Occasionally I make changes/spelling corrections)

Module Date Topic Assignments Note(s)
0 Thursday, June 27, 2019
  • Course Structure
  • Introductory Topic
    • Linear Search
    • Binary Search
  • Analysis of Algorithms
    • Pseudo-code review
  • Math Review
    • Big-Oh Notation
    • Big-Oh of Linked Arrays/Linked List/Stack/Queue.
    • Asymptotic Bounding
    • Sorts
    • Bubble Sort
    • Selection Sort
    • Insertion Sort
  • Lab: Sorting Algorithm Implementation in C
  • Begin Module!
A1 - Guessing Game (Due July 12 anywhere on Earth)
-- --
- Thursday, July 4, 2019
--Independence Day, no classes--
-- --
1 Thursday, July 11, 2019
  • Recursion in C
    • Countdown and iteration
  • How to beat N-Squared?
    • Divide and Conquer
    • Merge Sort and Recurrence
  • Trees
    • Trees
    • Tree Traversal with DFS
  • Lab: Implementing Recursion and DFS
  • Begin Module!
A2 - Sorting and Analysis (Due July 23 anywhere on Earth)
-- --
2 Thursday, July 18, 2018
  • Tree Review and DFS
  • Trees are Graphs
  • Graph Representation and Notation
    • Adjacency List
    • Matrix
  • Breadth-First Search
  • Topological sort
  • Dijkstra's Shortest Path
  • Lab: Topological sort with adjacency matrix
  • Begin Module!
A3 - Trees and Sorting (Due July 30 anywhere on Earth)
-- --
3 Thursday, July 25, 2019
  • Greedy algorithms
  • Dijkstra's Shortest Path and Analysis
  • Heaps (Keeping balanced)
    • Min/Max Priority/queue
    • Sort
  • Randomized Algorithms - Quicksort
  • Lab: Quicksort with strings
  • Begin Module!
-- --
-- --
4 Thursday, Aug. 1, 2019
A4 - Hash map (Due Aug. 9 anywhere on Earth)
-- --
5 Thursday, Aug. 8, 2019
  • Start of class
    • Trace Evaluations
    • Class Picture
  • Tries
  • String Matching
  • Short Topics
    • Radix Sort
    • Minimum Spanning Trees
    • Instructors Choice
  • Lab: Trie to Search
  • Begin Module!
-- --
The last class you must physically be present
6 Thursday, Aug. 15, 2019
  • Take the exam online on blackboard by August 17th!
  • Have a wonderful summer and Fall Semester!
Study Guide click here
Exam will be open on blackboard by 8/9/19 at 2am, and must be finished by 8/17/19

Course Description

Welcome to an introductory course in Algorithms! This course is a hands on teaching of the fundamentals of Algorithms. The fundamentals of algorithms includes how to write an algorithm, analyze an algorithm, and compare the performance of algorithms. In this class, we use the 'C' programming language (for which an introduction will be given), as our tool for implementing algorithms and data structures. Our other tools are pencil & paper, a text editor, and git. The expectation is that you have not previously programmed in the C programming language, but have previously programmed in some other language.

Registrar Description: Introduces the basic principles and techniques for the design and implementation of efficient algorithms and data representations. Considers divide-and-conquer algorithms, graph traversal algorithms, linear programming, and optimization techniques. Covers the fundamental structures for representing data, such as hash tables, trees, and graphs.

Course Objectives

By the end of this course, you will be ready to:

  • Analyze and understand the time complexity of a given algorithm.
  • Have a grasp of the mathematics used to understand algorithms, including familiarity with logrithms, polynomials, recurrences, and the master theorem.
  • Explain design trade-offs given a set of algorithms and data structures regarding their time and space copmlexity.
  • Be comfortable writing, compiling, and running small (less than 1000 line) C programs.


There will be no required textbook for this course. However, these resources have been vetted, and I recommend for mastery (while taking this course, and reviewing later on in your career).

Academic Integrity and Non-Discrimination

Students and instructors are to follow the Northeastern policies on these important issues.

  • Northeastern Non-Discrimination Policy - This classroom is a safe space for the instructor and students to talk about ideas, share viewpoints, and learn.
  • Northeastern Academic Integrity Policy - You only cheat yourself if you are not honest. Most often cheating occurs when an individual falls behind or perhaps has other circumstances occurring in their life. Please consult the instructor before ever considering cheating.
    • If you are caught cheating I have to report the violation. My official policy is you receive a 0 in the course. Always remember, if you use any external sources, you must cite them.
  • Student Code of Conduct: Students and instructors will follow the following guide for how we conduct ourselves. This is to create a respectful environment where everyone can learn.

Make-Up Policy

Students participating in varsity athletics(this does not include club sports or intramurals) or other University sanctioned events may have the need for a make-up. Please contact me in advance of such events, so that appropriate accommodations can be made.

Occasionally, other life events and circumstances occur that were not planned. If this is the case, please e-mail me privately.

E-mailing me asking for extensions just because is unfortunately not fair to your classmates. The 10% penalty for each day late has to be enforced so I do not get taken advantage of.


Part of what makes Northeastern University unique, is our diverse cohort of students, faculty, and staff. In order to support this, Northeastern is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the University experience. If you have a disability that requires accommodations, please contact the Student Accessibility Services office at or (617) 373-2675 to make an appointment with the Disability Resource Center representatives in 20 Dodge Hall to determine appropriate accommodations.

Lateness and Attendance Policy

Students who do well in this course tend to show up to the course consistently, participate, and engage with their peers. Come to class, come on time, and build good habits! In-Class activities that are not attended are a zero.

Assessment/Course Polices

Please find below the grading distribution that will be used for this course to compute a weighted average for your final grade. You will find grades you earn through the semester on blackboard and your final grade in banner.

  • In-Class Activity: 5%
  • In-Class Labs:     20%
  • Exam/Quiz:         20%
  • Assignments:       55%
    • (Each Assignment worth the same % of points)

  • The grade system follows the University Grading System.
    • A  = 95 – 100
    • A- = 91 – 94
    • B+ = 87 – 90
    • B  = 83 – 86
    • B- = 80 – 82
    • C+ = 77 – 79
    • C  = 73 – 76
    • D+ = 67 – 69
    • D  = 63 – 66
    • F  =  0 – 62
  • In the event of a snow day (i.e. we miss a lab or in-class activity) the weight of each assignment increases (There may also be shuffling of course material if we are interrupted).
  • The expectation is that the assignments are fair but difficult, so you should start early!
  • Late Submissions of Assignments receive 10% off per day submitted late (up to 3 days max, then 0% received).
    • Unfortunately, with 100+ students I cannot make individual exceptions fairly to your classmates who are likely making other personal sacrifices.
  • Assignments that do not compile/open receive no credit Simply put, programs that do not compile do not do anything.
  • There are no "re-grades" or points awarded one week after your grade is posted. "re-grades" may result in a higher, equal, or lower score.
    • There are no "re-grades" after the semester is over.
    • Do not ask multiple members of the course staff for "re-grades"
  • If you are currently wait listed, you must submit your homework on time. That is the gamble! If you do not have blackboard access, you will submit by e-mail or other course mechanism.
  • There are no extra credit assignments. I reserve the right to add points to assignments that do go above and beyond however.
  • I reserve the right to modify the grading scale in your favor if you show exemplary proficiency in any of the categories. I will never modify the scale to lower a students grade.
  • In class work cannot be made up at a later date unless otherwise arranged with the instructor well in advance.
    • Course work completed after the date cannot be graded, as solutions will have been discussed (this includes if taking this course for an Incomplete).
    • Once again, "in-class" work must be completed in-class unless there is a documented emergency or you have prearranged with the instructor a make-up well in advance.
  • No Facebook, no cell phones. Not only does it distract you, it distracts others! (Divide your tuition by lecture hours and perhaps you will be more motivated as well!)
  • Everyone needs to come see me in office hours (or by appointment) at least one time during the semester to introduce yourself. The purpose is so that you:
    • Know where my office is.
    • Get used to coming to office hours.
    • Let me know how I can help you achieve your goals.