This is the webpage for a class from the PAST that has ALREADY ENDED. Current class information is available here.



Class Syllabus (subject to change): Version 0.57 (updated 3/17) (pdf)

About This Class

To students enrolled in Computer Programming for Lawyers in Spring 2016:
  1. Welcome!
  2. Welcome to this new class, an experiment in technological education in law school. We're glad you're joining us, and we look forward to a rich semester together.

  3. No Experienced Programmers Allowed!
  4. This class is intended for beginners only. If you have taken any classes in college or graduate school that featured computer programming, or if you have mastered any computer programming language, you are not permitted to take this class. If you are unsure whether you fall within the excluded categories, get in touch with me as soon as you can.

    As you may know, more than 120 students signed up for this class, meaning more than one hundred were left disappointed. Please free up your seat for one of them if this class isn't for you for any reason.

  5. Required Book
  6. The class has one required book: Al Sweigart, Automate the Boring Stuff with Python, No Starch Press 2015, ISBN-13: 978-1593275990 (Amazon). Given the late-added date of this class, the book probably won't be available in the law school bookstore, but you should be able to find the book elsewhere. Also, the author of the book has made the full text available for free online at

  7. Other Resources (optional)
  8. You might also find some of the following resources useful:

    1. Another free book: Charles Severance, Python for Informatics: Exploring Information. This book is extremely straightforward and moves at a slower pace than the required book, so beginners might especially find it useful. Also, the author helpfully provides free video lectures for a class based on the book that you may want to look at to supplement your reading.
    2. You will be referring often to the official documentation for Python 3. In particular, you will spend a lot of time with the Library Reference and the Language Reference.
    3. When in doubt, ask Google. And what Google will tell you most often is that others have already asked and answered your question on Stack Exchange.

  9. First Assignment
  10. For our first class, Tuesday, January 19, 2016, at 1:20 PM, you must complete all of the following tasks:

    1. Read Chapters 0 ("Introduction") and 1 ("Python Basics") from the book. (1/7/16 Amendment: Also read the first part of Chapter 2, up through but not including "Elements of Flow Control" on page 37).
    2. Follow the instructions from Chapter 0 to install Python 3 and IDLE on the laptop you will be bringing to class.
    3. Verify that you can replicate all of the examples (but not the problems; see the next section) in the reading. (You can skip the example on page 3, the one invoking SecretPasswordFile.txt, which isn't really meant to be run).
    4. If you can't get Python 3 or IDLE to install correctly, or if you can't replicate any one of the examples, you must email me before our first class so we can help you debug your configuration.

  11. About the Problems at the End of the Chapters
  12. Generally, you are not required to answer the problems you will find at the end of chapters, but you are encouraged to try to do so. If you are truly a beginner, you are strongly encouraged to try to answer the problems.

  13. Python 3
  14. In this class, we will be using Python Version 3, the newest version of the language. Unfortunately, a lot of the documentation on the web involves Python 2. There are many subtle and important differences between the two languages, and the two that you will run into first and most often are:

  15. Collaboration Policy
  16. Part of the process of learning to program a computer is getting stuck and working to get unstuck. Part of getting unstuck is talking to your classmates and other people, but part of it is rolling up your sleeves and working the problem alone. For this reason, although we encourage many forms of collaboration, we are implementing a fairly strict, bright-line collaboration policy for this class. Any violation of this policy will be considered a violation of the school's Student Disciplinary Code.

    Rule 1: For problem sets and graded assignments, you may not view the code of anybody else who is taking (or in future years, has taken) the class. The only exceptions are for assignments that have been explicitly designated to be completed in groups or pairs, in which case you may view the code of your assigned groupmates or partner.

    Rule 2: For problem sets and graded assignments, you may not show your code to anybody except the course staff (instructors and TAs, if any).

    Rule 3: You may discuss general concerns or concepts with your classmates, but please keep this at a general level. For example, you are allowed to discuss questions such as, "what does this error message mean?" or "what is a tuple?".

    Rule 4: You may discuss answers to problems from the book or found elsewhere that have not been assigned, and in so doing, you may share or view code with others. Do not use this as an end-around this policy.

    Rule 5: You must acknowledge specifically any assistance or collaboration you use in the readme.txt file accompanying your code.

  17. My Co-Teacher
  18. We are lucky to have Jonthan Frankle, the staff technologist for the Center on Privacy and Technology, as a co-instructor for this class. You may find Jonathan in the Center's office in McDonough 444.

  19. Website and Canvas
  20. All class announcements will be posted to both the class website and the class Canvas site. You are responsible for checking either one of these on a regular basis during the break and throughout the semester.

    If you have any questions for Professor Ohm and Jonathan, just email us! (ohm@ and jonathan.frankle@ respectively).


Problem Sets

Other Class Materials

Other Links