Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
70 lines (56 sloc) 5.33 KB

Tutorials

In this repository you will find a lot of stuff which I've been practicing throughout the years. I have a bunch of other stuff on my other computers, so as soon as I sort them I will be posting them here.

In addition to the practices, here are my favorite technical readings that shaped my knowledge in a way:

Name of the book Amazon link Online link
1. The C Programming Language https://www.amazon.com/dp/0131103628
2. The Little Schemer https://www.amazon.com/dp/0262560992
3. Learn You a Haskell for Great Good! https://www.amazon.com/dp/1593272839 http://learnyouahaskell.com/chapters
4. Proofs and Concepts http://people.uleth.ca/~dave.morris/books/proofs+concepts.html
5. The Pragmatic Programmer https://www.amazon.com/dp/020161622X Tips summarized https://blog.codinghorror.com/a-pragmatic-quick-reference
6. SICP https://www.amazon.com/dp/0262510871 https://mitpress.mit.edu/sicp/full-text/book/book.html
7. JavaScript Patterns https://www.amazon.com/dp/0596806752
8. Competetive Programmer's Handbook https://cses.fi/book.html
9. Software Foundations Vol. 1: Logic https://softwarefoundations.cis.upenn.edu/lf-current/toc.html
10. Metamath http://us.metamath.org/downloads/metamath.pdf

Notes:

  1. This is a classic. I believe any programmer should at least be aware of the things C offers, like manual memory management, working with stacks, etc. This is found to be useful even when programming in higher level languages. For example, whenever you create an anonymous function in JS, given its scope change we can see it as the stack frame change.
  2. This book really helped me grasp recursion, and Scheme.
  3. Even if you don't program in Haskell after reading this, it introduces you to a lot of good concepts (which some can be applied to other programming languages as well). Pattern matching, Algebraic data types, Monads/Monoids, Map/Reduce and their implementation, Currying, etc.
  4. Introduces the reader to set theory, and proving properties for it. Found to be useful to prove correctness of functional programming languages programs. For example, using induction to prove the correctness of length.
  5. Introduces the reader to common programming patterns, such as DRY, keeping up to date with tools, etc.
  6. Work in progress. Covering some general concepts about programming, such as: abstraction, recursion, DSLs, streams, etc.
  7. Assumes at least some JavaScript experience. Introduces the reader to some useful JavaScript patterns. Also, JavaScript is used a lot these days, so it's preferable we keep up to date :)
  8. Work in progress. Algorithms and complexitiy.
  9. Logical foundations, covering functional programming, logic, theorem proving and Coq. Good prerequisites for this are books 3 and 4 from this list.
  10. Work in progress. An interesting metalanguage for working with formal systems, and formalizing mathematical proofs. Specifications of the language is only 4 pages.

In addition, here are some good technical tutorials:

Name of the tutorial Online link
1. Win32asm tutorial http://www.madwizard.org/download/tutors/win32asmtutorial.zip
2. DBMS Lecture Notes http://www.cs.sfu.ca/CourseCentral/354/zaiane/material/notes/contents.html
3. Lambda calculus https://en.wikipedia.org/wiki/Lambda__calculus
4. Prolog https://staff.science.uva.nl/u.endriss/teaching/prolog/prolog.pdf
5. Idris tutorial http://docs.idris-lang.org/en/latest/tutorial/

Notes:

  1. I read this tutorial a long time ago. It helped me understand 32-bit assembly in Windows.
  2. The theory behind DB systems. Relational algebra, etc.
  3. An interesting way to declare integers (and other objects) in terms of f(x), f(f(x)), etc.
  4. Prolog was fun for me because it's a different non-mainstream paradigm and also introduces some interesting concepts.
  5. Idris is an interesting functional programming language with dependent types that is combined with IO support.

Interesting not-so-technical books/readings:

Name of the book Link
1. A Mathematician's Lament https://www.maa.org/external_archive/devlin/LockhartsLament.pdf
2. The Laws of Simplicity https://www.amazon.com/dp/0262134721
3. Redesigning Leadership https://www.amazon.com/dp/0262015889
4. How to think like Sherlock Holmes https://www.amazon.com/dp/014312434X
5. Propositions as Types http://homepages.inf.ed.ac.uk/wadler/papers/propositions-as-types/propositions-as-types.pdf

Notes:

  1. Criticizes the present mathematical education.
  2. General interesting rules about design, technology, business, and life.
  3. Interesting observations on how leaders should lead.
  4. A mix of story telling and psychological observations.
  5. Historical overview of how the concept Props as Types was developed (e.g. forall n, n + 0 = 0 : Prop.)

Boro Sitnikovski