Book Shelf

Math.FM.

“Software Foundations, Volumn 1 - 4”. By Benjamin C. Pierce, et al. 2019. html video/lectures by Pierece, UPenn, by Clarkson, Cornell, by Xiong, Peking U

“Logical Foundations for Computing Science”. By Shen Enshao. 2006.

“Logic for Computer Science.” By Steve Reeves and Mike Clarke. 2003.

“Rigorous Software Development: An Introduction to Program Verification”. By Almeida, José Bacelar, Maria João Frade, Jorge Sousa Pinto, and Simão Melo de Sousa. 2011.

“Homotopy Type Theory: Univalent Foundations of Mathematics”. The Univalent Foundations Program, 2013.

Online Class Materials:

Principles of Computer Systems. MIT 6.826. 2019, 2017, 2004.

Systems Verification. Washington.edu CSE 599W. 2016.

Verified Systems Software. UPENN CIS 670. 2015

Certified System Software. MIT 6.888. 2015

Models of Computation. UTAH, CS3100. 2018 youtube

Constructive Logic. CMU, 15-317. 2019-fall

Software Analysis. Peking University. 2022-fall

Languages

“Practical Foundations for Programming Languages”. By Robert Harper. 2016.

“Types and Programming Languages”. By Benjamin C. Pierce. 2002.

“Advanced Topics in Types and Programming Languages”. By Benjamin C. Pierce, editor. 2004.

Online Class Materials

“Programming Lauguage Design and Implementation”. UR CSC 2454. 2019.

“Types and Programming Languages”. CMU, 15-814. 2019-fall

Program Analysis

“Static Program Analysis”. By Anders Møller and Michael I. Schwartzbach. pdf/201911.

“Principles of Program Analysis”. By Flemming Nielson, Hanne Riis Nielson, and Chris Hankin. 1998.

Complexity

“Introduction to Automata Theory, Languages, and Computation”. By John E. Hopcroft, Rajeev Motwani, and Jeffery D. Ullman. 2006.

“Computers and Intractability: A Guide to the Theory of NP-Completeness”. By Micheal Garey and David S. Johnson. 1979.

Algorithms

“Introduction to Algorithms”. By Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 2009.

“The Art of Multiprocessor Programming”. By Maurice Herlihy, and Nir Shavit. 2008.

Compilers

“Compilers: Principles, Techniques, and Tools”. By Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. 2nd ed. 2007.

“Advanced Compiler Design and Implementation”. By Steven S. Muchnick. 1997.

“Engineering A Compiler”. By Keith D. Cooper, and Linda Torczon. 2nd ed. 2012.

“Optimizinig Compilers for Modern Architectures: A Dependence-based Approach”. By Randy Allen, and Ken Kennedy. 2001.

Com.Arch

“Computer Organization and Design, The Hardware/Software Interface”. By David A. Patterson, and John L. Hennessy. 5th ed. 2014.

“Computer Architecture: A Quantitative Approach”. By John L. Hennessy, and David A. Patterson. 5th ed. 2012.

“Principles of Secure Processor Architecture Design”. By Jakub Szefer. 2018.

Com.Sys

“Computer Systems: A Programmer’s Perspective”. By Randal E. Bryant, and David R. O’Hallaron. 3rd ed, 2015.

“The Design and Implementation of the FreeBSD Operating System”. By Marshall Kirk McKusick, George V. Neville-Neil, and Robert N.M. Watson, 2nd ed, 2014.

“程序员的自我修养–链接、装载与库”。 作者:俞甲子/石凡/潘爱民。2009。

“Linkers and Loaders”. By John R. Levine. 1999.

“Understanding the Linux Kernel”. By Daniel P. Bovet, and Marco Cesati. 3rd ed. 2005.

Computer Security

“Computer Security: Art and Sciences”. By Matt Bishop. 2nd edition, 2018.

“Computer Security: A Hands-on Approach”. By Wenliang Du. 2017.

“Cryptography and Network Security: Principles and Practices”. By William Stallings. 4th edition. 2006.

“Security Engineering: A Guide to Building Dependable Distributed Systems”. Site, Third Edition, 2020, PDF, 2nd Edition, 2008, PDF, 1st Edition, 2001

Online Class Materials

“Computer Systems Security”. MIT 6.56606.858. Spring 2022, Spring 2023 by Nickolai Zeldovich; videos

“Foundations of Computer Security”. MIT 6.1600. Fall 2022 by Nickolai Zeldovich;

Software Engineering Practice

“Design Patterns: Elements of Reusable Object-Oriented Software”. By GoF, 1994.

《编程之美–微软技术面试心得》,电子工业出版社,2008。

More

Created Nov 11, 2022 // Last Updated Feb 7, 2023

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?