Table of Contents
Resources to Learn More
Reading Recommendations
I don't necessarily recommend that you buy the books from Amazon; I just want you to be able to read summaries and reviews. You may be able to get them through the library (either W&L's or your local library).
- Programming Pearls - how to approach solving problems
- The Art of Unix Programming - for a history of OS and Unix programming and knowledge of useful tools
- In the Plex: How Google Thinks, Works, and Shapes Our Lives - about Google, to have something to aspire to
- Gödel, Escher, Bach: An Eternal Golden Braid - “looks at the surprising points of contact between the music of Bach, the artwork of Escher, and the mathematics of Gödel. It also looks at the prospects for computers and artificial intelligence (AI) for mimicking human thought. For the general reader and the computer techie alike, this book still sets a standard for thinking about the future of computers and their relation to the way we think.”
- New Turing Omnibus - “66 concise articles on the major points of interest in computer science theory, technology and applications”
- The Cathedral & the Bazaar, the book on Safari - requires logging in with W&L account.
- The Signal and the Noise: Why So Many Predictions Fail-but Some Don't - blogger Nate Silver's analysis of predictions
- Python Cookbook, Second edition - requires logging in with W&L account; you can definitely get elsewhere on paper
- How To Survive a Robot Uprising: Tips on Defending Yourself Against the Coming Rebellion - besides a survival guide, talks about robot technology of the future
- Clean Code: A Handbook of Agile Software Craftsmanship - Student Recommendation: “the first text book I enjoyed reading and helped a lot for [job] interviews”
- The Pragmatic Programmer: From Journeyman to Master - an alumnus says, “It's a pretty natural extension from our software development class, and might be an awesome read if we had software dev II class.”
- Gabriella Coleman's Coding Freedom: The Ethics and Aesthetics of Hacking
- The Last Lecture, Randy Pausch
- Coders: The making of a new tribe and the remaking of the worlds, Clive Thompson, NYTimes review of the book (https://www.nytimes.com/2019/04/01/books/review/clive-thompson-coders.html)
- The Innovators: How a Group of Hackers, Geniuses, and Geeks Created the Digital Revolution, by Walter Isaacson, Dennis Boutsikaris, et al.
- Machines Who Think: A Personal Inquiry into the History and Prospects of Artificial Intelligence, Pamela McCorduck
- Weapons of Math Destruction, Cathy O'Neil
- Like War:L The Weaponization of Social Media, P. W. Singer, Emerson T. Brooking
- Mind F*ck: Inside Cambridge Analytica's Plot to Break the World, Christopher Wylie
* Mastery: The Keys to Success and Long-Term Fulfillment George Leonard
Essays, Articles, Blogs
-
- One recommended essay: Hackers and Painters
- Communications of the ACM - articles (and other media) on a variety of computer-science related topics
- Lambda the Ultimate Blog - this page has pointers for early studiers of programming languages (PL); may get a little technical
- 7 ways to be a better programmer in 2014 – seems valid past 2014
History
- Great Works in Computer Science – a course at UVA
Fiction
What many computer scientists have read…
Additional Resources
- Free Tech Books - database for a lot of free online books, text books, and lecture notes
Viewing or Listening Recommendations
- The Pirates of Silicon Valley - “it's great because it's like the movie The Social Network except older in that it is set in the emerging Microsoft era. Also, it's a movie, so it's fun”
Fun Alternatives for the Intro Student
- GeomLab – “introduce you to some of the most important ideas in computer programming in an interactive, visual way through a guided activity.” Starts out slow but moves quickly
- Alice - “Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing.”
- Scratch - “Scratch is a programming language that makes it easy to create your own interactive stories, animations, games, music, and art – and share your creations on the web.”
- Turtle Java - “graphics programming environment designed to provide an enjoyable introduction to programming in Java syntax, together with fundamental concepts of computer science such as compilation and machine code.”
Online Courses
From Alicia Bargar
- Udacity: A catalog of free online courses created by a Stanford professor interested in making excellent computer science education available to the masses. Each course is 7 weeks and consists of a combination of videos introducing a topic and coding practices to try it out. Also includes homework and an optional exam. Course topics range from general programming to web applications to algorithms, and change each semester. AI topics are particularly strong. Physics, discrete mathematics, and statistics topics recently introduced. Very highly recommended.
- Coursera: Universities' answer to Udacity. Provides wide range of courses in topics in computer science: theory, programming, AI, robotics, systems, and security, as well as a range of other subjects such as electrical engineering, scientific computing, biological sciences, etc. Participating universities include Stanford, Princeton, Georgia Tech, and University of Michigan. Courses tend to be about 6-7 weeks long but vary. Teaches with combination of videos, quizzes, and assignments. Highly recommended.
- Python Challenge: “The first programming riddle on the net.” In a similar format to the traditional web-based riddle sites: solve a riddle using clues on the given page to proceed to the next page). However, these riddles are designed to be solved using Python programs, and are excellent practice for applying topics like real expressions and pickling.
- Code School: A collection of mini courses. Covers mostly topics related to web development: focuses on design, web tools, and programming language courses for Ruby and Javascript. I believe courses are developed independently, so quality varies. Good for those who want an introduction to one of the topics listed. NOTE: not all courses are free. To access all, have to pay fee of $25/month.
- Code Academy: A collection of mini tasks that take you through the basics of Javascript, HTML, CSS, JQuery, and most recently Python. May be too simple for the advanced programmer, but good for learning basic syntax of the included languages and an introduction to web development. Free.