Computing foundations
Programming Languages
How programming languages work: compilers and interpreters, types, paradigms. Understanding the ideas behind languages lets you learn a new one quickly and choose the right one for each problem.
Topics
History
History of Languages and Paradigms, Differences between Paradigms
Compilers Basics
Lexical Analysis, Parsing, Semantic Analysis, Optimization, Code Generation, Lexical Scoping, Interpreters, Stack, Heap, Linker, Loader, Syntax Tree, Intermediate Language, Type Checking, Symbol Table, Static vs Dynamic Typing, Parse Trees, Tokens, Lexemes
Theory of Languages
Finite State Machines, Determinism/Nondeterminism, Pushdown Automata, Turing Machine, Alphabets, Context-Free Grammar, Values, Literals, Expressions vs Statements, Variables, Types, Scoping
Regular Expressions
Literals, Escaping, OR, Groups, Character Classes, Ranges, Negations, Dot, Boundary Matchers, Quantifiers, Greedy, Non-Capturing Groups, Back References, Lookahead, Lookbehind
Structured Programming
Goto Considered Harmful, Sequence, Selection and Iteration
Object-Oriented Programming
Metaphors, Objects, Responsibilities, Messages, Interfaces / Protocols, Collaboration / Collaborators, Classes, Inheritance, Abstract/Concrete, Delegation, Polymorphism, Encapsulation, Components, Methods, Late/Dynamic Binding, Marshalling/Serialization, Closures, Lambdas, Blocks
Functional Programming
Immutability, Side-Effects, Pure Functions, Currying, Functors, Monads, Higher-Order Functions, Partial Functions, Recursion, Reduce, Fold
Memory Management
Manual Allocation/Deallocation, Garbage Collection, Tracing, Reference Counting
Resources
Video · 2 h 7 min
- Clean Architecture - A Craftsman's Guide to Software Structure and Design
Book · Robert C. Martin, Prentice Hall, 2018 · Chapters: Part II Intro, 3, 4, 5, 6 · 31 pages
- The Imposter’s Handbook Season 1 2.2 - A CS Primer for Self-Taught Developers
Book · Rob Conery, Big Machine Inc., 2016 · Chapters: Machinery, Compilation, Functional Programming · 68 pages
- Compilers - Principles, Techniques, and Tools
Book · Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, Addison-Wesley, 2006 · Chapters: 1, 2.0, 2.1, 2.2, 2.4.0 (intro), 2.6.0 (intro), 2.7.0 (intro), 3.1.0, 3.1.1, 3.1.2, 4.1.0, 4.1.1, 4.2.0, 4.2.1, 4.2.2 · 69 pages
- Computer Science Distilled - Learn the Art of Solving Computational Problems
Book · Wladston Ferreira Filho, Code Energy LLC, 2017 · Chapters: 8 · 16 pages
Video · 17 min
Video · 24 min
- Goto Considered Harmful
Article · 5 pages
- Statement vs Expression
Article · 4 pages
- Object Thinking
Book · David West, Microsoft Press, 2004 · Chapters: 1, 2, 3, 4, 5 · 150 pages
- Clean Coders Episode 53: Introduction to Functional Programming
Video · 1 h 10 min
- Practical Object-Oriented Design in Ruby
Book · Sandi Metz, Addison-Wesley, 2013 · Whole book · 272 pages
- Introduction to Automata Theory, Languages, and Computation
Book · John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman, Prentice Hall, 2006