UC Berkeley Introduction to Symbolic Programming