aboutsummaryrefslogtreecommitdiff
path: root/datalab-handout/README
diff options
context:
space:
mode:
authorov-4 <hausemasterstream@gmail.com>2026-01-05 11:00:14 +0000
committerov-4 <hausemasterstream@gmail.com>2026-01-05 11:00:14 +0000
commit63c370f9b8d7c58c52ecd85a68e3062b41522ff6 (patch)
tree27f1657228f8e320b8f45610c5b68bb0592c4183 /datalab-handout/README
parent2211b73a6c1fbdf1dd974b46f0315d79ac5cae7e (diff)
Data lab initialization
Diffstat (limited to 'datalab-handout/README')
-rw-r--r--datalab-handout/README140
1 files changed, 140 insertions, 0 deletions
diff --git a/datalab-handout/README b/datalab-handout/README
new file mode 100644
index 0000000..e73d37f
--- /dev/null
+++ b/datalab-handout/README
@@ -0,0 +1,140 @@
+***********************
+The CS:APP Data Lab
+Directions to Students
+***********************
+
+Your goal is to modify your copy of bits.c so that it passes all the
+tests in btest without violating any of the coding guidelines.
+
+
+*********
+0. Files:
+*********
+
+Makefile - Makes btest, fshow, and ishow
+README - This file
+bits.c - The file you will be modifying and handing in
+bits.h - Header file
+btest.c - The main btest program
+ btest.h - Used to build btest
+ decl.c - Used to build btest
+ tests.c - Used to build btest
+ tests-header.c- Used to build btest
+dlc* - Rule checking compiler binary (data lab compiler)
+driver.pl* - Driver program that uses btest and dlc to autograde bits.c
+Driverhdrs.pm - Header file for optional "Beat the Prof" contest
+fshow.c - Utility for examining floating-point representations
+ishow.c - Utility for examining integer representations
+
+***********************************************************
+1. Modifying bits.c and checking it for compliance with dlc
+***********************************************************
+
+IMPORTANT: Carefully read the instructions in the bits.c file before
+you start. These give the coding rules that you will need to follow if
+you want full credit.
+
+Use the dlc compiler (./dlc) to automatically check your version of
+bits.c for compliance with the coding guidelines:
+
+ unix> ./dlc bits.c
+
+dlc returns silently if there are no problems with your code.
+Otherwise it prints messages that flag any problems. Running dlc with
+the -e switch:
+
+ unix> ./dlc -e bits.c
+
+causes dlc to print counts of the number of operators used by each function.
+
+Once you have a legal solution, you can test it for correctness using
+the ./btest program.
+
+*********************
+2. Testing with btest
+*********************
+
+The Makefile in this directory compiles your version of bits.c with
+additional code to create a program (or test harness) named btest.
+
+To compile and run the btest program, type:
+
+ unix> make btest
+ unix> ./btest [optional cmd line args]
+
+You will need to recompile btest each time you change your bits.c
+program. When moving from one platform to another, you will want to
+get rid of the old version of btest and generate a new one. Use the
+commands:
+
+ unix> make clean
+ unix> make btest
+
+Btest tests your code for correctness by running millions of test
+cases on each function. It tests wide swaths around well known corner
+cases such as Tmin and zero for integer puzzles, and zero, inf, and
+the boundary between denormalized and normalized numbers for floating
+point puzzles. When btest detects an error in one of your functions,
+it prints out the test that failed, the incorrect result, and the
+expected result, and then terminates the testing for that function.
+
+Here are the command line options for btest:
+
+ unix> ./btest -h
+ Usage: ./btest [-hg] [-r <n>] [-f <name> [-1|-2|-3 <val>]*] [-T <time limit>]
+ -1 <val> Specify first function argument
+ -2 <val> Specify second function argument
+ -3 <val> Specify third function argument
+ -f <name> Test only the named function
+ -g Format output for autograding with no error messages
+ -h Print this message
+ -r <n> Give uniform weight of n for all problems
+ -T <lim> Set timeout limit to lim
+
+Examples:
+
+ Test all functions for correctness and print out error messages:
+ unix> ./btest
+
+ Test all functions in a compact form with no error messages:
+ unix> ./btest -g
+
+ Test function foo for correctness:
+ unix> ./btest -f foo
+
+ Test function foo for correctness with specific arguments:
+ unix> ./btest -f foo -1 27 -2 0xf
+
+Btest does not check your code for compliance with the coding
+guidelines. Use dlc to do that.
+
+*******************
+3. Helper Programs
+*******************
+
+We have included the ishow and fshow programs to help you decipher
+integer and floating point representations respectively. Each takes a
+single decimal or hex number as an argument. To build them type:
+
+ unix> make
+
+Example usages:
+
+ unix> ./ishow 0x27
+ Hex = 0x00000027, Signed = 39, Unsigned = 39
+
+ unix> ./ishow 27
+ Hex = 0x0000001b, Signed = 27, Unsigned = 27
+
+ unix> ./fshow 0x15213243
+ Floating point value 3.255334057e-26
+ Bit Representation 0x15213243, sign = 0, exponent = 0x2a, fraction = 0x213243
+ Normalized. +1.2593463659 X 2^(-85)
+
+ linux> ./fshow 15213243
+ Floating point value 2.131829405e-38
+ Bit Representation 0x00e822bb, sign = 0, exponent = 0x01, fraction = 0x6822bb
+ Normalized. +1.8135598898 X 2^(-126)
+
+
+