Data Lab Release Notes


  • Updated writeup and grade directory to match the default puzzle set. Thanks to Chen Su


  • Corrected a header comment in the satAdd puzzle. Thanks to Prof. Hugh Lauer, Justin Aquilante, and Nick Krichevsky, WPI.


  • Fixed a build bug in the BDD checker.


  • Added some new puzzles, fixed a typo in the comment for the rotateRight puzzle, and fixed a build bug in an earlier version. Thanks to Prof. Hugh Lauer, WPI, for identifying the build bug. Thanks to Prof. Bryan Dixon, Cal State Chico, for identifying the rotateRight typo.


  • Added the -std=gnu89 flag to the dlc Makefile so that gcc 5 will correctly compile dlc (addresses a constraint on inline functions introduced in gcc 5). Thanks to Prof. Branch Archer, West Texas A&M University.


  • Added a note to the README that bison and flex must be installed in order to rebuild dlc. Thanks to Prof. Michael Ross, Portland Community College.


  • Applied patch to the ANSI C grammar for dlc to accomodate stricter type rules in more recent versions of bison.
  • Eliminated unneccessary calls to bison and flex in the dlc Makefile. Thanks to Prof. Robert Marmorstein, Longwood University.


  • Fixed bug in grade/ autograding script.


  • Fixed comment in code for logicalShift to indicate that '!' is an allowed operator. Thanks to Prof. Aran Clauson of Western Washington University


  • Fixed bug in line 147, btest.c: incorrect initial value for NaN. Thanks to Prof. Cary Gray, Wheaton College


  • Added a clarifying note to the main README file reminding instructors that, because there are different versions of dynamic libraries, Linux binaries such as dlc are not necessarily portable across different Linux platforms. Thanks to Prof. Hugh Lauer, Worcester Polytechnic Institute
  • Cleaned up some compiler warnings in the isLessOrEqual.c and isPositive.c puzzle solutions


  • Modified the "start" rule in Makefile to touch the log.txt file before starting up the lab daemons, so that an empty scoreboard is created initially. Thanks to Prof. Godmar Back, Virginia Tech.


  • For fun, we've added an optional user-level HTTP-based "Beat the Prof" contest that replaces the old email-based version. The new contest is very simple to run, is completely self-contained, and does not require root password. The only requirement is that you have a user account on a Linux machine with an IP address.
  • Corrected a few minor typos in various README files.


This is a major update of the Data Lab:
  • Introduced floating-point puzzles.
  • Added many new integer puzzles (There are now 73 puzzles total).
  • Made significant improvements to btest. It now does millions of tests for each puzzle, checking wide swaths around Tmin, 0, denorm-normalized boundary, and inf. Also added support for floating-point puzzles.
  • Added support for floating-point puzzles to dlc.
  • Added a new autograder called that uses dlc and btest to check for correctness and conformance to the coding guidelines.
  • Top-level directory now conforms to the CS:APP convention of putting all source files in the ./src directory.
  • In, replaced "the cp {f1,f2,..,fn} target" notation, which some shells don't handle, with the more portable "cp f1 f2 ... fn target" form.
  • The lab writeup is longer included in the datalab-handout directory, to allow instructors greater flexibility in distributing and updating the writeup while the lab is being offered.


  • Fixed a minor bug that caused btest to test the tc2sm puzzle with an input of Tmin, which isn't defined in sign-magnitude.


  • More operator-efficient solution to the isPower2.c puzzle. Thanks to Al Davis, Univ of Utah.
  • The selections-all.c file now lists all 41 puzzles.


  • Now includes a prebuilt Linux/IA32 binary for the dlc compiler.
  • Fixes a bug (an uninitialized stack variable) that caused "dlc -Z" to crash on some systems.
  • Contains some new scripts for running an interactive "Beat the Prof" contest ,
    where students try to outperform the instructor's (intentionally non-optimal) solution.


  • Initial release.