CS: Difference between revisions
From charlesreid1
No edit summary |
|||
| (52 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
computer science: the science of problem-solving with computers, computational devices, and computational methods. | |||
=Study Notes= | =Study Notes= | ||
{{Main|Study Guides}} | |||
We | We put together a repository with a detailed outline of topics in computer science as part of a CS study plan. We updated it with notes and code (links to this wiki, and to git repos). | ||
That repository can be found here: https://git.charlesreid1.com/cs/study-plan | |||
=Topics= | =Topics= | ||
==Computer Science== | ==Computer Science Topics== | ||
List of topics, with links to notes on this wiki and code in git repos: https://git.charlesreid1.com/cs/study-plan/src/master/TODOSoftwareEngineering.md | |||
List of topics: | |||
* Data Structures | |||
* Algorithms | |||
* Mathematics | |||
** Combinatorics | |||
** Probability | |||
** Number Theory | |||
** Numerics | |||
* Languages and APIs | |||
===Data Structures=== | |||
Main Data Structures Page: [[Data Structures]] (see also: [[Template:DataStructuresFlag]]) | |||
Polished summaries of information: [[Study Guides]] | |||
Link: https://git.charlesreid1.com/cs/study-plan/src/master/TODOSoftwareEngineering.md | |||
Topics: | |||
* [[Data Structures]] | |||
* [[Algorithm complexity]] | * [[Algorithm complexity]] | ||
* [[Arrays]] | |||
* [[Lists]] | |||
* [[StacksQueues]] | |||
* [[Priority Queues]] | |||
* [[Maps]] | |||
* [[Binary Trees]] | |||
* [[Graphs]] | |||
* [[Abstract Data Types]] - ADTs for general design of data structure classes | |||
===Algorithms=== | |||
{{Main|Algorithms}} | |||
Algorithms can be divided into categories: | |||
* [[Algorithms/Sort]] - basic and advanced algorithms for sorting data | |||
* [[Algorithms/Search]] - search algorithms for searching and search-related data structures | |||
* [[Algorithms/Combinatorics and Heuristics]] - solving problems involving finding permutations or searching large solution spaces | |||
* [[Algorithms/Dynamic Programming]] - solving problems by breaking them down into sub-problems | |||
* [[Algorithms/Strings]] - algorithms for operations on strings | |||
* [[Algorithms/Data Structures]] - algorithmic analysis of data structures | |||
* [[Algorithms/Graphs]] - graph theory, construction of graphs, graph algorithms | |||
Programming practice and writeups: | |||
* Competitive programming | |||
* [[Project Euler]] | |||
* Research and Teaching Blog - https://charlesreid1.github.io | |||
===Combinatorics and Probability=== | |||
[[Analytic Combinatorics]] | |||
Outline of combinatorics content: | |||
* [[ | * Combinatorial structures - use ordinary generating functions | ||
** | * Labelled structures - use exponential generating functions | ||
** | * Combinatorial parameters - use multivariate generating functions | ||
Basic Combinatorics: | |||
* [[Algorithms/Combinatorics]] | |||
** Binomial coefficients | |||
** Multinomial coefficients | |||
** Multisets | |||
** Coverage of combinatorics in [[Art of Computer Programming]] | |||
[[Generating Functions]]: | |||
* [[Ordinary Generating Functions]] | |||
* [[Exponential Generating Functions]] | |||
Excellent textbook: http://algo.inria.fr/flajolet/Publications/book.pdf | |||
===Graph Theory=== | |||
{{Main|Graphs}} | |||
Notes on graph theory: | |||
* [[ | * [[Graphs/Definitions]] | ||
** | * [[Graphs/Matching]] | ||
* [[Graphs/Connectivity]] | |||
Notes on data structures for graphs: | |||
* [[ | * [[Graphs/Data Structures]] | ||
* [[Graphs/ADT]] | |||
==Numerics== | ===Numerics=== | ||
Link: https://charlesreid1.com | Link: https://git.charlesreid1.com/cs/study-plan/src/master/TODONumerics.md | ||
[[Numerics]] topics: | |||
* [[Linear Algebra]] and linear solvers | |||
* [[Solving Nonlinear Equations]] and root-finding | |||
* Interpolation and extrapolation | |||
* Integration and function evaluation | |||
* Minimization and maximization, optimization | |||
* Model-building | |||
===Languages and Tools=== | |||
* | Languages: | ||
* [[Java]] | |||
* [[Python]] | |||
* Go (minimal) | |||
* C++ (minimal) | |||
* Scala (minimal) | |||
* | Tool categories: | ||
* Built-in data structures (solid) | |||
* Extended data structures libraries (Pandas, Guava) and utility libraries (itertools, Apache Commons) | |||
* Numerical libraries (big numbers, factoring, exponents, root finding, linear solvers, nonlinear solvers) | |||
* Graph libraries | |||
* | Infrastructure: | ||
* Testing infrastructure & best practices (JUnit) | |||
* Build tools (Bezel, Maven) | |||
=Study Resources= | |||
Math: | |||
* Awesome math: https://github.com/rossant/awesome-math | |||
Algorithms: | |||
* Awesome algorithms: https://github.com/tayllan/awesome-algorithms | |||
* Awesome challenges: https://github.com/mauriciovieira/awesome-challenges | |||
Meta: | |||
* awesome-awesomeness: https://github.com/sindresorhus/awesome | |||
* sindresorhus/awesome: https://github.com/sindresorhus/awesome | |||
=Flags= | =Flags= | ||
==Computer Science== | |||
{{CSFlag}} | {{CSFlag}} | ||
==Data Structures== | |||
{{DataStructuresFlag}} | {{DataStructuresFlag}} | ||
==Algorithms== | |||
{{AlgorithmsFlag}} | |||
[[CS/OldPage]] | |||
Latest revision as of 15:58, 12 March 2019
computer science: the science of problem-solving with computers, computational devices, and computational methods.
Study Notes
We put together a repository with a detailed outline of topics in computer science as part of a CS study plan. We updated it with notes and code (links to this wiki, and to git repos).
That repository can be found here: https://git.charlesreid1.com/cs/study-plan
Topics
Computer Science Topics
List of topics, with links to notes on this wiki and code in git repos: https://git.charlesreid1.com/cs/study-plan/src/master/TODOSoftwareEngineering.md
List of topics:
- Data Structures
- Algorithms
- Mathematics
- Combinatorics
- Probability
- Number Theory
- Numerics
- Languages and APIs
Data Structures
Main Data Structures Page: Data Structures (see also: Template:DataStructuresFlag)
Polished summaries of information: Study Guides
Link: https://git.charlesreid1.com/cs/study-plan/src/master/TODOSoftwareEngineering.md
Topics:
- Data Structures
- Algorithm complexity
- Arrays
- Lists
- StacksQueues
- Priority Queues
- Maps
- Binary Trees
- Graphs
- Abstract Data Types - ADTs for general design of data structure classes
Algorithms
Algorithms can be divided into categories:
- Algorithms/Sort - basic and advanced algorithms for sorting data
- Algorithms/Search - search algorithms for searching and search-related data structures
- Algorithms/Combinatorics and Heuristics - solving problems involving finding permutations or searching large solution spaces
- Algorithms/Dynamic Programming - solving problems by breaking them down into sub-problems
- Algorithms/Strings - algorithms for operations on strings
- Algorithms/Data Structures - algorithmic analysis of data structures
- Algorithms/Graphs - graph theory, construction of graphs, graph algorithms
Programming practice and writeups:
- Competitive programming
- Project Euler
- Research and Teaching Blog - https://charlesreid1.github.io
Combinatorics and Probability
Outline of combinatorics content:
- Combinatorial structures - use ordinary generating functions
- Labelled structures - use exponential generating functions
- Combinatorial parameters - use multivariate generating functions
Basic Combinatorics:
- Algorithms/Combinatorics
- Binomial coefficients
- Multinomial coefficients
- Multisets
- Coverage of combinatorics in Art of Computer Programming
Excellent textbook: http://algo.inria.fr/flajolet/Publications/book.pdf
Graph Theory
Notes on graph theory:
Notes on data structures for graphs:
Numerics
Link: https://git.charlesreid1.com/cs/study-plan/src/master/TODONumerics.md
Numerics topics:
- Linear Algebra and linear solvers
- Solving Nonlinear Equations and root-finding
- Interpolation and extrapolation
- Integration and function evaluation
- Minimization and maximization, optimization
- Model-building
Languages and Tools
Languages:
Tool categories:
- Built-in data structures (solid)
- Extended data structures libraries (Pandas, Guava) and utility libraries (itertools, Apache Commons)
- Numerical libraries (big numbers, factoring, exponents, root finding, linear solvers, nonlinear solvers)
- Graph libraries
Infrastructure:
- Testing infrastructure & best practices (JUnit)
- Build tools (Bezel, Maven)
Study Resources
Math:
- Awesome math: https://github.com/rossant/awesome-math
Algorithms:
- Awesome algorithms: https://github.com/tayllan/awesome-algorithms
- Awesome challenges: https://github.com/mauriciovieira/awesome-challenges
Meta:
- awesome-awesomeness: https://github.com/sindresorhus/awesome
- sindresorhus/awesome: https://github.com/sindresorhus/awesome
Flags
Computer Science
| Computer Science notes on computer science topics on the wiki, for educational and learning purposes
Part of the 2017 CS Study Plan.
Python/Exceptions · Python/Assertions · Python/Decorators Python/Os (os module) · Python/Strings Python/Splat · Python/Iterators · Python/Generators Python/Comparators · Python/Lambdas
Builtin features of Java: Java/Exceptions · Java/Assertions · Java/Memory · Java/Interfaces Java/Generics · Java/Decorators · Java/Diamond Notation Java/Iterators · Java/Iterable · Iterators vs Iterable Java/Comparators · Java/Comparable · Comparators vs Comparable Java/Numeric · Java/TypeChecking · Java/Testing · Java/Timing · Java/Profiling Documentation: Javadocs · Java/Documentation Tools and functionality: Java/URLs · Java/CSV External libraries: Guava · Fastutil · Eclipse Collections OOP: OOP Checklist · Java/Abstract Class · Java/Encapsulation · Java/Generics
|
See also:
Data Structures
| Data Structures Part of Computer Science Notes
This is the staging ground for computer science notes as part of the 2017 CS Study Plan.
Classes of data structures: Abstract Data Types Array-based and Link-based memory management: ArrayLists and Linked Lists Algorithmic Analysis of Data Structures: Algorithmic Analysis of Data Structures Advanced data structures: Advanced Data Structures
|
| Arrays Part of Computer Science Notes
Series on Data Structures Python: Arrays/Python · Arrays/Python/Sizeof · Arrays/Python/AppendCost · Arrays/Python/CaesarCipher · Arrays/Python/CompactArrays · Arrays/Python/DynamicArray Java: Arrays/Java · Arrays/Java/CaesarCipher · Arrays/Java/FisherYates · Arrays/Java/PythonList · Arrays/Java/Repeatedly_Remove Categories: Category:Python Arrays
|
| Stacks and Queues Part of Computer Science Notes
Series on Data Structures
Stacks and Queues: Python StacksQueues/Python · StacksQueues/Python/ArrayStack · StacksQueues/Python/ArrayQueue · StacksQueues/Python/ArrayDeque StacksQueues/Python/LinkedStack
Stacks and Queues: Java StacksQueues/Java · StacksQueues/Java/ArrayStack · StacksQueues/Java/ArrayQueue · StacksQueues/Java/ArrayQueueFS · StacksQueues/Java/ArrayDeque StacksQueues/Java/LinkedStack · StacksQueues/Java/LinkedQueue · StacksQueues/Java/LinkedDeque
Applications Postfix_Expressions#Stacks · StacksQueues/Subsets · StacksQueues/Subsets/Java
|
| Priority Queues and Heaps Part of Computer Science Notes
Series on Data Structures
Java: Priority Queues/Java · Priority Queues/ADT · Priority Queues/Sorted · Priority Queues/Unsorted Performance: Priority Queues/Timing and Performance Applications: Maximum Oriented Priority Queue · Priority Queues/Stack
Priority Queues/Heap · Priority Queues/Java · Priority Queues/Comparators
|
| Linked List Part of Computer Science Notes
Series on Data Structures Java: Linked Lists/Java · Linked Lists/Java/Single · Linked Lists/Java/Double · Linked Lists/Java/Circular Performance: Linked Lists/Java/Timing · Linked Lists/Java/Reverse Python: Linked Lists/Python · Linked Lists/Python/Single
|
| Trees Part of Computer Science Notes
Series on Data Structures Abstract data type: Trees/ADT Concrete implementations: Trees/LinkedTree · Trees/ArrayTree · SimpleTree
Tree Traversal Preorder traversal: Trees/Preorder Postorder traversal: Trees/Postorder In-Order traversal: Binary Trees/Inorder Breadth-First Search: BFS Breadth-First Traversal: BFT Depth-First Search: DFS Depth-First Traversal: DFT OOP Principles for Traversal: Tree Traversal/OOP · Tree Traversal/Traversal Method Template Tree operations: Trees/Operations Performance · Trees/Removal
Tree Applications Finding Minimum in Log N Time: Tree/LogN Min Search
Abstract data type: Binary Trees/ADT Concrete implementations: Binary Trees/LinkedBinTree · Binary Trees/ArrayBinTree Binary Trees/Cheat Sheet · Binary Trees/OOP · Binary Trees/Implementation Notes
|
| Search Trees Part of Computer Science Notes
Series on Data Structures
Binary Search Trees · Balanced Search Trees Trees/OOP · Search Trees/OOP · Tree Traversal/OOP · Binary Trees/Inorder
(Note that heaps are also value-sorting trees with minimums at the top. See Template:PriorityQueuesFlag and Priority Queues.)
|
| Maps and Dictionaries Part of Computer Science Notes
Series on Data Structures
Maps/Dictionaries Maps · Maps/ADT · Maps in Java · Maps/OOP · Maps/Operations and Performance Map implementations: Maps/AbstractMap · Maps/UnsortedArrayMap · Maps/SortedArrayMap Dictionary implementations: Dictionaries/LinkedDict · Dictionaries/ArrayDict
Hashes Hash Maps/OOP · Hash Maps/Operations and Performance Hash Maps/Dynamic Resizing · Hash Maps/Collision Handling with Chaining Hash functions: Hash Functions · Hash Functions/Cyclic Permutation Hash map implementations: Hash Maps/AbstractHashMap · Hash Maps/ChainedHashMap
Skip Lists · Java/ConcurrentSkipList · Java implementations: SkipList
Sets Sets · Sets/ADT · Sets in Java · Sets/OOP · Multisets
|
Algorithms
| Algorithms Part of Computer Science Notes
Series on Algorithms
Algorithms/Sort · Algorithmic Analysis of Sort Functions · Divide and Conquer · Divide and Conquer/Master Theorem Three solid O(n log n) search algorithms: Merge Sort · Heap Sort · Quick Sort Algorithm Analysis/Merge Sort · Algorithm Analysis/Randomized Quick Sort
Algorithms/Search · Binary Search · Binary Search Modifications
Algorithms/Combinatorics · Algorithms/Combinatorics and Heuristics · Algorithms/Optimization · Divide and Conquer
Algorithms/Strings · Algorithm Analysis/Substring Pattern Matching
Algorithm complexity · Theta vs Big O Amortization · Amortization/Aggregate Method · Amortization/Accounting Method Algorithm Analysis/Matrix Multiplication
Estimation Estimation · Estimation/BitsAndBytes
Algorithm Practice and Writeups Project Euler · Five Letter Words · Letter Coverage
|