Quarantine Reading Suggestions
Currently more than a billion people are locked down to slow the spread of the COVID-19 virus. If you’re a programmer, then you can hopefully work from home and remain productive. If you can’t, here are some suggestions for books that you can read to keep your programming skills sharp. Even if you can work from home, you may find some of these books provide a much needed distraction from current events.
Improve Your Programming and Problem Solving Skillz
These books will help you improve your programming skills. Some, like the algorithms and database design books, cover topics that every programmer should study. Others, like the software engineering book, will be useful to programmers, although perhaps not as directly as the algorithms and database design books. Finally, a few books such as the three-dimensional programming book, cover more specialized topics that are not absolutely necessary for everyone. (Although I find them extremely fun and interesting!)
Note that the database design and software engineering books were written to be usable in a classroom. The times that I have taught in the classroom, I found humor an invaluable way to keep students awake and interested, so those books have a slightly more humorous feel. I wouldn’t say they’re as funny as a Steve Martin or John Oliver show, but I think they’re more amusing than most software books.
Essential Algorithms, Second Edition: A Practical Approach to Computer Algorithms Using Python and C#
Algorithms are the basis of any program. A good algorithm can mean the difference between finding a solution to a problem in minutes, days, or not at all. This book uses relatively straightforward English to explain a wide variety of algorithms that you can use under many different circumstances. Algorithms include classics such as sorting and searching algorithms, plus newer more esoteric algorithms such as algorithms to solve the skyline problem.
(While you may not need to solve the skyline problem in your everyday work, it is still quite interesting because one of its algorithms provides an excellent demonstration of a divide-and-conquer problem-solving approach.)
WPF 3d, Three-Dimensional Graphics with WPF and C#
This easy-to-read guide provides everything you need to know to get started writing striking 3D graphics programs with WPF and C#. The book’s three parts describe 3D basics, building many different shapes, and advanced topics. More than 100 example programs covering such topics as:
- The lights, cameras, materials, texture coordinates, and other details that you need to create a 3D scene
- Orthographic, perspective, and other projections that emphasize different aspects of a scene
- Special material treatments such as specular reflection, wireframes, and solid and translucent materials
- Examples of many shapes including flat polygons, boxes, Platonic solids, spheres, tori, cones, and more
- Advanced objects such as parametric surfaces, surfaces of transformation, fractal surfaces, and 2D and 3D text
- Higher-level scene management to let users select and move objects
- Advanced techniques such as loading models created in other applications and using skeletons
Essential Interview Puzzles Dissected, Solving and Understanding Interview Puzzles
Whether you’re applying for a programming job or a position on Wall Street, interview puzzles are the norm at many high-tech companies. This book explains how to solve more than 200 of the hardest and most common interview puzzles in use. Essential Interview Puzzles Dissected:
- Shows how to solve more than 200 challenging interview puzzles
- Reveals underlying techniques that let you solve problems that you haven’t seen before
- Tells how you can show the interviewer that you can think in an organized fashion
- Explains how to get “partial credit” when all else fails and you just can’t solve a puzzle
- Includes programming challenges to give you a deeper understanding of puzzles (obviously only if you’re a programmer)
Beginning Software Engineering
A complete introduction to building robust and reliable software
Beginning Software Engineering demystifies the software engineering methodologies and techniques that professional developers use to design and build robust, efficient, and consistently reliable software. Free of jargon and assuming no previous programming, development, or management experience, this accessible guide explains important concepts and techniques that can be applied to any programming language. Each chapter ends with exercises that let you test your understanding and help you elaborate on the chapter’s main concepts. Everything you need to understand waterfall, Sashimi, agile, RAD, Scrum, Kanban, Extreme Programming, and many other development models is inside!
Beginning Database Design Solutions
The database is the foundation on which all other development rests. Make your foundation solid!
This concise introduction teaches database design concepts, methods, and techniques of high-quality database design. You’ll explore creating an initial logical design and refining it into a superior database that meets users’ requirements. Plus, you’ll see how to implement the design using specific types of database platforms and build databases using SQL scripts. Each chapter begins with a list of topics that will be covered, closes with a summary that provides the key points described in the chapter, and includes a list of review questions and a series of helpful exercises.
If you would rather read something less technical, perhaps just to take your mind off of current affairs, consider the books described on my Favorite Books page. I haven’t kept that page up to date very well, particularly the Currently Reading section, partly because if I included every book that I like the page would be enormous. Still, you may be able to find something there that you like.