Skip to content

Latest commit

 

History

History
734 lines (523 loc) · 29.1 KB

#cs-foundations.md

File metadata and controls

734 lines (523 loc) · 29.1 KB

CS Foundations Resources

High buildings rise from the ground.

If you can't explain it simply, you don't understand it well enough.

Deeds, not words.

Content



Books

  • Computer Science: An Overview (13th, 2018) by Glenn Brookshear and Dennis Brylow

Courses



Prime

  • Discrete mathematics and its applications (7th, 2011) by Kenneth H·Rosen
  • Elements Of Discrete Mathematics: Solutions Manual by Chung Laung Liu
  • Introduction to Graph Theory (2nd, 2017) by Douglas B. West
  • Introductory Combinatorics (5th, 2017) by Richard A.Brualdi
  • A Friendly Introduction to Number Theory (4th, 2017) by Joseph H.Silverman
  • Numerical Recipes (3rd, 2007) by William H. Press

Advanced

  • Concrete Mathematics: A Foundation for Computer Science (2nd, 1994) by Ronald L. Graham, Donald E. Knuth and Oren Patashnik
    ACM竞赛必读书之一,几乎包含了所有计算机科学里涉及到的数学问题,里面有众多的经典问题与经典解法,对开拓人的数学思路有极大的帮助。
  • The art of Computer programming volume 1 by Donald Knuth

More Mathematics



Must Read

  • The Information: A History, a Theory, a Flood (2003) by James Gleick, Rob Shapiro
  • Information Theory: A Tutorial Introduction (2015) by James V. Stone
  • Elements of Information Theory (2nd, 2006) by Thomas M. Cover and Joy A. Thomas
  • Network Information Theory by (2012) by El Gamal, Abbas and Young-Han Kim


Must Read

  • The C Programming Language (2nd, 1988) by Brian W. Kernighan, Denis M. Ritchie (TCPL)
  • Pointers on C (1997) by Kenneth A·Reek
  • Expert C Programming: Deep C Secrets (1994) by Peter van der Linden
  • C Traps and Pitfalls (1989) by Andrew Koenig


Prime

  • Algorithms (4th, 2011) by Robert Sedgewick
  • Data Structures and Algorithm Analysis in C (2nd, 1996) by Mark Allen Weiss
  • Data Structures and Algorithm Analysis in Java (3rd, 2011) by Mark A. Weiss
  • Data Structures and Algorithm Analysis in C++ (3rd, 2011) by Clifford A. Shaffer

Advanced

  • Algorithm Design (2005) by Jon Kleinberg, Éva Tardos
  • The Algorithm Design Manual (2010) by Steven S Skiena
  • Introduction to Algorithms (3rd, 2009) by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen (CLRS: authors abbreviation)
  • Algorithms (2006) by Sanjoy Dasgupta
  • The Art of Computer Programming Volumes 1-4 by Donald.E.Knuth (TAOCP)

For Interview

  • Cracking the Coding Interview: 189 Programming Questions and Solutions (2015) by Gayle Laakmann McDowell 程序员面试金典
  • Programming Pearls (2nd, 1999) by Jon Bentley
  • 剑指Offer (2012) by 何海涛
  • 编程之美 (2008) by 《编程之美》小组
  • 程序员代码面试指南:IT名企算法与数据结构题目最优解 (2015) by 左程云

For ACM

  • 挑战程序设计竞赛 (2013) by 秋叶拓哉
  • 算法竞赛入门经典(2nd, 2014)by 刘汝佳
  • 信息学奥赛一本通 (2013) by 董永建

Courses

  • Introduction to Algorithms - MIT Open Courseware
  • Data Structures and Algorithm Design Part I 数据结构与算法设计(上) - edx, Tsinghua
  • Data Structures and Algorithm Design Part II 数据结构与算法设计(下) - edx, Tsinghua

OJ Platforms

Tutorials



Prime

  • Code: The Hidden Language of Computer Hardware and Software (1999) by Charles Petzold
  • The Elements of Computing Systems: Building a Modern Computer from First Principles (2005) by Noam Nisan, Shimon Schocken
  • Introduction to Computing Systems: From Bits and Gates to C and Beyond (2003) by Yale N. Patt and Sanjay J. Patel (ICS)

Must Read

  • Computer Organization and Design: the Hardware/Software Interface (5th, 2013) by David A Patterson John L Hennessy and John L. Hennessy
  • Computer Architecture: A Quantitative Approach (6th, 2017) by David A Patterson John L Hennessy and John L. Hennessy
  • Computer Systems: A Programmer‘s Perspective (3rd, 2015) by Randal E.Bryant, David O'Hallaron (CSAPP)

Some More

  • Computer Organization and Architecture: Designing for Performance (9th, 2012) by William Stallings
  • Structured Computer Organization (6th, 2012) by Andrew S. Tanenbaum, Todd Austin

Computation

  • Introduction to the Theory of Computation by Michael Sipser

Digital Circuits

  • Digital Fundamentals (9th, 2005) by Thomas L. Floyd
  • Digital Integrated Circuits: A Design Perspective (2016) by Jan M. Rabaey

Assembly Language

  • 汇编语言 (2003) by 王爽
  • Professional Assembly Language (2005) by Richard Blum
  • Assembly Language for Intel-Based Computers (1998) by Kip Irvine
  • Assembly Language: Step-By-Step by Jeff Duntemann

Courses

  • Build a Modern Computer from First Principles: From Nand to Tetris - Coursera
  • Build a Modern Computer from First Principles: Nand to Tetris Part II - Coursera


Prime

  • How to Design Programs: An Introduction to Programming and Computing (2018) by Matthias Felleisen
  • The Little Schemer (4th, 1995) by Daniel P. Friedman

Must Read

  • Structure and Interpretation of Computer Programs (2nd, 1996) by Harold Abelson (SICP)
  • Essentials of Programming Languages (2001) by Daniel P. Friedman, Mitchell Wand (EOPL)
  • Types and Programming Languages (2002) by Benjamin C. Pierce (TAPL)
  • Compilers: Principles, Techniques, and Tools (1986) by Alfred V. Aho and Monica S. Lam (龙书)
  • Modern Compiler Implementation in C (2004) by Andrew W. Appel (虎书)
  • Advanced Compiler Design and Implementation (1997) by Steven Muchnick (鲸书)

Some More

  • Engineering a Compiler (2003) by Keith Cooper and Linda Torczon
  • Parsing Techniques (2008) by Dick Grune, Ceriel J.H. Jacobs
  • 程序员的自我修养 (2009) by 俞甲子, 石凡, 潘爱民
  • Concepts, Techniques, and Models of Computer Programming by Peter Van Roy, Seif Haridi
  • Language Implementation Patterns: Techniques for Implementing Domain-Specific Languages by Terence Parr


Must Read

  • Operating Systems: Three Easy Pieces (2015) by Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau
  • Operating System Concepts (10th, 2018) by Abraham Silberschatz, Peter B. Galvin, Greg Gagne
  • Modern Operating Systems (4th, 2014) by Andrew S. Tanenbaum
  • Operating Systems (3rd, 2003) by Harvey Deitel, Paul Deitel, David R. Choffnes

Some More

  • Operating Systems Design and Implementation (3rd, 2006) by Andrew S. Tanenbaum, Albert S. Woodhull
  • Systems Performance (2013) by Brendan Gregg
  • Orange'S:一个操作系统的实现 (2009) by 于渊
  • 操作系统真象还原 (2016) by 郑钢
  • 一个64位操作系统的设计与实现 (2018) by 田宇

Courses

  • MIT 6.828: Operating System Engineering - YouTube

Unix/Linux

System and Command Line

  • The Linux Command Line: A Complete Introduction by William E. Shotts, Jr.
  • Linux bible by Christopher Negus
  • 鸟哥的Linux私房菜:基础学习篇 (2nd, 2007) by 鸟哥
  • Linux pocket guide by Daniel J. Barrett
  • Beginning Linux Programming by Mathew Neil and Richard Stones
  • Linux Command Line and Shell Scripting Bible by Christine Bresnahan and Richard Blum
  • Linux for Beginners: An Introduction to the Linux Operating System by Jason Cannon
  • How Linux Works: What Every Superuser Should Know by Brian Ward
  • Linux Administration Handbook by Evi Nemeth, Garth Snyder, and Trent Hein
  • UNIX and Linux System Administration Handbook by Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley

Vim

  • Learning the vi and Vim Editors by Arnold Robbins and Linda Lamb
  • Practical Vim: Edit Text at the Speed of Thought by Drew Neil
  • A Byte of Vim by Swaroop C.H.
  • Modern Vim: Craft Your Development Environment with Vim 8 and Neovim by Drew Neil

Shell

  • Bash Cookbook: Solutions and Examples for Bash Users by Carl Albing, J.P. Vossen, Cameron Newham
  • UNIX Shells by Example by Ellie Quigley
  • Linux Shell Scripting Cookbook by Shantanu Tushar, Sarath Lakshman
  • Expert Shell Scripting by Ron Peters

Sed & Awk

  • sed & awk by Dale Dougherty, Arnold Robbins
  • The AWK Programming Language by Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger

Unix Programming

  • The UNIX Programming Environment by Brian W. Kernighan
  • Advanced Programming in the UNIX Environment (3rd, 2013) by W. Richard Stevens (APUE)
  • The Design of the UNIX Operating System (1986) by Maurice J. Bach
  • The Art of Unix Programming (2003) by Eric S. Raymond
  • Unix Programmer's Manual
  • UNIX Systems for Modern Architectures (1994) by Schimmel

Linux Programming

  • Linux Kernel Development (3rd, 2010) by Robert Love
  • The Linux Programming Interface (2010) by Michael Kerrisk
  • Understanding Unix/Linux Programming by Bruce Molay
  • Linux 环境编程 by 高峰
  • Autotools: A Practioner's Guide to GNU Autoconf, Automake, and Libtool by John Calcote

Linux Drivers

  • Linux Device Drivers by Alessandro Rubini, Greg Kroah-Hartman, and Jonathan Corbet
  • Understanding the Linux Kernel by Daniel P. Bovet and Marco Cesati
  • 深入Linux设备驱动程序内核机制 by 陈学松

Docs

Windows

Windows Programming

  • Windows Internals (7th, 2017) by Russinovich and Solomon
  • Programming Windows (5th, 1998) by Charles Petzold
  • Programming Applications for Microsoft Windows (1999) by Jeffrey Richter


Must Read

  • Computer Networking: A Top Down Approach (7th, 2016) by Kurose, Ross
    Best for a beginner. You will fall in love with this book once you get hold of it :P. No prerequisites required. It is written marvelously for anyone to get interested in networking)
  • Computer Networks (5th, 2010) by Andrew S. Tanenbaum and David J. Wetherall Good but dry. Well formed contents, should have some basic understanding of data communications before reading this book.

Some More

  • Data Communications and Networking by Behrouz A. Forouzan
  • Computer Networks: A System Approach Larry L. Peterson and Bruce S. Davie
  • Data and Computer Communications by William Stallings

For Packet Analysis

  • Practical Packet Analysis: Using Wireshark to Solve Real-World Network Problems by Chris Sanders
  • Wireshark 101: Essential Skills for Network Analysis by Gerald Combs, Laura Chappell
  • Wireshark 网络分析就这么简单 by 林沛满
  • wireshark 网络分析的艺术 by 林沛满

For Programming

  • Unix Network Programming Vol 1 (3rd, 2003) Sockets API - Richard Stevens
  • Unix Network Programming Vol 2 (2nd, 1998) Inter process Communication - Richard Stevens

TCP/IP

  • TCP/IP Illustrated: The Protocols, Vol. 1 (1st, 1994) (2nd, 2011) by Richard Stevens
  • TCP/IP Illustrated: The Implementation, Vol. 2 by Richard Stevens
  • TCP/IP Illustrated: TCP for Transactions, HTTP, NNTP and the Unix Domain Protocols, Vol. 3 by Richard Stevens
  • The TCP/IP Guide: A Comprehensive, Illustrated Internet Protocols Reference by Charles Kozierok
  • Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture by Douglas E. Comer

HTTP


Programming


Functional Programming

Haskell, Scala, Clojure

  • Introduction to Functional Programming by Richard S. Bird, Philip Wadler
  • Real World Haskell by Bryan O'Sullivan, Don Stewart, and John Goerzen
  • Thinking Functionally with Haskell by Richard S. Bird
  • Programming in Haskell by Graham Hutton
  • Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason
  • Functional Programming, Simplified (Scala Edition) by Alvin Alexander
  • Programming Clojure by Stuart Halloway, Susannah Davidson Pfalzer
  • Functional Programming In Java: How Functional Techniques Improve Your Java Programs by Pierre-Yves Saumont
  • Real-world Functional Programming: With Examples in F# and C# by Jon Skeet and Tomas Petricek
  • Functional Programming in JavaScript by Luis Atencio

Parallel Programming

  • An Introduction to Parallel Programming by Peter Pacheco
  • Programming Massively Parallel Processors: A Hands-On Approach by David B. Kirk
  • Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney
  • Seven Concurrency Models in Seven Weeks: When Threads Unravel by Paul Butcher
  • Structured Parallel Programming: Patterns for Efficient Computation by Michael McCool
  • Introduction to High Performance Computing for Scientists and Engineers by Georg Hager, Gerhard Wellein

Garbage Collection

Java, C#

  • The Garbage Collection Handbook: The Art of Automatic Memory Management by Antony Hosking, Eliot Moss, and Richard Jones
  • Garbage collection by Richard Jones
  • Java Performance Companion by Charlie Hunt, Poonam Bajaj, Bengt Rutisson, Monica Beckwith, John Cuthbertson
  • Java Performance Tuning by Jack Shirazi
  • 垃圾回收的算法与实现 by 中村成洋, 相川光

Object-Oriented

C++, Java

  • Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Ralph Johnson, John Vlissides, Richard Helm
  • Object-Oriented Software Construction by Bertrand Meyer
  • The Object-Oriented Thought Process by Matt Weisfeld
  • Elegant Objects by Yegor Bugayenko
  • Head First Object-Oriented Analysis and Design: A Brain Friendly Guide to OOA&D by Brett McLaughlin, Gary Pollice, David West


C++

Must Read

  • A Tour of C++ by Bjarne Stroustrup
  • C++ Primer (5th, 2012) by Josée Lajoie and Stanley B. Lippman
  • The C++ Programming Language (4th, 2013) by Bjarne Stroustrup
  • The C++ Standard Library (2nd, 2012) by Nikolai Josuttis
  • Effective C++ (3rd, 2005) by Scott Meyers

Some More

  • Effective Modern C++ (2014) by Scott Meyers
  • More Effective C++ (1996) by Scott Meyers
  • Effective STL (2001) by Scott Meyers
  • Large-Scale C++ Software Design (1996) by John Lakos
  • Inside the C++ Object Model (1996) by Stanley B·Lippman
  • Accelerated C++: Practical Programming by Example by Andrew Koenig
  • C++ Concurrency in Action: Practical Multithreading by Anthony Williams

Courses

  • C++面向对象开发 by 侯捷
  • STL 标准库与泛型编程 by 侯捷
  • C++新标准 C++11/14 by 侯捷
  • C++ 内存管理机制 by 侯捷
  • C++ Startup 揭秘 by 侯捷

Go

Books

  • Go Documentation - doc
  • The Go Programming Language by Alan A. A. Donovan and Brian W. Kernighan
  • An Introduction to Programming in Go by Caleb Doxsey
  • Go Web Programming by Chang Sau Sheong
  • Introducing Go: Build Reliable, Scalable Programs by Caleb Doxsey
  • Concurrency in Go: Tools and Techniques for Developers by Katherine Cox-Buday
  • Go Programming Blueprints by Mat Ryer
  • Go in Action by William Kennedy, Brian Ketelsen
  • Go in Practice by Matt Butcher

Tutorials

Rust

  • The Rust Programming Language - doc
  • Rust Documentation - doc
  • Learn Rust - doc
  • The Rust Programming Language by Carol Nichols and Steve Klabnik
  • Programming Rust: Fast, Safe Systems Development by Jason Orendorff and Jim Blandy
  • Hands-On Concurrency with Rust: Confidently Build Memory-Safe, Parallel, and Efficient Software in Rust by Brian L Troutwine
  • Programming WebAssembly with Rust: Unified Development for Web, Mobile, and Embedded Applications by Kevin Hoffman
  • Rust Programming By Example: Enter the World of Rust by Building Engaging, Concurrent, Reactive, and Robust Applications by Antoni Boucher and Guillaume Gomez

Lua

  • Lua Documentation - doc
  • Programming in Lua by Roberto Ierusalimschy
  • Lua Programming Gems by Luiz Henrique de Figueiredo, Waldemar Celes, Roberto Ierusalimschy
  • Beginning Lua programming by Kurt Jung
  • Lua Quick Start Guide: The Easiest Way to Learn Lua Programming by Gabor Szauer
  • Lua 5.2 Reference Manual by Luiz Henrique de Figueiredo, Roberto Ierusalimschy, and Waldemar Celes

C#

  • C# documentation - doc
  • C# in Depth by Jon Skeet
  • Head First C# by Andrew Stellman
  • C# 7.0 in a Nutshell: The Definitive Reference by Joseph Albahari, Ben Albahari
  • Pro C# 7: With .NET and .NET Core by Andrew Troelsen and Philip Japikse
  • Professional C# 7 and .NET Core 2.0 by Christian Nagel
  • CLR VIA C# by Jeffrey Richter
  • Effective C#: 50 Specific Ways to Improve Your C# (3rd, 2016) by Bill Wagner
  • More Effective C#: 50 Specific Ways to Improve Your C# (2nd, 2017)by Bill Wagner

JavaScript

Reference Web Frontend Resources - JavaScript

Java

Reference Java Resources

Ruby

  • Ruby Documentation - doc
  • The Well-Grounded Rubyist by David A. Black
  • Programming Ruby: The Pragmatic Programmers' Guide by Dave Thomas, Chad Fowler, and Andy Hunt
  • Eloquent Ruby by Russ Olsen
  • Why's (Poignant) Guide to Ruby by Why The Lucky Stiff
  • The Ruby Programming Language by David Flanagan, Yukihiro Matsumoto, Why The Lucky Stiff
  • The Rails Way by Obie Fernandez
  • Agile Web Development with Rails: A Pragmatic Guide by Dave Thomas
  • Practical Object Oriented Design in Ruby by Sandi Metz

PHP

  • PHP Documentation - doc
  • Learning PHP, MySQL, JavaScript, CSS & HTML5: A Step-by-Step Guide to Creating Dynamic Websites by Robin Nixon
  • Head First PHP and MySQL by Lynn Beighley and Michael Morrison
  • PHP and MySQL Web Development by Luke Welling
  • Modern PHP: New Features and Good Practices by Josh Lockhart
  • Murach's PHP and MySQL by Joel Murach and Ray Harris
  • PHP Cookbook by Adam Trachtenberg and David Sklar
  • Programming PHP by Rasmus Lerdorf, Kevin Tatroe, Peter MacIntyre
  • PHP Objects, Patterns, and Practice by Matt Zandstra
  • PHP for the Web: Visual QuickStart Guide by Larry Ullman
  • PHP 6 and MySQL 5 for Dynamic Web Sites: Visual Quickpro Guide by Larry Ullman

Web Frameworks

  • Laravel
  • Codeigniter
  • Symfony
  • Yii 2
  • Phalcon
  • CakePHP
  • Zend
  • FuelPHP

Python

Prime

  • The Python Tutorial - doc
  • Python Documentation
  • Learning Python by David Ascher and MARK LUTZ
  • Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code by Zed Shaw
  • A Byte of Python by Swaroop C.H.
  • Automate the Boring Stuff with Python: Practical Programming for Total Beginners by Al Sweigart
  • Python Crash Course: A Hands-On, Project-Based Introduction to Programming by Eric Matthes
  • Think Python: An Introduction to Software Design by Allen B. Downey
  • Dive into Python by Mark Pilgrim
  • Python Essential Reference by David M. Beazley

Advanced

  • Python Cookbook: Recipes for Mastering Python 3 by Brian K. Jones and David M. Beazley
  • Fluent Python by Luciano Ramalho
  • The Hitchhiker's Guide to Python: Best Practices for Development by Kenneth Reitz, Tanya Schlusser
  • Pro Python by Marty Alchin
  • Expert Python Programming by Tarek Ziadé
  • Effective Python: 59 Specific Ways to Write Better Python by Brett Slatkin
  • High Performance Python: Practical Performant Programming for Humans by Ian Ozsvald and Micha Gorelick

Some More

  • Python Tricks: A Buffet of Awesome Python Features by Dan Bader
  • Web Scraping with Python by Ryan Mitchell
  • Python for Data Analysis by Wes McKinney

Tutorials

Web Frameworks

  • Django
  • Web2Py
  • Turbo Gears
  • CubicWeb
  • Flask
  • CherryPy
  • Bottle
  • Tornado

Android

  • Android Documentation - doc
  • Android Programming: The Big Nerd Ranch Guide by Brian Hardy, Bill Phillips
  • Head First Android Development: A Brain-Friendly Guide by DAVID GRIFFITHS and Dawn Griffiths
  • The Busy Coder's Guide to Advanced Android Development by Mark Murphy
  • Android Programming: Pushing the Limits by Erik Hellman
  • Professional Android 4 Application Development by Reto Meier
  • Learning Android by Marko Gargenta
  • Programming Android: Java Programming for the New Generation of Mobile Devices by Zigurd Mednieks, Laird Dornin, G. Blake Meike, Masumi Nakamura

Kotlin

  • Kotlin Reference - doc
  • Kotlin in Action by Dmitry Jemerov and Svetlana Isakova
  • The Joy of Kotlin by Pierre Yves Saumont
  • Kotlin for Android Developers by Antonio Leiva
  • Head First Kotlin: A Brain-Friendly Guide by David Griffiths and Dawn Griffiths
  • Fundamental Kotlin by Miloš Vasić

Objective-C

  • Programming with Objective-C - doc
  • The Objective-C Programming Language - doc
  • Apple Developer Documentation - doc
  • Programming in Objective-C by Stephen G. Kochan
  • Objective-C Programming: The Big Nerd Ranch Guide by Aaron Hillegass and Mikey Ward
  • Effective Objective-C 2.0: 52 Specific Ways to Improve Your IOS and OS X Programs by Matt Galloway
  • iOS Programming: The Big Nerd Ranch Guide by Aaron Hillegass and Joe Conway
  • Learning Cocoa with Objective-C: Developing for the Mac and IOS App Stores by Jon Manning and Paris Buttfield-Addison
  • Learn Objective-C on the Mac by Mark Dalrymple, Scott Knaster

Swift

  • Swift Documentation - doc
  • Swift in Depth by Tjeerd in 't Veen
  • IOS 12 Programming for Beginners: An Introductory Guide to IOS App Development with Swift 4.2 and Xcode 10 (3rd, 2018) by Craig Clayton
  • IOS 10 Programming Fundamentals with Swift: Swift, Xcode, and Cocoa Basics by Matt Neuburg
  • Swift 5 for Absolute Beginners: Learn to Develop Apps for iOS by Stefan Kaczmarek, Brad Lees, Gary Bennett

Lisp

  • Lisp Documentation - doc
  • Practical Common Lisp by Peter Seibel
  • Paradigms of AI Programming: Case Studies in Common Lisp by Peter Norvig
  • Common LISP: A Gentle Introduction to Symbolic Computation by David S. Touretzky
  • Structure and Interpretation of Computer Programs by Gerald Jay Sussman and Hal Abelson
  • On Lisp by Paul Graham
  • Land of Lisp: Learn to Program in Lisp, One Game at a Time! by Conrad Barski
  • Common Lisp the Language by Guy L. Steele Jr.
  • ANSI Common Lisp by Paul Graham
  • The Little Schemer by Daniel P. Friedman and Matthias Felleisen

Haskell

  • Haskell Documentation - doc
  • Real World Haskell: Code You Can Believe In by Bryan O'Sullivan
  • Programming in Haskell by Graham Hutton
  • Learn You a Haskell for Great Good! by Miran Lipovača
  • Parallel and Concurrent Programming in Haskell: Techniques for Multicore and Multithreaded Programming by Simon Marlow
  • Haskell Programming From First Principles by Christopher Allen, Julie Moronuki
  • Get Programming with Haskell by Will Kurt
  • Thinking Functionally with Haskell by Richard S. Bird
  • Learn You a Haskell for Great Good!: A Beginner's Guide by Miran Lipovača
  • Haskell: The Craft of Functional Programming by Simon Thompson

Perl

  • Perl 5.30.0 documentation
  • Perl Docs
  • Learning Perl by Randal L. Schwartz
  • Beginning Perl by Curtis 'Ovid' Poe
  • Programming Perl by Tom Christiansen
  • Perl Cookbook by Tom Christiansen, Nathan Torkington
  • Modern Perl by chromatic
  • Intermediate Perl by Randal L. Schwartz, Brian D. Foy, Tom Phoenix
  • Perl Best Practices: Standards and Styles for Developing Maintainable Code by Damian Conway
  • Mastering Perl by Brian D. Foy
  • Higher-Order Perl: Transforming Programs with Programs by Mark Jason Dominus
  • Object Oriented Perl: A Comprehensive Guide to Concepts and Programming Techniques by Damian Conway, Randal L. Schwartz

Groovy

  • Groovy Documentation - doc
  • Groovy in Action by Dierk König, Andrew Glover, Paul King, Guillaume Laforge, Jon Skeet, James Gosling
  • Programming Groovy 2: Dynamic Productivity for the Java Developer by Venkat Subramaniam
  • Making Java Groovy by Kenneth A. Kousen
  • Groovy 2 Cookbook by Andrey Adamovich and Luciano Fiandesio
  • Grails in Action by Glen Smith, Peter Ledbrook
  • The definitive guide to Grails by Graeme Keith Rocher

Scala

  • Scala Documentation - doc
  • Programming in Scala by Bill Venners and Martin Odersky
  • Functional Programming in Scala by Paul Chiusano and Rúnar Bjarnason
  • Scala for the Impatient by Cay S. Horstmann
  • Scala in Depth by Joshua D. Suereth
  • Scala Cookbook: Recipes for Object-Oriented and Functional Programming by Alvin Alexander
  • Programming Scala: Scalability = Functional Programming + Objects by Alex Payne and Dean Wampler
  • Scala in Action by Nilanjan Raychaudhuri
  • Functional Programming, Simplified: (Scala Edition) by Alvin Alexander
  • Learning Scala: Practical Functional Programming for the JVM by Jason Swartz
  • Scala Puzzlers by Andrew Phillips and Nermin Serifovic


SQL

Reference CS Advanced Domains Resources - Database Systems

Regular Expression

  • Mastering Regular Expressions by Jeffrey Friedl
  • Regular Expressions Cookbook by Jan Goyvaerts and Steven Levithan
  • Regular Expression Pocket Reference: Regular Expressions for Perl, Ruby, PHP, Python, C, Java and .NET Book by Tony Stubblebine

XML

HTML & CSS

Reference Web Frontend Resources - HTML & CSS

JSON

YAML


Others



References

[1] Essential Programming Books - Goodreads

[2] The 50 Best Websites to Learn Python