CS 378: Symbolic Programming

Spring 2021: TTh 2:00 - 3:30 online, Unique No. 52655.

Instructor: Gordon S. Novak Jr., GDC 3.824; Office Hours: M T W Th 4:00 - 5:00 PM via Zoom. novak at cs dot utexas dot edu

TA: Taehyoung Kim     ktae@utexas.edu Office Hours: Wed 1:00 - 2:30, Fri 1:00 - 2:30 via Zoom, and by appointment.

Important Links



Lectures with drawings

Lecture Notes:     These available in printed form from UT Document Solutions in GSB 3.136.
PDF     online by Contents     online by Index


Directory for Program Files     FTPDirectory for Program Files     /projects/cs378.novak/


clojuredocs.org     clojuredocs.org Quickref    

Lisp / Clojure Functions       Clojure Functions Cheatsheet (pdf)

Examples of Function Calls

Clojure Error Messages

Using Emacs with Clojure       Emacs Command Summary

Tracing in Clojure       Testing and Debugging

Clicker Questions with answers are a useful source of multiple-choice questions to study; some of them might appear on an exam.

Study Guide for Midterm Exam

Study Guide for Final Exam

Updates for Online Education

I hope that you and your family and friends are safe and healthy during these troubling times of coronavirus.

If you do not have access to the things you need (housing, food, computer, etc.) to continue your education, the University considers that to be an emergency. If you need resources, please contact Student Emergency Services, or studentemergency@austin.utexas.edu or Natural Sciences Student Emergency Funding. Special funds have been established to provide help to those who need it.

Students who need accommodations may request them from Services for Students with Disabilities.

If you become sick or have other problems, be sure to notify the instructor promptly; timely notification is required. Any problems with grading of assignments or exams must be raised within a week of when the grade is posted.

This syllabus is subject to change, and it may be updated during the semester. Be sure to check this page regularly.

Lectures will be online on Zoom via Canvas at the scheduled class time. Lectures will be recorded so that you can replay them for review or if you miss the online time. Be sure to login to Zoom using your eid@eid.utexas.edu to be sure that your attendance is recorded properly. The Attendance grade is derived from the attendance reports produced by Zoom. You should always attend the online class at the scheduled time if possible; if you are in a far-away time zone or must miss class for other reasons, email the instructor to get attendance credit.

We will have an interactive office hour meeting as shown above on Zoom. This meeting is optional, come-and-go as you wish.

Please be aware that during the start of online Zoom sessions, your image and anything in the background of your camera view may be recorded and could be visible to others. You should not share the online recordings with people who are not in the class, for copyright and privacy reasons.

Student microphones will be muted during lecture to reduce the background noise level. The Zoom chat room option will allow you to ask questions at any time. We will also have a Piazza page for the class.

Suggestions for improving the lecture and materials will be welcome. Our goal is to give you the same course that you would have gotten in an in-person class.

There are due dates shown for each assignment. UT rules prohibit any assignments from being due after the last class day. There is a deadline of May 10 for turning in all assignments. It is important for you to keep up with the assignments; if you get behind, the result will be that you will not be able to complete all of the assignments, or parts of them. Remember that a partially completed assignment gets a much better grade than no submission. Assignments must be turned in within 4 days of the stated due date unless you get prior permission.

The assignments will get more interesting for the second half of the semester; the key to making a good grade is to start your assignments early.

We will support you with office hours (both instructor and TA), Piazza, and email consultations when needed.

Optional Text: Daniel Higginbotham, Clojure for the Brave and True (free online).

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       Example Runs, PDF Photos of Austin Snakes
  7. Natural Language Interfaces     New NL Slides (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 projects must be your own individual work. Students may discuss concepts or help with specific problems in another student's code. However, sharing code, working together on program design or flowcharts, or reading someone else's code is not allowed. All code that is given in the class directory may be used as part of your programs.

Beware of Github! If you keep your code on Github, be sure to file-protect it; otherwise somebody may copy it and you may get into trouble. Do not even look at someone else's code on Github; those who do are likely to copy it and get caught.

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.

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 11, 2 PM on Canvas
Final Exam 25% Tuesday, May 18, 2-5 PM, on Canvas
Attendance 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

Sharing of Course Materials is Prohibited: No materials used in this class, including, but not limited to, lecture hand-outs, videos, assessments (quizzes, exams, papers, projects, homework assignments), in-class materials, review sheets, and additional problem sets, may be shared online or with anyone outside of the class unless you have my explicit, written permission. Unauthorized sharing of materials promotes cheating. It is a violation of the University’s Student Honor Code and an act of academic dishonesty. I am well aware of the sites used for sharing materials, and any materials found online that are associated with you, or any suspected unauthorized sharing of materials, will be reported to Student Conduct and Academic Integrity in the Office of the Dean of Students. These reports can result in sanctions, including failure in the course.

Gordon S. Novak Jr.