We are still actively working on the spam issue.
Programming Textbook Recommendations
Contents
Scientific and Array Based Languages
Matlab
- Matlab: A Practical Introduction to Programming and Problem Solving by Attaway
- MATLAB Guide by Desmond Higham and Nicholas Higham
- Numerical Computing with MATLAB by Moler
Fortran
- Fortran 95/2003 for Scientists & Engineers by Chapman
- Guide to Fortran 2008 Programming by Brainerd
- Modern Fortran Explained by Metcalf, Reid, and Cohen (or the older Fortran 95/2003 Explained)
- Modern Fortran in Practice by Markus
J
- Learning J: An Introduction to the J Programming Language by Stokes
- J for C Programmers by Rich
General Purpose Languages
C++
- Programming: Principles and Practice Using C++ by Stroustrup
- C++ Primer by Lippman, Lajoie, and Moo
- Discovering Modern C++: An Intensive Course for Scientists, Engineers, and Programmers by Gottschling
- The C++ Standard Library: A Tutorial and Reference by Josuttis
- The C++ Programming Language by Stroustrup
C
Why The Programming Language C Is Obsolete
- C Programming: A Modern Approach By King
- Modern C by Jens Gustedt
- C Programming Language by Kernighan and Ritchie
- The C Standard Library by Plauger
- Expert C Programming: Deep C Secrets By Linden
Scripting Languages
Lua
- Programming in Lua by Ierusalimschy [First edition]
- Lua Programming Gems by de Figueiredo, Celes, Ierusalimschy
Python
On Windows, the easiest way to install Python along with the common libraries like NumPy, SciPy, Sympy, Matplotlib, and Pandas and IDEs like IPython (Notebook similar to Maple or Mathematica's notebooks) and Spyder (similar to Matlab's IDE) is to use WinPython.
- "Think Python: How to Think Like a Computer Scientist" and "Think Complexity" by Downey
- A Primer on Scientific Programming with Python by Langtangen [Website]
- Automate the Boring Stuff with Python: Practical Programming for Total Beginners by Al Sweigart
- Python Scripting for Computational Science by Langtangen [Website]
References
- Learning SciPy for Numerical and Scientific Computing by Rojas G., Christensen, and Blanco-Silva
- IPython Interactive Computing and Visualization Cookbook by Rossant
- Python Essential Reference by Beazley
Stack-Oriented Languages
Forth
- Starting Forth by Brodie
- Forth Application Techniques by Rather
- Forth Programmer's Handbook by Conklin and Rather
- Thinking Forth by Brodie
Functional Languages
Lisp/Scheme/Racket
- How to Design Programs: An Introduction to Programming and Computing by Felleisen, Findler, Flatt, and Krishnamurthi
- "The Little Schemer" and "The Seasoned Schemer" by Friedman and Felleisen
- The Scheme Programming Language by Dybvig
- The Racket Guide by Flatt and Findler
- Structure and Interpretation of Computer Programs by Abelson, G. J. Sussman, and J. Sussman
Haskell
- Programming in Haskell by Hutton
- Haskell: The Craft of Functional Programming by Thompson
- Real World Haskell by O'Sullivan, Stewart, and Goerzen
- Parallel and Concurrent Programming in Haskell by Marlow
Standard ML
- Programming in Standard ML by Harper
- ML for the Working Programmer by Paulson [Errata]
- Concurrent Programming in ML by Reppy
OCaml
- "OCaml from the Very Beginning" and "More OCaml: Algorithms, Methods, and Diversions" by Whitington [Errata]
- Real World OCaml: Functional Programming for the Masses by Minsky, Madhavapeddy, and Hickey
- Developing Applications with Objective Caml by Chailloux, Manoury and Pagano
- Using, Understanding, and Unraveling The OCaml Language: From Practice to Theory and vice versa by Rémy
Logic Languages
Prolog
- Programming in Prolog by Clocksin and Mellish
- Prolog Programming for Artificial Intelligence by Bratko
- The Art of Prolog: Advanced Programming Techniques by Sterling and Shapiro
- The Practice of Prolog by Sterling
- The Craft of Prolog by O'Keefe