About Me

My name is Adam Blank, and I am currently transitioning from the Computer Science Department at Carnegie Mellon University to somewhere else at the end of this semester.

I am interested in the teaching and practice of Computer Science. My teaching drives everything that I do, and I love to try new techniques to help students learn in my courses. My research involves using technology, machine learning, human computation, and collaboration to improve the way that we teach computer scientists at the collegiate level.

In Fall 2013, I developed a new course at CMU (15-151). 15-151 uses several interesting pedagogical techniques (peer assessment, group work in lecture, problem-based learning) to teach discrete mathematics to computer science freshmen. I taught 15-151 in Fall 2013 and Fall 2014.

I have also been working on other relevant projects such as a compiler for mathematical notation, and how to increase student learning from using peer grading.

As of February 2014, here's my teaching statement, research statement, and CV.

I can be reached via e-mail at .

Documents

If you're visiting this page, you might be interested in one or several of the documents I've written.

LaTeX Tutorial. Many of the courses I've worked on have required that students submit their solutions using LaTeX; so, I wrote a short tutorial which also acts as a LaTeX reference.

Advice for new TAs. Back when I was TAing, I found that many first-time TAs had no idea what to expect. I've been told this (unfinished) document has helped some people. It offers advice for new TAs who want an idea of what pitfalls to avoid.

How to ask for help. I've found a really common issue for freshmen is that they get stuck for the very first time, and they aren't sure how to get help. This document outlines ways in which students can turn "getting stuck on homework" into a positive experience.

Research

This section is incomplete, because I am busy trying to write my Master's Thesis at the moment. I will fill it in over the next few months.

A compiler for introductory discrete mathematics.

Improving submission, annotation, review, and feedback of proofs.

Using abstract interpretation to help students learn.

Peer grading of proofs.

Studying the effects and implementation of formative assessment.

Modifying production compilers to help students learn.

Lectures

Below is a sampling of some lectures I've given in the past. In many of the classes I have taught, the lecture slides have served as course notes, and I often use "pauses", in which partial slides appear during the lecture. The versions below have all the pauses removed for easier offline reading. I have many more lectures on similar topics, and they are available by request. If you read any of these, and find them useful, please send me email! I'd love to hear from you!

The Language of Mathematics. This is a (very early) lecture from 15-151 in which we discuss logical notation, various logical connectives, and quantifiers.

Sets. This lecture follows "The Language of Mathematics" in 15-151. It discusses sets, set operations, and set equality proofs.

Functions. This is another 15-151 lecture which motivates and discusses various important function properties. For fun: 𝔼

Asymptotic Analysis. This is, yet again, another 15-151 lecture that motivates asymptotic notation, gives examples of the "tree method", and derives the merge sort recurrence.

Finite State Machines. This is a 15-251 (guest) lecture that discusses Deterministic Finite Automata (DFAs). It uses turing machines and regular expressions as motivation.

LSB Steganography. This is a lecture to an introductory CS class that introduces binary representation, image representation, very basic steganography, and the PPM file format. It includes a PDF of the lecture, a ZIP of stubs in Java, and some sample images in PPM to decode.

Presentations

Here are some presentations I've given to various audiences.

Setty: A Mathematical Programming Language. This is a short presentation which describes the language Setty that I designed, why I designed it, my research goals for it, and runs through some sample exercises one might present to students.

Teaching Reasoning and Proofs. This is a seminar I have given several times to an audience of teaching assistants for a variety of theory and proof-based courses. Much of the content (and answers to the questions) are missing from the presentation, because I said it out loud, but I'm happy to answer any questions via e-mail.



Courses

Fall 2013 (CMU)
15-151: Mathematical Foundations of Computer Science
(Instructor, Course Designer)
Fall 2012 (CMU)
15-151: Mathematical Foundations of Computer Science
(Instructor, Course Designer)
Spring 2012 (CMU)
15-251: Great Theoretical Ideas in Computer Science
(Head Teaching Assistant)
15-451: Algorithm Design and Analysis
(Teaching Assistant)
Fall 2011 (CMU)
15-131: Great Practical Ideas for Computer Scientists
(Instructor, Course Designer)
21-127: Concepts of Mathematics
(Teaching Assistant)
Spring 2011 (CMU)
15-251: Great Theoretical Ideas in Computer Science
(Teaching Assistant)
Fall 2010 (CMU)
15-251: Great Theoretical Ideas in Computer Science
(Teaching Assistant)
Summer 2010 (CMU)
15-211: Fundamental Data Structures and Algorithms
(Teaching Assistant)
Spring 2010 (CMU)
15-251: Great Theoretical Ideas in Computer Science
(Teaching Assistant)
Fall 2009 (CMU)
15-211: Fundamental Data Structures and Algorithms
(Teaching Assistant)