Skip to content

Instantly share code, notes, and snippets.

@peanutpi
Created August 15, 2016 16:47
Show Gist options
  • Save peanutpi/c75b64387b09e29076c64963ba712080 to your computer and use it in GitHub Desktop.
Save peanutpi/c75b64387b09e29076c64963ba712080 to your computer and use it in GitHub Desktop.
Learning

Academic Learning

Develop logical reasoning and knowledge of discrete math

  • Online Resources:
  • partI: Proofs
    • Chapter1: Propositions
    • Chapter2: Patterns of proof
    • Chapter3: Induction
    • Chapter4: Number theory
  • partII: Structures
    • Chapter5: Graph theory
    • Chapter6: Directed graphs
    • Chapter7: Relations and partial orders
    • Chapter8: State machines
  • partIII: Counting
    • Chapter9: Sums and asymptotics
    • Chapter10: Recurrences
    • Chapter11: Cardinality rules
    • Chapter12: Generating functions
    • Chapter13: Infinite sets
  • partIV: Probability

Develop strong understanding of Algorithms and Data Structures

Develop a strong knowledge of math.

Quite often, a single problem will require some of the following items together with Number Theory knowledge, so that you can solve it:

  • Dynamic Programming
  • (Basic) Enumerative Combinatorics: nCr and nPr
  • Lucas' Theorem
  • Inclusion-exclusion principle
  • Probability

Develop a strong knowledge of operating systems

Learn Artificial Intelligence

Learn how to build compilers

Learn cryptography

Learn Parallel Programming

Non-Academic Learning

  • Work on project outside of the classroom.
  • Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.
  • Work on project with other programmers.
    • Practice your algorithmic knowledge and coding skills Notes: Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.
    • Online Resources:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment