Skip to content

jorge-barreto/MAC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MAC - My Algo Course


This is intended to be documentation of my quest to achieve a high level of comprehension with what might be considered the basic algorithms of Computer Science. A large part of this effort will focus on working through 6.042J: Mathematics for Computer Science, as taught in Spring 2015 (hereafter "MCS"). This is due to my belief that an increased understanding of the mathematics involved will lead to a fuller comprehension of the algorithms we seek to study.

In particular, I will be working out the schedule to a 20 hour per week course which can be completed in the time I have: 13 weeks. The reason a 20 hour week is chosen is so that one can take this course while gainfully employed.

The goal is to cover the first two thirds of MCS thoroughly, and to do a light skimming of the last third (discrete probability theory). Emphasis will be placed on doing readings, watching lectures, doing the per-lecture in-class problems, and completing a problem set a week, as well as a midterm and final.

At the same time, we will move through the topics below, doing questions taken from EPI, CTCI, ADM, and IC. We will try to include roughly 20% questions to be done by hand, 80% questions on an online judge (typically LC). Emphasis is placed on understanding solutions: there ought to be strictly defined times that one can work on a problem for before they must take a look at the solution (where available). Beyond that, emphasis is placed on being able to code common approaches to problems easily and quickly (~10 minutes).

Taking This Course

The file CALENDAR may be used to schedule out one's weeks. It will contain references to the RESOURCES file and the collected Topics.

Ordering of CS Topics

This ordering is inspired by the many courses online and in books, but most of all by Skiena's layout of his Algorithm Design Manual. The motivation here is to engender a solid mastery over the common manipulations to the common data structures. From there we move onto more advanced problem solving techniques.

Please note that this approach misses many advanced topics necessary to doing well in coding interviews. These include parallel computing, system design, scaling solutions, and object oriented design. A small sampling of these topics are included in the final weeks.

  1. Arrays/Strings
  2. Stacks/Queues
  3. Linked Lists
  4. Trees/BST
  5. Hashing
  6. Searching / Sorting
  7. Un/weighted Graphs (2 weeks)
  8. Combinatorics / Backtracking (2 weeks)
  9. Dynamic Programming (2 weeks)
  10. Bit Manipulation

About

My Algo Course

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published