This is the webpage for a class from the PAST that
has ALREADY ENDED. Current class information is available here
- 3/17/16: We have posted an update to problem set 4 in the files portion of Canvas. The only change is to Part 3 (page 8), which has been substantially rewritten to clarify the assignment. Be sure you're working off of this version. We have also posted an updated syllabus. Barring any typos, we think this is the final version for the semester. As mentioned in class, we've tried to ease the pain of assignments during the final stretch a bit.
- 2/12/16: Posted a new version of textAdventure. Be sure you're working off of textAdventure.v4.py. Also, deleted the video for textAdventure, which no longer applies.
- 2/12/16: Office Hours: On Monday, 2/15, from 10 - 11 AM, I'll once again hold my office hours using Zoom. See Canvas for the URL. On Wednesday, 2/17, my office hours are canceled.
- 2/11/16: We have posted three new videos to Canvas. We have also posted an updated version of the syllabus, which reflects some changes we have made to the assignments and topics going forward..
- 2/9/16: In case you missed it: you are allowed (but not required) to work on Mini Project 1 (the text adventure game) in pairs. If you work with another student, you must submit only one program and one readme file, and please make it clear in both your header and readme file the identity of the two students behind the code.
- 2/8/16: Extension on Problem Set 3: Now due Friday, 2/12, at 1:20 PM. We recognize that everyone has been working very hard and that this is more time-consuming than previous problem sets. If you haven't started, do so soon. If you need assistance, please reach out.
- 2/2/16: Posted videos explaining how to do the "HeaderMaker" assignment handed out in class today to Canvas.
- 2/2/16: For class on 2/9/16, in addition to competing your problem set and reading the chapters assigned in the syllabus, play one of the text adventure games available at http://www.web-adventures.org/ (We recommend Adventure or Zork).
- 2/2/16: Reminder: Our classroom has moved to McDonough 425 for the remainder of the semester. See you this afternoon!
- 1/28/16: Please see the Canvas Announcements for messages from Professor Frankle regarding graded problem set one and a modification to this week's reading..
- 1/28/16: Professor Ohm, once again, needs to cancel his office hours on Monday, 2/1. He promises not to make this a habit!
- 1/27/16: We have posted videos of the 1/26 class Zoom session online. Check the newest announcement on Canvas to view them.
- 1/26/2016: Professor Ohm can't come for office hours on Wednesday, 1/27, but he will log in to Zoom (same URL as today) from 10 to 11, in case anybody wants to drop in to "virtual" office hours. Sorry about the continued hassles!
- 1/26/2016: We will use Zoom to hold our class online today at the usual time: 1:20 - 3:20 PM. The URL and call-in information are posted to an announcement in Canvas. Please let us know if you can't join us.
- 1/25/2016: The law center just announced it will be closed on Tuesday, 1/26. Problem Set One is still due by 1:20 PM. We are exploring holding the class online and will let you know Tuesday morning, as soon as we decide. If we do proceed online, we'll try to capture the video, so those who cannot join the class can watch it afterwards.
- 1/24/2016: We hope you all weathered the storm without too much hassle! If you need help with problem set one (which continues to be due Tuesday at 1:20 PM, regardless of whether the building is open), feel free to email Professors Ohm or Frankle or Chris. We won't be holding set office hours on Monday. We can schedule a phone call or chat if need be. Also, feel free to ask questions you think might be of class-wide interest to the Discussion board in Canvas.
- 1/21/2016: This is the body of an email just sent to all students enrolled in the class:
tl;dr This is a long-ish email. The two most important things you need to know are:
(1) Our classroom has changed! For the rest of the semester, our class is moving to McDonough 425--a beautiful, brand new classroom that was literally built over the past month! and
(2) Remember that problem set one is posted to the Canvas page. Professor Frankle has updated it a few times over the past week, so if you downloaded it on Monday or Tuesday, you might want to make sure you have the latest version.
After this, we won't send you any email messages unless something urgent arises. All other class-wide communication starting today will be via Canvas announcements and website updates.
Where you can get help
If you need help on problem set #1, you have many choices:
1. Professor Ohm's office hours, as previously announced, are Mondays and Wednesdays from 10:00 - 11:00 AM. McDonough 480.
2. Chris Chamberlain's office hours will be on Thursdays from 1:00 - 3:00 PM. He will be located somewhere near / in Courtside (the lobby near the sports & fitness center in Hotung). .
3. Professor Frankle is still working out his regularly scheduled office hours. This Monday, he will hold office hours from 2:30 - 4:30 PM, in McDonough 444. He's happy to chat by phone or Skype before then if you so desire.
4. We have set up a discussion board on Canvas called "Problem Set One Discussion". Feel free to ask or answer questions of the entire class on the discussion board, but please remember to follow the Collaboration Policy.
5. We're also available to take your questions via email. We'd prefer you use our scheduled office hours, however, if you can.
Problem Set One
6. Professor Frankle has updated the problem set a few times since he posted it initially. Be sure you have the latest version.
7. In case you want extra practice, we have posted three additional exercises--with model answers--for week one to the files section of Canvas.
8. Remember the deadline: You must submit your answers via email to jonathanfrankle+PythonS16@gmail.com before the start of class on Tuesday.
9. Our classroom has changed! We will be meeting from now on in McDonough 425.
- 1/20/16: Going forward, all problem set material will be posted to the Canvas page. We will continue to post announcements here, but see the Canvas page for all problem set material.
- 1/7/16: Added a few more pages to the first assigned reading.
- 12/23/15: Posted class website and "About This Class" information.
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:
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.
- No Experienced Programmers Allowed!
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.
- Required Book
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 https://automatetheboringstuff.com/.
- Other Resources (optional)
You might also find some of the following resources useful:
- 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.
- 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.
- 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.
- First Assignment
For our first class, Tuesday, January 19, 2016, at 1:20 PM, you must complete all of the following tasks:
- 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).
- Follow the instructions from Chapter 0 to install Python 3 and IDLE on the laptop you will be bringing to class.
- 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).
- 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.
- About the Problems at the End of the Chapters
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.
- Python 3
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:
In Python 3, the "print" command requires parentheses around the thing you are trying to print. So if you see something like:
print "Hello, World!"
you should replace it with:
The integer division command works differently. If you want to know more about this, read this article.
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.
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.
Website and Canvas
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).
Other Class Materials