Urgent.News

What's breaking now, across thousands of outlets.

Tech

My favorite Computer Science books, and why

The Art of Computer Programming by Donald E. Knuth is a highly cited yet rarely read book. Its depth is immense, with countless valuable insights embedded within its pages and exercises. Dense and time-consuming, one should not be deterred by the presence of assembly code, as the true essence lies in understanding algorithms. Robert Sedgewick and Kevin Wayne’s Algorithms, 4th Edition, is their best work, offering beautiful figures, numerous examples, and crystal clear Java code.

The companion website provides additional resources, making this edition particularly important. The Practice of Programming by Brian W. Kernighan and Rob Pike is a must-read, even for its last three pages that collect essential programming rules. Kernighan and Pike emphasize that the choice of programming language is not as critical as one might believe.

Computer Systems: A Programmer’s Perspective by Randal E. Bryant and David R. O’Hallaron provides essential knowledge about hardware, systems, and compilers, likely making it the only book where a chapter is dedicated to linking. Purely Functional Data Structures by Chris Okasaki beautifully explains purely functional data structures, their benefits, implementations, and complexity analysis, especially concerning amortization and lazy evaluation.

Profiling various structures, the book features elegant SML code explained line by line. Programming Pearls by Jon Bentley remains relevant even after more than three decades, offering valuable advice and perfect examples. Chapters such as Writing Correct Programs, The Back of the Envelope, Sorting, and Heaps are particularly noteworthy.

Similarly, Henry S. Warren’s Hacker’s Delight provides an abundance of arithmetic hacks, some for fun but many genuinely useful. For instance, it explains what your compiler does when you divide by a constant. Algorithms on Strings, Trees, and Sequences by Dan Gusfield primarily focuses on text algorithms, with well-explained and proven algorithms.

A significant portion is dedicated to suffix trees, including an excellent explanation of Ukkonen’s algorithm, which can be challenging to comprehend and code. Lastly, The Elements of Computing Systems by Noam Nisan and Shimon Schocken is the best way to understand computing by building everything oneself, from a machine to an operating system.

Though undertaking the construction may not be feasible, reading the book in its entirety remains worthwhile.

Written by urgent.news from Lobsters's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at backtracking.github.io →

More in Tech

clicky: A clickwheel iPod emulator

  • clicky project aims to emulate iPod 4G and 5G models
  • Focus on preserving iPod Games, including Brick Breaker
  • Challenges include lack of comprehensive iPod documentation

22 tests passing, and my solver still told you to click a mine

I wrote a minesweeper probability solver. You hand it a board, it hands back the probability that each unknown square is a mine, so that when logic runs out and you have to guess, you at least guess…

  • 22 unit tests pass for minesweeper solver
  • Solver reports 6 squares as mines in reality 2
  • Test suite misses severe bug in solver

Building CUBELANDS for Steam: an early alpha generated from cubes

Building CUBELANDS for Steam: an early alpha generated from cubes I’m building CUBELANDS , an early-alpha third-person open-world action-adventure planned for Steam.

  • CUBELANDS is an early-alpha third-person open-world action-adventure game for Steam.
  • Procedural generation creates characters, terrain, settlements, and boss battles using cubes.

More from Sunday 23 August →