Skip to content

Latest commit

 

History

History
936 lines (658 loc) · 42.2 KB

#cs-foundations.md

File metadata and controls

936 lines (658 loc) · 42.2 KB

CS Fundamentals 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


Part I: Introduction



Books

  • Computer Science: An Overview (13th, 2018) by Glenn Brookshear and Dennis Brylow
  • Things a Computer Scientist Rarely Talks About by Donald Ervin Knuth
  • Algorithms to Live By: The Computer Science of Human Decisions by Brian Christian
  • Digitized: The Science of Computers and How It Shapes Our World by Peter J. Bentley
  • Computer: A History of the Information Machine by Martin Campbell-Kelly, William Aspray
  • 计算机是怎样跑起来的 by [日] 矢泽久雄
  • 程序是怎样跑起来的 by [日] 矢泽久雄
  • 网络是怎样连接的 by [日] 户根勤

Courses

Guidance



Books

  • Learning to Program by Steven Foote
  • Python Programming: An Introduction to Computer Science (3rd, 2016) by John Zelle
  • Think Like a Programmer: An Introduction to Creative Problem Solving (2012) by V. Anton Spraul
  • How to Design Programs: An Introduction to Programming and Computing by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt

Advanced

  • A Discipline of Programming by Edsger W. Dijkstra

Guidance

Courses

Playground

More Programming Languages


Part II: Logic



Computer science should be called computing science, for the same reason why surgery is not called knife science.

-- Edsger W. Dijkstra

Prime

  • New books on Data Structures and Algorithms
    • Grokking Algorithms An Illustrated Guide For Programmers and Other Curious People (2016) by Aditya Y. Bhargava [4.41, 4217]
    • Data Structures and Algorithms Made Easy (2023) by Narasimha Karumanchi [4.10, 1311]
    • Jay Wengrow
      • A Common-Sense Guide to Data Structures and Algorithms: Level Up Your Core Programming Skills (2nd, 2020) by Jay Wengrow [4.39, 534]
      • A Common-Sense Guide to Data Structures and Algorithms in JavaScript (2024) by Jay Wengrow
    • Data Structures and Algorithms in Java (2002) by Robert Lafore [4.13, 332]
    • Problem Solving With Algorithms And Data Structures Using Python (2011) by Bradley N. Miller [4.11, 196]
    • Michael T. Goodrich
      • Data Structures and Algorithms in Python (2013) by Michael T. Goodrich [4.17, 151]
      • Data Structures and Algorithms in Java (2014) by Michael T. Goodrich
      • Data Structures and Algorithms in C++ (2011) by Michael T. Goodrich
    • Data Structures the Fun Way: An Amusing Adventure with Coffee-Filled Examples (2022) by Jeremy Kubica
    • 我的第一本算法书 by [日]石田保辉, 宮崎修一
  • Classic books on Data Structures and Algorithms
    • Data Structures and Algorithm Analysis in C++ (3rd, 2011) by Clifford A. Shaffer [3.75, 8]
    • Algorithms (4th, 2011) by Robert Sedgewick [4.41, 1757]
    • Mark A. Weiss
      • Data Structures and Algorithm Analysis in C (2nd, 1996) by Mark A. Weiss [3.84, 134]
      • Data Structures and Algorithm Analysis in Java (3rd, 2011) by Mark A. Weiss [3.66, 99]
      • Data Structures and Algorithm Analysis in C++ (4th, 2013) by Mark A. Weiss
    • Algorithms + Data Structures = Programs (1976) by Niklaus Wirth [4.24, 202]

Advanced

  • Introduction to Algorithms (4th, 2022) by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen (CLRS: authors abbreviation) [4.35, 8909]
  • The Algorithm Design Manual (2010) by Steven S Skiena [4.35, 2597]
  • Algorithm Design (2005) by Jon Kleinberg, Éva Tardos [4.16, 613]
  • Algorithms (2006) by Sanjoy Dasgupta [4.24, 453]
  • The Art of Computer Programming Volumes 1-4 by Donald.E.Knuth (TAOCP) [4.38, 1857]
    • Vol. 1: Fundamental Algorithms
    • Vol 2: Seminumerical Algorithms
    • Vol 3: Sorting and Searching
    • Vol 4: Combinatorial Algorithms
    • Vol 5: Syntactic Algorithms (Planned)
    • Vol 6: The Theory of Context-Free Languages (Planned)
    • Vol 7: Compiler Techniques (Planned)
  • Classic Computer Science Problems in Java by David Kopec

Others

  • Purely functional data structure by Chris Okasaki
  • Pearls of Functional Algorithm Design by Richard S. Bird

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 Programming Contest

  • OI Wiki
  • Guide to Competitive Programming: Learning and Improving Algorithms Through Contests (2nd, 2020) by Antti Laaksonen
  • Competitive Programmer's Handbook (2020) by Antti Laaksenon
  • Programming Challenges: The Programming Contest Training Manual (2003) by Steven S Skiena
  • Competitive Programming 3 (3rd, 2013) by Steven Halim, Felix Halim
  • 挑战程序设计竞赛 (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

Mathematical/Computer Programming Problems

Tutorials



Guidance

General

  • Math for Programmers by Paul Orland

Prime

  • Discrete mathematics and its applications (8th, 2018) 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
  • Math for Programmers (2019) by Paul Orland
  • Software Foundations HTML

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

Courses

More Mathematics



  • An Introduction to Formal Language and Automata (6th, 2016) by Peter Linz
  • Formal Languages and Automata Theory by C. K. Nagpal
  • Introduction to Automata Theory, Languages, and Computation by John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman


  • Introduction to the Theory of Computation (3rd, 2012) by Michael Sipser
  • Computational Complexity: A Modern Approach (2009) by Sanjeev Arora, Boaz Barak
  • The Nature of Computation (2011) by Cristopher Moore, Stephan Mertens
  • Theory of Computation: Formal Languages, Automata, and Complexity by J. Glenn Brookshear
  • Understanding Computation: From Simple Machines to Impossible Programs by Tom Stuart

Part III: Hardware



Prime

  • Microelectronic Circuits (8th, 2019) by by Adel S. Sedra, Kenneth C. Smith. The best book for analog circuits for beginners.
  • Electronic Devices and Circuit Theory (11th, 2012) by Robert and Louis
  • Electronic Devices (2018) by Thomas L. Floyd
  • Fundamentals of Microelectronics by Behzad Razavi
  • Foundations of Analog and Digital Electronic Circuits by Anant Agarwal, Jeffrey Lang

Must Read

  • Analysis and Design of Analog Integrated Circuits (5th, 2009) by Paul R. Gray, Paul J. Hurst, Stephen H. Lewis
  • CMOS Analog Circuit Design (3rd, 2011) by Phillip E. Allen, Douglas R. Holberg
  • Design of Analog CMOS Integrated Circuits (2nd, 2017) by Behzad Razavi
  • Analog Integrated Circuit Design (2nd, 2011) by David A. Johns, Kenneth W. Martin
  • CMOS: Circuit Design, Layout, and Simulation (4th, 2019) by R. Jacob Baker. Online CMOSedu.com

Others

  • Analog Design Essentials by Willy M. C. Sansen
  • Microelectronic Circuits by Adel Sedra Kenneth C. Smith
  • Analog Integrated Circuit Design by T.C.Carusone D.A.Johns K.Martin
  • The Art of Analog Layout by Alan Hastings

For Electronics and Electric Circuits

  • The Art of Electronics (3rd, 2015) by Paul Horowitz
  • Practical Electronics for Inventors (4th, 2016) by Paul Scherz
  • Fundamentals of Electric Circuits (6th, 2016) by Charles K. Alexander, Matthew N.O. Sadiku
  • Electric Circuits (11th, 2018) by James W. Nilsson by James W. Nilsson
  • Circuit Analysis For Dummies by John Santiago
  • Introductory Circuit Analysis by Robert L. Boylestad
  • Engineering Circuit Analysis by William H. Hayt Jr., Steven M. Durbin, Jack E. Kemmerly


  • Digital Fundamentals (11th, 2014) by Thomas L. Floyd
  • Digital Integrated Circuits: A Design Perspective (2016) by Jan M. Rabaey
  • Digital Design and Computer Architecture by David Money Harris, Sarah L. Harris

Microcomputer Principles



Prime

  • Code: The Hidden Language of Computer Hardware and Software (1999) by Charles Petzold [4.39, 9421]
  • The Elements of Computing Systems: Building a Modern Computer from First Principles (2005) by Noam Nisan, Shimon Schocken [4.55, 864]
  • Engines of Logic: Mathematicians & the Origin of the Computer by Martin D. Davis [4.10, 463]
  • Introduction to Computing Systems: From Bits and Gates to C and Beyond (2003) by Yale N. Patt and Sanjay J. Patel (ICS) [3.85, 112]
  • How Computers Really Work: A Hands-On Guide to the Inner Workings of the Machine (2020) by Matthew Justice [4.36, 95]
  • The Secret Life of Programs: Understand Computers -- Craft Better Code (2019) by Jonathan E. Steinhart [3.92, 49]
  • 支撑处理器的技术:永无止境地追求速度的世界 by [日] Hisa Ando
  • 穿越计算机的迷雾 by 李忠

Must Read

  • Computer Organization and Design MIPS Edition: the Hardware/Software Interface (6th, 2020) by David A Patterson John L Hennessy and John L. Hennessy [3.97, 1641]
  • Computer Organization and Design ARM Edition: The Hardware Software Interface (2016) by David A Patterson John L Hennessy and John L. Hennessy
  • Computer Organization and Design RISC-V Edition: The Hardware Software Interface (2nd, 2020) 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 [4.11, 1088]
  • Computer Systems: A Programmer‘s Perspective (3rd, 2015) by Randal E.Bryant, David O'Hallaron (CSAPP) [4.45, 1034]

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
  • Modern Computer Architecture and Organization: Learn x86, ARM, and RISC-V architectures and the design of smartphones, PCs, and cloud servers (2nd, 2022) by Jim Ledin

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

Part IV: Software



A lot of modern Assembly Language classes use AL as a sort of “introduction to computer architecture”, rather than treating it as a useful programming language. That’s one path, and certainly valuable, but you might be better off finding a book from the 70s or early 80s, when actually writing in AL was one of the few high-performance alternatives around.

Modern architectures (ARM, MIPS, x86) make it really annoying to try to learn their assembly languages, since architectures are no longer “aimed” at assembly programmers. The instruction sets are easy for a compiler to deal with, but awkward and poorly documented for humans.

  • Micro Cookbook, Volume 1, FUNDAMENTALS (1982) by Don Lancaster
  • Professional Assembly Language (2005) by Richard Blum [64, 4.06]
  • Assembly Language for Intel-Based Computers (1998) by Kip Irvine [76, 4.12]
  • Assembly Language: Step-By-Step (2009) by Jeff Duntemann [165, 4.24]
  • The Art of Assembly Language (2nd, 2010) by Randall Hyde [101, 3.77]
  • Assembly Language for x86 Processors by Kip R. Irvine [82, 3.98]
  • Programming from the Ground Up by Jonathan Bartlett [67, 4.15]
  • ARM Assembly Language Programming & Architecture by Muhammad Ali Mazidi, Sarmad Naimi, Sepehr Naimi, Janice Mazidi
  • 汇编语言 (2003) by 王爽


Prime

  • How to Design Programs: An Introduction to Programming and Computing (2018) by Matthias Felleisen (HTDP) [4.02, 263]

The Little Schemer Series

  • The Little Schemer (4th, 1995) by Daniel P. Friedman. Formerly known as The Little LISPer. [4.29, 1953]
  • The Seasoned Schemer (2nd, 1995) by Daniel P. Friedman, Matthias Felleisen
  • The Reasoned Schemer (2nd, 2018) by Daniel P. Friedman, William E. Byrd, Oleg Kiselyov
  • The Little Prover (2015) by Daniel P. Friedman, Carl Eastlund
  • The Little Typer (2018) by Daniel P. Friedman, David Thrane Christiansen, Robert Harper
  • The Little MLer (1997) by Matthias Felleisen, Daniel P. Friedman
  • A Little Java, A Few Patterns (1997) by Matthias Felleisen, Daniel P. Friedman

Must Read

  • Structure and Interpretation of Computer Programs (2nd, 1996) by Harold Abelson (SICP) [4.46, 4670]
  • Compilers: Principles, Techniques, and Tools (2nd, 2006) by Alfred V. Aho and Monica S. Lam (龙书) [4.09, 2965]
  • Types and Programming Languages (2002) by Benjamin C. Pierce (TAPL) [4.27, 553]
  • Crafting Interpreters (2021) by Robert Nystrom [4.71, 290]
  • Essentials of Programming Languages (2001) by Daniel P. Friedman, Mitchell Wand (EOPL) [3.97, 144]
  • Modern Compiler Implementation in C (2004) by Andrew W. Appel (虎书) [3.70, 40]
  • Advanced Compiler Design and Implementation (1997) by Steven Muchnick (鲸书) [3.89, 90]
  • Concepts, Techniques, and Models of Computer Programming (2004) by Peter Van Roy, Seif Haridi [4.11, 242]
  • My First Language Frontend with LLVM Tutorial HTML

Some More

  • Domain-Specific Languages by Martin Fowler [3.87, 319]
  • Crafting Interpreters by Robert Nystrom link. learn by doing [4.71, 290]
  • Engineering a Compiler (2003) by Keith Cooper and Linda Torczon [4.05, 187]
  • Language Implementation Patterns: Techniques for Implementing Domain-Specific Languages by Terence Parr [3.87, 183]
  • Writing Compilers and Interpreters: A Software Engineering Approach by Ronald Mak [3.91, 66]
  • Practical Foundations for Programming Languages by Robert Harper [3.90, 58]
  • Parsing Techniques (2008) by Dick Grune, Ceriel J.H. Jacobs [4.20, 35]
  • The Definitive ANTLR 4 Reference by Terence Parr
  • Optimizing Compilers for Modern Architectures: A Dependence-Based Approach by Randy Allen, Ken Kennedy [4.42, 19]
  • 程序员的自我修养 (2009) by 俞甲子, 石凡, 潘爱民

Papers

  • On the translation of languages from left to right by Donald Knuth link

Programming Language Design

  • Programming Language Pragmatics (4th, 2015) by Michael L. Scott [3.96, 1670]
  • Purely Functional Data Structures by Chris Okasaki [4.15, 659]
  • The Design and Evolution of C++ by Bjarne Stroustrup [4.30, 321]
  • Writing An Interpreter In Go by Thorsten Ball [4.58, 235]
  • The Art of the Metaobject Protocol by Gregor Kiczales, Jim Des Rivieres, Daniel G. Bobrow [4.22, 136]
  • Build Your Own Lisp by Daniel Holden [4.07, 74]
  • Algorithms Plus Data Structures Equals Programs by Niklaus Wirth
  • The Garbage Collection Handbook: The Art of Automatic Memory Management by Richard Jones [4.43, 49]
  • Programming Languages: Application and Interpretation by Shriram Krishnamurthi eBook


Operating Systems

Must Read

  • Operating Systems: Three Easy Pieces (2015) by Andrea C. Arpaci-Dusseau and Remzi H. Arpaci-Dusseau [4.69, 593]
  • Operating System Concepts (10th, 2018) by Abraham Silberschatz, Peter B. Galvin, Greg Gagne [3.90, 2143]
  • Modern Operating Systems (4th, 2014) by Andrew S. Tanenbaum [4.14, 2088]
  • Applied Operating Systems Concepts by Abraham Silberschatz, Peter Baer Galvin, Greg Gagne [4.01, 67]
  • Operating Systems (3rd, 2003) by Harvey Deitel, Paul Deitel, David R. Choffnes [4.09, 82]

Some More

  • Operating Systems Design and Implementation (3rd, 2006) by Andrew S. Tanenbaum, Albert S. Woodhull [4.11, 529]
  • Operating Systems: Internals and Design Principles (9th, 2017) by William Stallings [3.7, 408]
  • Principles of Computer System Design: An Introduction by Jerome H. Saltzer [3.64, 45]
  • Systems Performance (2013) by Brendan Gregg [4.50, 419]
  • Operating Systems: Principles and Practice (2nd, 2015) by Thomas Anderson, Michael Dahlin [4.27, 33]
  • Orange'S:一个操作系统的实现 (2009) by 于渊
  • 操作系统真象还原 (2016) by 郑钢
  • 一个64位操作系统的设计与实现 (2018) by 田宇

Distributed Operating Systems

  • Distributed Operating Systems: Concepts and Design by Pradeep K. Sinha

Courses

  • MIT 6.828: Operating System Engineering - YouTube

OS Memory

  • What Every Programmer Should Know About Memory by Ulrich Drepper. PDF
  • A Primer On Memory Consistency And Cache Coherence by Daniel J. Sorin, Mark D. Hill, David A. Wood [4.43, 14]

Unix/Linux

Linux user guide (System and command line)

  • Linux Documentation Project Guides
    • Linux Filesystem Hierarchy by Binh Nguyen HTML, PDF
  • The Linux Command Line: A Complete Introduction (2nd, 2019) by William E. Shotts, Jr. [4.38, 1579]
  • How Linux Works: What Every Superuser Should Know (3rd, 2021) by Brian Ward [4.16, 1133]
  • Linux Bible (10th, 2020) by Christopher Negus [4.29, 413]
  • 鸟哥的Linux私房菜:基础学习篇 (4th, 2018) by 鸟哥
  • 鸟哥的Linux私房菜:服务器架设篇 (3th, 2012) by 鸟哥
  • Harley Hahn's Guide to Unix and Linux (2008) by Harley Hahn [4.43, 28]
  • Linux for Beginners: An Introduction to the Linux Operating System (2014) by Jason Cannon [4.00, 302]
  • Linux for Beginners: A Practical and Comprehensive Guide to Learn Linux Operating System and Master Linux Command Line. Contains Self-Evaluation Tests to Verify Your Learning Level (2019) by Ethem Mining [4.0, 38]
  • Linux Command Line and Shell Scripting Bible (3rd, 2015) by Christine Bresnahan and Richard Blum [4.14, 250]

New books on Linux

  • Efficient Linux at the Command Line: Boost Your Command-Line Skills (2022) by Daniel J. Barrett
  • Learning Modern Linux: A Handbook for the Cloud Native Practitioner (2022) by Michael Hausenblas
  • Practical Linux System Administration: A Guide to Installation, Configuration, and Management (2023) by Kenneth Hess

Linux References

  • Linux in a Nutshell: A Desktop Quick Reference (6th, 2009) by by Ellen Siever, Stephen Figgins, Robert Love [3.92, 785]
  • Linux Pocket Guide (4th, 2024) by Daniel J. Barrett [4.07, 632]

Linux Administration

  • UNIX and Linux System Administration Handbook (5th, 2017) by Evi Nemeth, Garth Snyder, Trent R. Hein, Ben Whaley [4.44, 946]
  • Linux Administration Handbook by Evi Nemeth, Garth Snyder, and Trent Hein
  • Linux Administration: The Linux Operating System and Command Line Guide for Linux Administrators (2016) by Jason Cannon [4.1, 116]
  • Modern Linux Administration: How to Become a Cutting-Edge Linux Administrator (2019) by Sam R. Alapati [4.25, 21]
  • Linux Cookbook: Essential Skills for Linux Users and System & Network Administrators (2nd, 2021) by Carla Schroder [3.8, 57]

Cybersecurity

  • Linux Basics for Hackers: Getting Started with Networking, Scripting, and Security in Kali (2018) by OccupyTheWeb [4.12, 392]
  • Cybersecurity Ops with bash: Attack, Defend, and Analyze from the Command Line (2019) by Paul Troncone, Carl Albing Ph. D

Shell

  • Learning the bash Shell (3rd, 2005) by Cameron Newham, Bill Rosenblatt [3.87, 611]
  • Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix (2005) by Arnold Robbins, Nelson H. Beebe, Nathan Torkington [4.04, 276]
  • Bash Cookbook: Solutions and Examples for Bash Users (2nd, 2017) by Carl Albing, J.P. Vossen, Cameron Newham [3.88, 173]
  • Bash Pocket Reference (2nd, 2016) by Arnold Robbins [4.24, 177]
  • Advanced Bash-Scripting Guide: An in-depth exploration of the art of shell scripting by Mendel Cooper LINK1, LINK 2
  • Shell Scripting: How to Automate Command Line Tasks Using Bash Scripting and Shell Programming by Jason Cannon
  • UNIX Shells by Example by Ellie Quigley
  • Linux Shell Scripting Cookbook by Shantanu Tushar, Sarath Lakshman
  • Expert Shell Scripting by Ron Peters

Vim

  • Vim documentation
  • Vim help files (also accessible via the :help command)
  • $vimtutor
  • Vim Cheat Sheet
  • vim-galore. Everything you need to know about 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
  • Advanced
    • Learn Vimscript the Hard Way by Steve Losh
  • Vim Tools
    • IDEA Plugins: IdeaVim, IdeaVimExtension, AceJump
    • Chrome Plugins: cVim

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

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

Linux Programming (Linux system calls)

  • Linux Kernel Development (3rd, 2010) by Robert Love [4.33, 845]
  • The Linux Programming Interface (2010) by Michael Kerrisk [4.63, 649]
  • Beginning Linux Programming (4th, 2011) by Mathew Neil and Richard Stones [3.77, 155]
  • Understanding Unix/Linux Programming by Bruce Molay [4.11, 35]
  • Linux 环境编程 by 高峰
  • Autotools: A Practioner's Guide to GNU Autoconf, Automake, and Libtool by John Calcote [4.15, 48]

Linux Insides / Linux Kernel

Linux Drivers

  • Linux Device Drivers by Alessandro Rubini, Greg Kroah-Hartman, and Jonathan Corbet [4.12, 264]
  • The Linux Kernel Module Programming Guide by Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang (Linux kernel 5.0+)
  • 深入Linux设备驱动程序内核机制 by 陈学松

Docs

Tutorials

Windows

Windows Programming

  • Windows Internals (7th, 2017) by Russinovich and Solomon
  • Troubleshooting with the Windows Sysinternals Tools (2nd, 2016) by Mark E. Russinovich, Aaron Margosis
  • Programming Windows (5th, 1998) by Charles Petzold
  • Programming Applications for Microsoft Windows (1999) by Jeffrey Richter


Parallel Computer Architecture

  • The Art of Multiprocessor Programming by Maurice Herlihy, Nir Shavit [4.01, 228]
  • A Primer On Memory Consistency And Cache Coherence by Daniel J. Sorin, Mark D. Hill, David A. Wood [4.43, 14]
  • Fundamentals of Parallel Multicore Architecture by Yan Solihin [4.75, 4]
  • Parallel Computer Architecture: A Hardware/Software Approach by David Culler [3.65, 26]

Parallel Programming

  • Seven Concurrency Models in Seven Weeks: When Threads Unravel by Paul Butcher [3.81, 339]
  • Programming Massively Parallel Processors: A Hands-On Approach by David B. Kirk [3.86, 94]
  • Programming with Posix Threads by David R. Butenhof [4.33, 60]
  • An Introduction to Parallel Programming by Peter Pacheco [3.87, 60]
  • Introduction to High Performance Computing for Scientists and Engineers by Georg Hager, Gerhard Wellein [4.11, 28]
  • Structured Parallel Programming: Patterns for Efficient Computation by Michael McCool [4.12, 24]
  • Is Parallel Programming Hard, And, If So, What Can You Do About It? by Paul E. McKenney [4.17, 17]
  • Parallel and High Performance Computing (2021) by Robert Robey, Yuliana Zamora


Reference Programming Language Resources


Part V: Information


Communication Engineering




Must Read

  • Computer Networking: A Top Down Approach (8th, 2022) by Kurose, Ross [4.1, 2140]. 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 [4.1, 2348]. Good but dry. Well formed contents, should have some basic understanding of data communications before reading this book.
  • Networking All-in-One For Dummies (8th, 2021) by Doug Lowe [3.9, 367]

Some More

  • Data Communications and Networking by Behrouz A. Forouzan
  • Computer Networks: A System Approach (6th, 2021) by Larry L. Peterson and Bruce S. Davie [3.9, 242]
  • Data and Computer Communications by William Stallings
  • Computer Networks and Internets (6th, 2014) by Douglas E. Comer [3.7, 129]

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
  • TCP/IP Network Administration (3rd, 2002) by Craig Hunt
  • 图解TCP/IP by [日]竹下隆史, 村山公保, 荒井透, 苅田幸雄

HTTP

  • RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1
  • HTTP: The Definitive Guide (2002) by David Gourley, Brian Totty, Marjorie Sayer, Anshu Aggarwal, Sailu Reddy
  • Learning Http/2: A Practical Guide for Beginners (2017) by Stephen Ludin, Javier Garza
  • 图解HTTP by [日] 上野宣

HTTPS

  • Bulletproof SSL and TLS: The Complete Guide to Deploying Secure Servers and Web Applications by Ivan Ristic

Network Tools

HTTP Reverse proxy

HTTP Forwarding proxy

TCP/UDP port redirector

Expose a local server to the Internet

Network Security

Reference information-security-resources - Network Security



Must Read

  • The Code Book: The Science of Secrecy from Ancient Egypt to Quantum Cryptography (2000) by Simon Singh [4.30, 26820]
  • Applied Cryptography: Protocols, Algorithms, and Source Code in C (2015) by Bruce Schneier [4.21, 2124]
  • Practical Cryptography (2003) by Niels Ferguson, Bruce Schneier [4.15, 317]
  • Cryptography Engineering: Design Principles and Practical Applications (2010)by Niels Ferguson, Bruce Schneier, Tadayoshi Kohno [4.21, 393]
  • The Joy of Cryptography by Mike Rosulek. It is a free undergraduate-level textbook that introduces students to the fundamentals of provable security.
  • 图解密码技术 by [日] 结城浩
  • Understanding Cryptography: A Textbook for Students and Practitioners (2010) by Christof Paar, Jan Pelzl [4.18, 217]
  • Introduction to Modern Cryptography, Second Edition (Chapman & Hall/CRC Cryptography and Network Security Series) by Jonathan Katz [4.26, 126]
  • Serious Cryptography: A Practical Introduction to Modern Encryption by Jean-Philippe Aumasson [4.29, 340]
  • Top Secret: A Handbook of Codes, Ciphers and Secret Writing by Paul B. Janeczko, Jenna Lareau [3.97, 191]
  • Handbook of Applied Cryptography by Alfred J. Menezes, Scott A. Vanstone, Paul C. van Oorschot [4.02, 120]
  • Introduction to Modern Cryptography: Principles and Protocols by Jonathan Katz, Yehuda Lindell [4.26, 126]
  • Real-World Cryptography by David Wong [4.6, 73]

Some More

  • The Mathematics of Secrets: Cryptography from Caesar Ciphers to Digital Encryption by Joshua Holden
  • Cryptanalysis: A Study of Ciphers and Their Solution by Helen Fouche Gaines
  • Can You Crack the Code?: A Fascinating History of Ciphers and Cryptography by Ella Schwartz
  • Cracking Codes with Python: An Introduction to Building and Breaking Ciphers by Al Sweigart
  • An Introduction to Mathematical Cryptography by Jeffrey Hoffstein, Jill Pipher, J.H. Silverman
  • Cryptography: Theory and Practice by Doug Stinson
  • Foundations of cryptography by Oded Goldreich
  • The Design of Rijndael: AES - The Advanced Encryption Standard by Joan Daemen, Vincent Rijmen
  • Elementary Cryptanalysis 2nd edition by Abraham Sinkov, Todd Feil


Must Read

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

Courses



Computer Graphics

  • Computer Graphics: Principles and Practice (3rd, 2013) by John F. Hughes, van Dam, Andries [4.20, 358]
  • Real-Time Rendering by Tomas Akenine-Möller, Eric Haines [4.50, 321]
  • Fundamentals of Computer Graphics by Peter Shirley [3.80, 111]
  • Computer Graphics Principles and Practice in C: Principles & Practice in C by James D. Foley, Andries van Dam, Steven K. Feiner, F. Hughes John [4.67, 9]
  • Physically Based Rendering: From Theory to Implementation by Greg Humphreys and Matt Pharr [4.56, 167]
  • Foundations of 3D Computer Graphics by Steven J. Gortler [4.00, 16]
  • Interactive Computer Graphics: A Top-Down Approach with WebGL (7th, 2014) by Edward Angel and Dave Shreiner [3.08, 13]

Mathematics for Computer Graphics

  • 3D math primer for graphics and game development by Fletcher Dunn [4.12, 206]
  • Mathematics for 3D Game Programming and Computer Graphics (3rd, 2011) by Eric Lengyel [3.96, 196]
  • Mathematics for Computer Graphics by John Vince [3.85, 26]

OpenGL

  • Computer Graphics with OpenGL by Donald Hearn, M. Pauline Baker
  • OpenGL SuperBible: Comprehensive Tutorial and Reference by Graham Sellers, Nicholas Haemel, Richard S. Wright Jr.
  • OpenGL(R) Reference Manual: The Official Reference Document to OpenGL, Version 1.2 by OpenGL Architecture Review Board
  • OpenGL 4 Shading Language Cookbook by David Wolff
  • OpenGL Programming Guide: The Official Guide to Learning OpenGL, Version 4.3 by Dave Shreiner, Graham Sellers, John Kessenich


  • Multimedia Learning by Richard E. Mayer
  • Fundamentals of multimedia by Ze-Nian Li
  • Multimedia: Making it Work by Tay Vaughan
  • EPublishing with InDesign CS6: Design and Produce Digital Publications for Tablets, Ereaders, Smartphones, and More by Pariah S. Burke

Others


1. Learning Materials

Resources Searching

Tutorials

Courses

Course Collections

2. Code Practice and Creating Projects

3. Inspiration and Fun

Talks

Finding technology trends

  • Stack Overflow Developer Survey
  • The State of Developer Ecosystem Report by JetBrains
  • Search: top technology trends + software development/web development/Java development + in <year>
  • Gartner Hype Cycle (Twitter search from:Mark O'Neill)
    • for the Future of Applications
    • for Emerging Tech
    • for Software Engineering
  • Technology Radar by thoughtworks

Uncategorized


References

[1] Essential Programming Books - Goodreads

[2] 71 OF THE BEST PLACES TO LEARN TO CODE FOR FREE

[3] The 50 Best Websites to Learn Python

[4] How-to-be-a-good-programmer

[5] 程序员必读书单 1.0

[6] 程序员必读书单 1.0 -- 六年后的回顾

[7] cs-self-learning