Skip to content

cognitory/introduction-to-programming

Repository files navigation

Introduction to Programming

Introduction to Programming is a book that aims to teach programming to non-programmers.

You can read the latest version at: http://cognitory.github.io/introduction-to-programming/

Rationale (Why Another Programming Book?)

Most “Introduction to Programming” books teach C-like languages and Object Oriented Programming (ex. Java, Javascript, etc.) because these languages are popular. This book teaches Functional Programming with a LISP, because, as I have experienced through my teaching career, FP and LISP are much easier to learn for beginners.

Most existing “Learn Functional Programming” or “Learn LISP” books target existing programmers, because it tends to be only experienced programmers who discover and appreciate FP and LISP. However, because they are targeted at existing programmers, these books are completely inaccessible to beginners to programming. This book teaches FP concepts and LISP, but targets beginners.

Experienced developers gravitate to Functional Programming and LISP because they make programming easier. Novice programmers have even more to benefit from the simplicity of FP and LISP.

Approach

The primary goal of this book is to teach a complete novice how to solve practical problems with “programming”.

A Functional Programming approach is taught, because FP concepts (such as pure functions and a general avoidance of state) make it easier to write programs and to learn to program. However, the aim of this book is not to be a comprehensive introduction to Functional Programming, so many “advanced” concepts from FP, such as currying and monads, will not be covered.

A LISP-style language is used, because LISP syntax is simpler and more consistent than C-like languages, and so it is easier to learn for beginners. Of the various LISPs, Clojure is used, because it has a strong ecosystem and can run on many platforms. However, like with FP, this book will only cover Clojure insofar as it is useful for teaching a beginner to program. “Advanced” concepts such as macros and protocols will not be covered.

In summary:

  • The purpose of this book is to teach programming to complete beginners.

  • Contrary to the way things seem, LISP and FP are ideal for novice programmers.

  • FP and LISP are just a means to an end, not the end itself.

About the Authors

Rafal Dittwald - engineer, developer, programming instructor, entrepreneur

Setup

brew install asciidoc or gem install asciidoctor

Then:

./compile.sh

Contributing

PRs welcome!

About

An (in-progress) book to teach programming, using Functional Programming concepts and Clojure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published