Course Resources
- Scala Homework problems: hw-scala-3.4.1.zip
Textbook
-
Concepts in Programming Languages by Mitchell,
published by Cambridge University Press.
Last time I checked there was not an copy in the DePaul Library.
The first few chapters are partly available in a preview.
There may also be a PDF of the entire book available for free. Use a search engine to find out.
- Programming in Scala by Odersky, Spoon, Venners, and Sommers, 5th edition, published by Artima Press.
General Resources
Please report broken links to the instructor.
Online Editors/Compilers/Interpreters
- General read-eval-print-loop: repl.it (Note that BiswaScheme does not support rational literals)
- General compiler: godbolt.org
- General compiler: Codepad
- General compiler: Try It Online
- General IDE: Codeboard
- Scala: Scastie (uses sbt)
- Haskell: Try Haskell
- OCaml: Try OCaml
- Python: Jupyter
- Racket: Try Code
Compilers
- Reflections on trusting trust by Ken Thompson (see also David A. Wheeler's work on Diverse Double-Compiling)
Discussion
- Stack Overflow (not for homework assignments!)
Programming Exercises/Challenges
- 99 problems: Prolog, Scheme, Scala, Haskell
- Reddit Daily Programmer
- Advent of Code
- matasano crypto challenges
- Project Euler
- exercism.io (including C++, Common Lisp, F#, Go, Haskell, Java, JavaScript, Lua, OCaml, Ruby, Rust, Scala, Scheme, Swift)
- HackerRank
- Synacor Challenge
- Codewars
- Interview Cake (questions for programming interviews; not free)
Textbooks on Programming Language Concepts
- Concepts in Programming Languages, 1st Edition, by John C. Mitchell
- Programming Language Pragmatics, 4th Edition, by Michael L. Scott
- Essentials of Programming Languages, 3rd Edition, by Daniel P. Friedman and Mitchell Wand
- Concepts of Programming Languages, 11th Edition, by Robert W. Sebesta
- Design Concepts in Programming Languages, by Franklyn Turbak, David Gifford, and Mark A. Sheldon
- Concepts, Techniques, and Models of Computer Programming, 1st Edition, by Peter Van Roy and Seif Haridi
- Programming Languages: Concepts and Constructs, 2nd Edition, by Ravi Sethi
- Programming Language Design Concepts, 1st Edition, by David A. Watt
- Programming Language Concepts, 1st Edition, by Peter Sestoft
- Programming Languages: An Active Learning Approach, 1st Edition, by Kent D. Lee
Programming Languages
Structured Programming
- Structured Programming with go to Statements by Donald E. Knuth
- Go-to statement considered harmful by Edsger W. Dijkstra
- Is goto Still Considered Harmful? by Larry Seltzer
Functional Programming
- Things I Wish Someone had Explained about Functional Programming by James Sinclair
- Lots And Lots Of foldLeft Examples by Matt Malone
Language-Specific Resources
C
- The Development of the C Language by Dennis M. Ritchie
Java
- Oracle's Java tutorials include
- Wild FJ by Mads Torgersen, Erik Ernst, and Christian Plesner Hansen
- Java Wildcards Meet Definition-Site Variance by John Altidor, Christoph Reichenbach, and Yannis Smaragdakis (ECOOP 2012)
JavaScript
- You Don't Know JS (book series)
- JavaScript: The Good Parts, by Douglas Crockford
- Speaking JavaScript: An In-Depth Guide for Programmers, by Axel Rauschmayer
- Eloquent JavaScript: A Modern Introduction to Programming , by Marijn Haverbeke
- Exploring ES6: Upgrade to the next version of JavaScript, by Axel Rauschmayer
Lisp
- The evolution of Lisp by Guy L. Steele, Jr and Richard P. Gabriel
Scala
- Programming in Scala (first edition) by M. Odersky, L. Spoon, and B. Venners
- Scala Exercises
- Twitter's Scala School
- Traits: Composable Units of Behaviour by Nathanael Scharli, Stephane Ducasse, Oscar Nierstrasz, and Andrew P. Black
- Scalable Component Abstractions by Martin Odersky and Matthias Zenger (especially section 2.2 on traits and mixins)
- List of Scala Types
Scheme
- The Scheme Programming Language, 4th Edition by R. Kent Dybvig
- Revised6 Report on the Algorithmic Language Scheme
- Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman
- How to Design Programs by Felleisen, Findler, Flatt, Krishnamurthi