The Intermediate Course, Part 1: Goals and Administrative Details

In the Spring 2018 semester, we launched a new innovation: a second course in intermediate computer programming for lawyers. Having just finished teaching this course for the first time, I’m going to write (at least) two blog posts about it. In this first post, I’m going to go over the administrative nitty gritty, partly to make it available to prospective students in future years who want to learn more about the course. In the second post (to come), I’ll say more about the theory and structure of the course and reflect how the semester went.

The students who enrolled in this course also served as teaching assistants for the introductory course. This helped us deal with the unusual administrative burden of the course by providing a vehicle for training, organizing, and crediting TAs for their hard work. In prior years, we had paid TAs an hourly wage, like research assistants. Thanks to the course, we were able to enroll nine intermediate students, more than we could have afforded to pay, which had the dual benefit of reducing the TA-student ratio while also easing the burdens place on each TA.

The second purpose of the intermediate course is to give the students a richer and deeper experience in computer programming generally and in the intersection of computer programming and legal practice specifically. This term we advanced this goal in at least three ways: First, we spent an hour-and-a-half each week in a seminar-style discussion, in which we dove deeply into intermediate-level topics. Second, each student was required to complete a significant independent research project–in other words, they were required to write sophisticated computer programs relevant to legal practice, scholarship, or education.

Third, intermediate students learned what every professor already knows–the best way to master a topic is to teach it. Each week, each TA would co-teach a one-hour lab, following detailed scripts I wrote for them, hold office hours to help intro students with problem sets, and “grade” intro problem sets, providing detailed comments. I put the word “grade” in quotes, because we decided that only I would translate the scores on the problem sets into a grade, to avoid the prospect of law students grading one another.


I’ll say more about whether we accomplished these goals in the second post. But I want this post to serve as the recruitment tool/FAQ for prospective TAs in future years. Here is what prospective intermediate students need to know:

  1. The time commitment for this course is heavy. Each week, throughout the semester, each student needs to do all of the following:

    • Attend two hours of class (and read before class).
    • Lead one hour of lab (perhaps with a partner, if enrollment permits it).
    • Hold one hour of office hours.
    • Grade.
    • Keep up with what the introductory students are learning.
  2. Because the intro students rely on the TAs, the workload for this class is consistent throughout the semester. You can’t really take a week or two off (although you can skip some of your responsibilities with justification and advance notice).

  3. This course is offered only for a grade; pass/fail is not an option. I do have dispensation from the law school not to abide by the curve, given the nature of the course. Half of the grade is based on the performance of TA duties, and half of the grade is based on the final project.

  4. Because we need a stable enrollment before the semester begins, once you add this course to your schedule, the deadline for dropping it is November 1st, and you must notify Professor Ohm before dropping the course. After November 1st, a student may drop this class only with permission from both Professor Ohm and the Associate Dean for Academic Affairs. Permission will be granted only where remaining enrolled in the class would cause significant hardship to the student.

  5. You can add this course only with Professor permission. Email Professor Ohm if you would like to add the course or if you have questions about it.

  6. The intermediate course meets on Wednesdays from 11:10 AM - 1:10 PM. In addition, you need space on your schedule to lead one lab on Thursdays from the following list:

    • 8:50 - 9:50 AM
    • 10:00 - 11:00 AM
    • 12:10 - 1:10 PM (two labs at this time)
    • 7:55 - 8:55 PM

Here are a few more FAQs about the course:

Q: How much prior programming experience must I have to do well in this class?

A: Not as much as you might think. Intermediate is a bit of misnomer. Being an intermediate-level programmer is the goal for where you’ll be at the end of the course, not the prerequisite for getting into the course.

If you’ve had a single programming class in college (or maybe high school), you know enough to do well in this course. Similarly, you can take this class if you’re a self-taught programmer with at least a moderate level of prior programming experience. No technical degree or professional coding experience is necessary.

Most students who have completed the introductory course will probably be ready to take this course. However, if you struggled a great deal with the introductory problem sets, you might not be ready for this course. Talk to Professor Ohm if you are unsure about whether this course is right for you.

Of course, the less you know coming into the course, the more you’ll need to work to stay ahead of your students.

Q: What if I don’t know Python?

A: That’s not a problem. The first time we taught the course, only half of the students knew Python at the start of the semester. Trust us, you’ll know Python really well by the end of the term.

Q: Why do lawyers need to code?

A: We answer this elsewhere on this blog. This post is a good place to start.


More to come in the second post.