Computer Science

What Books CS Majors Should Read

Feb. 11, 2013

by Dr. Kenan Casey

Each spring, graduating computer science majors FHU take Advanced Topics in Computer Science (CIS 491), a course that serves as the capstone course of their undergraduate program. The main component of this course is a significant, real-world development project. In previous years students have developed an iPhone application and an iPad application for the university. 

In addition to this very challenging development project, students in CIS 491 also participate in several academic projects. One project is a written review of a classic book in the field of CS. Students choose a book that is of interest to them, read it over the course of the semester, and write a detailed review of the book. Specifically, students answer the questions: 

  • Is this book important to the field? If so why?
  • If the book is old, has it stood the test of time? Why is it still relevant? 
  • Who should read this book? What’s the target audience? 
  • Should this book be required reading for CS undergraduate students?
  • What are the most valuable lessons you learned from the book?

 

They also give a 1-5 star review of the book (in keeping with our Netflix culture). The goal of this project is to expose students to important literature in the field of computer science. This experience should help students grow as software engineers and computer scientists, while also encouraging them to develop the habit of reading for professional development.

To help students find such a book, I have compiled the following lists.

Software Engineering/Development

  • The Mythical Man-Month
  • Refactoring: Improving the Design of Existing Code, Fowler
  • Code Complete, McConnell (2nd ed)
  • The Pragmatic Programmer: From Journeyman to Master /li>
  • Design Patterns: Elements of Reusable Object-Oriented Software
  • Head First Design Patterns 
  • The Cathedral and the Bazaar
  • Peopleware: Productive Projects and Teams (Second Edition)
  • Agile Software Development: Principles, Patterns and Practices
  • Programming Pearls (2nd Edition) /li>
  • Joel on Software
  • The Inmates are Running the Asylum, Alan Cooper

 

Algorithms

  • The Art of Computer Programming, Volume 1: Fundamental Algorithms
  • Structure and Interpretation of Computer Programs (free ebook)
  • The Algorithm Design Manual, 2nd ed.
  • Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein 
  • Applied Cryptography: Protocols, Algorithms, and Source  Code in C, 2nd Edition
  • How Minds Work: A Cognitive Theory of Everything, Stan Franklin

 

Computational Theory

  • Computers and Intractability: A Guide to the Theory of NP-Completeness
  • Introduction to the Theory of Computation 
  • Feynman Lectures On Computation
  • P, NP, and NP-Completeness: The Basics of Computational Complexity

 

Programming Languages 

  • Types and Programming Languages
  • An Introduction to Functional Programming Through Lambda Calculus

 

Wildcard Books (new but interesting looking)

  • Clean Code
  • The Art of Agile Development
  • Hacking: The Art of Exploitation, 2nd Edition
  • Design for Hackers: Reverse Engineering Beauty

 

I compiled the list by researching several other "Top 100" lists online and by reading reviews on Amazon.

Hopefully this project will promote personal growth in these students that will result in better thinkers, designers, and engineers.