diff --git a/info/exercises/Makefile b/info/exercises/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..47f52641ac6fe074292f38a574019220aa4e2a2f
--- /dev/null
+++ b/info/exercises/Makefile
@@ -0,0 +1,26 @@
+.PHONY = all clean
+
+OUT_DIR ?= $(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
+
+DIRS := $(wildcard src/ex-??)
+
+EXPDFS := $(patsubst src/ex-%,ex-%.pdf,$(DIRS))
+SOLPDFS := $(patsubst src/ex-%,ex-%-sol.pdf,$(DIRS))
+
+all: $(EXPDFS) $(SOLPDFS)
+
+ex-%.pdf: src/ex-%/main.tex
+	cd src/ex-$* && \
+	lualatex -jobname=ex-$* "\def\ANSWERS{0}\input{main.tex}" && \
+	cp ex-$*.pdf $(OUT_DIR)/ex-$*.pdf
+
+ex-%-sol.pdf: src/ex-%/main.tex
+	cd src/ex-$* && \
+	lualatex -jobname=ex-$*-sol "\def\ANSWERS{1}\input{main.tex}" && \
+	cp ex-$*-sol.pdf $(OUT_DIR)/ex-$*-sol.pdf 
+
+clean:
+	rm -f $(EXPDFS) $(SOLPDFS)
+	for d in $(DIRS); do \
+		cd $$d && rm -f *.aux *.log *.out main.pdf; \
+	done
diff --git a/info/exercises/ex-01-sol.pdf b/info/exercises/ex-01-sol.pdf
index e8af4edbf2ab6a022adf26b2c02cb2f1f38a4339..e272c57ea28219fcdf5bd2b32e2dcde0057d408f 100644
Binary files a/info/exercises/ex-01-sol.pdf and b/info/exercises/ex-01-sol.pdf differ
diff --git a/info/exercises/ex-01.pdf b/info/exercises/ex-01.pdf
index 8b9aac3c279a97f910aaaeaaf50259c4592cb3d7..66648029c286b7711553bb60c056a1192a59fa97 100644
Binary files a/info/exercises/ex-01.pdf and b/info/exercises/ex-01.pdf differ
diff --git a/info/exercises/src/ex-01/main.tex b/info/exercises/src/ex-01/main.tex
index cf01061a8e13b4bbb443c8b377e0645efa6161f3..694172abf36687e281a62e616f07144f507819b7 100644
--- a/info/exercises/src/ex-01/main.tex
+++ b/info/exercises/src/ex-01/main.tex
@@ -2,7 +2,9 @@
 
 \input{../macro}
 
-% \printanswers
+\if\ANSWERS1
+  \printanswers
+\fi
 
 \title{CS 320 \\ Computer Language Processing\\Exercises: Weeks 1 and 2}
 \author{}