From charlesreid1

 
(50 intermediate revisions by the same user not shown)
Line 1: Line 1:
Computer Science: the science of problem-solving with computers (computational devices, computational methods)
computer science: the science of problem-solving with computers, computational devices, and computational methods.


=Study Notes=  
=Study Notes=  


See CS study plan repo for more detailed notes: https://charlesreid1.com:3000/cs/study-plan
{{Main|Study Guides}}


We're focusing on a few different topics:
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).
* Ramping up level of fluency of Java and Python, developing working knowledge of/familiarity with 5-10 languages (git.charlesreid1.com)
 
* Core software engineering/computer science theory
That repository can be found here: https://git.charlesreid1.com/cs/study-plan
* Mathematics and numerical computing
* Machine learning


=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]])


Link: https://charlesreid1.com:3000/cs/study-plan/src/master/TODOSoftwareEngineering.md
Polished summaries of information: [[Study Guides]]


[[CS]] list of topics:  
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]]


* [[Arrays]]
Outline of combinatorics content:
** Python - list type - [[Arrays/Python]]
 
** Java - Arrays class, ArrayList class - [[Arrays/Java]]
* 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]]


* [[Lists]]
Excellent textbook: http://algo.inria.fr/flajolet/Publications/book.pdf
** [[ ArrayLists]] - array-based, continguous allocation of memory
** [[LinkedLists]] - link-based system of organizing memory allocated on the fly
** Java - singly, circularly, doubly linked lists - [[Linked Lists/Java]]
** Python - linked list implementation in Python [[Linked Lists/Python]]
** C - Skiena covers a linked list implementation in C... [[Linked Lists/C]]


* [[StacksQueues]]
===Graph Theory===
** Python - implementing array-based stack/queue/deque data type - [[StacksQueues/Python]]
** Java - using built-in stack/queue ADTs, implementing array-based stack/queue/deque type - [[StacksQueues/Java]]
** C - Skiena covers the use of a C linked list to implement a stack/queue in C... [[StacksQueues/C]]
** [[Priority Queues]] are special queues where the items are maintained in a shorted order.


* Skiena Chapter 3 gave a more advanced and succinct introduction to data structures: see [[Advanced Data Structures]]
{{Main|Graphs}}


* [[Dictionaries]], a.k.a. [[Maps]]
Notes on graph theory:
** Python - dictionaries are built-in types in Python. JSON-like structures, key-value pairs.
** Java - using built-in Map type from Java Collections library allows mapping arbitrary types to other types
** C - Skiena covers the use of C to create a dictionary as well, by using a linked list to implement the interface of a dictionary.


* [[Binary Trees]]
* [[Graphs/Definitions]]
** C - again, Skiena covers a C implementation of a binary tree using a linked list type of structure.
* [[Graphs/Matching]]
* [[Graphs/Connectivity]]


* Hash Tables - see [[Maps]] or [[Maps]]
Notes on data structures for graphs:


* [[Abstract Data Types]] - general classes of data structures
* [[Graphs/Data Structures]]
* [[Graphs/ADT]]


==Numerics==
===Numerics===


Link: https://charlesreid1.com:3000/cs/study-plan/src/master/TODONumerics.md
Link: https://git.charlesreid1.com/cs/study-plan/src/master/TODONumerics.md


Following the content of Numerical Recipes - algorithmic analysis, &c.
[[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


[[Numerics]] topics corresponding to particular chapters:
===Languages and Tools===


* Linear algebra
Languages:
* [[Java]]
* [[Python]]
* Go (minimal)
* C++ (minimal)
* Scala (minimal)


* Interpolation and Extrapolation
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


* Integration and Evaluation of [[Functions]]
Infrastructure:
* Testing infrastructure & best practices (JUnit)
* Build tools (Bezel, Maven)


* Root Finding
=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]]
[[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:

Algorithms

Algorithms can be divided into categories:


Programming practice and writeups:

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:

Generating Functions:

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:

  • 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:

Algorithms:

Meta:

Flags

Computer Science





See also:

Data Structures
































Algorithms







CS/OldPage