CS 378: Symbolic Programming

Spring 2019: TTh 2:00 - 3:30 in GDC 5.302, Unique No. 51135.

Instructor: Gordon S. Novak Jr., GDC 3.824; Office Hours: TTh 3:30 - 5:00 PM, or any time my door is open.

TA: Ankur Garg     ankgarg@cs.utexas.edu Office Hours: Monday 11-12 at TA Desk 1 and Thursday 10-12 at TA Desk 2 in GDC basement.

Optional Text: Daniel Higginbotham, Clojure for the Brave and True

iClicker: Each student is required to buy/rent an iClicker (any version of iClicker device; not iClicker GO app). This will be used for attendance and to reinforce and practice with the class material. Two iClicker points are given just for voting, and an additional point is given for a correct answer. Most iClicker questions and answers are online at Clicker Questions, and it is okay to review them in advance. The clicker scores will be converted to a grade by making the highest student score at least 108 and linearly scaling other scores; this gives some extra points to account for minor illness, forgotten or malfunctioning clicker, etc. Do not bring another student's clicker to class.

Grades on Canvas   Register your iClicker on Canvas.

Follow CS 378 Discussions on Piazza     Signup Link for Piazza

Lecture Notes: Available in printed form in GSB 3.136.
Online by Contents or Index or PDF.    

Symbolic Programming involves the manipulation of symbolic data such as programs, equations, rules, and natural language (human languages such as English). Symbolic programming is increasingly being used in real applications by large companies such as Bloomberg and Walmart.

Symbolic programming provides several advantages:

Students will write a number of interesting programs that will provide practice and expertise in symbolic programming.

Topics to be Covered:

Programming assignments   Turn in via Canvas

  1. Lists and Trees in Clojure
  2. Symbolic Algebra
  3. Physics and Code
  4. Patterns
  5. Program Synthesis by Deduction
  6. Expert Systems
  7. Natural Language Interfaces

All programming assignments must be your own individual work.

Program files are provided, in the FTP directory for Program Files, ftp://ftp.cs.utexas.edu/pub/novak/cs378/ or http://www.cs.utexas.edu/users/novak/cs378/ for use with the assignments. The files are described by Program File Descriptions. It is legal to use any of these files as part of your programs.

Lisp / Clojure Functions

Using Emacs with Clojure       Emacs Command Summary

Tracing in Clojure       Testing and Debugging

Study Guide for Midterm Exam

Examples of Function Calls

Study Guide for Final Exam


Grading Policies:

Grades are kept on Canvas. It is your responsibility to check your grades often to make sure that your assignments have been received and graded.

Course grades are assigned on the scale A = 93-100, A- = 90-93, B+ = 87-90, B = 83-87, B- = 80-83, etc. provided that the Final Exam grade is at least 65; if the Final Exam grade is below 65, a lower course grade may be assigned at the instructor's discretion. Grades are averaged using the following weights:
Midterm Exam 15% Thursday, March 14, in class
Final Exam 25% Friday, May 17, 2-5 PM
Clicker Participation 10%
Programming Assignments: 50%

Song: "God Wrote in Lisp", Lyrics by Bob Kanefsky, sung by Julia Ecklar.

Quotes from Alan Perlis


  1. Tech at Bloomberg: Mr. Varun Kohli, Software Engineer, Derivatives Pricing

  2. Simon Peyton Jones, Jean-Marc Eber, Julian Seward, Composing Contracts: an Adventure in Financial Engineering, ACM SIGPLAN Int. Conf. on Functional Programming (ICFP'00) pp. 280-292, 2000.

  3. PowerPoint slides for above

  4. How to write a financial contract, in The Fun of Programming, ed Gibbons and de Moor, Palgrave Macmillan 2003

  5. Is There a Smarter Path to Artificial Intelligence? Some Experts Hope So

  6. The Great A.I. Awakening

  7. Stickel, M., Waldinger, R., Lowry, M., Pressburger T., and Underwood, I., "Deductive Composition of Astronomical Software from Subroutine Libraries", in 12th Conference on Automated Deduction, Nancy, France, June 28-July 1, 1994. In Automated Deduction, A. Bundy, ed., Springer-Verlag Lecture Notes in Computer Science, Vol. 814. local copy PS (447 KB),   Fig. 1: Where is the shadow of Io on Jupiter?

  8. G.S. Novak, Conversion of units of measurement

  9. MapReduce Paper

  10. New York Times Article on Hadoop

  11. Hadoop

  12. Lecture slides on PageRank

  13. Simple MapReduce in Java

  14. Lisp Functions in Java

Gordon S. Novak Jr.