CS 111: Law

Version: Wednesday, September 4, 2019

Program Design I, Legal and Public Policy Themes Section

Fall 2019, 3 Credit Hours,
CRN: 40304

Lecture: Tue-Thu 2:00-3:15, Lecture Center B1
Labs: Wednesdays, one hour in the morning, all or almost all located in SEL 2058 or 2249E (some time slots have two distinct labs at the same time). Enroll in one lab, and it must be one of this section's labs, not one of the labs for the other different lecture section of CS 111.

Instructors and TA

Office Hours

Prof. Robert Sloan,
1112 SEO, Tue 3:30-5:00 & in addition by appt. at other

Prof. Richard Warner,
845 Chicago Kent Law School, Tue 3:45-4:15 & by appt.

TA 1: Zixuan Ke,
Thu 9-11, Fri 3-5

TA 2: Xu Lin,
Wed 4-6, Fri 10-12

TA 3: Mobashir Sadat,
Tue 11-2, Thu 11-12

TA 4: Krishna Garg,
Thursday 12-1pm, Friday 2-3pm

Undergraduate TAs: Theodore Planinsek,, Aditya Vandanapu, Kaveesha Weerasiri
CS Lounge, 2nd floor of SEL, Theodore: Friday 12pm - 2pm; Adi, Wednesday 2 pm - 4 pm and Thursday 4 pm - 6 pm., Kaveesha Thurs., 7:00-9:00 pm., Friday. 5 - 7 pm All: additional hours by appt.

(Subject to change. Grad TA office hour locations TBD.)

Week 1: Office hours only on Wednesday and Thursday. Regular office hours start Tuesday, Week 2. (Monday is Labor Day.)

Electronic Communication: CS 111 Law Web Page, Blackboard, Piazza

Most materials, such as lecture slides, and the updated syllabus and schedule, will be posted to the world-readable webpage for the course. Grades and some assignments (exception: those done wholly in Zybooks/Zylabs), and video captures of the lectures are available on Blackboard. There is also a forum for course help at Piazza. You are responsible for checking Blackboard regularly and making sure you are doing all the work. You are responsible for knowing about all of the material distributed for this class, whether it is mentioned in the syllabus, posted on the class website, posted on Blackboard, posted on Piazza, or announced during lecture.

Course Description, Goals, and Objectives

CS111 Law is an innovative section of Introductory Computer Science Program Design I (CS111) offered by the UIC Computer Science Department in collaboration with Professor Richard Warner of Chicago-Kent College of Law. The class is for students who have no (or very little) previous programming experience.

This course will take its examples, the things that we write programs about, from law and public policy issues, ranging from encryption to predictive policing. The course will be team taught by a Computer Science professor and a legal scholar, and will include some introductory law and public policy content. The programming language will be Python.

In this class you will learn to create and use programs in the Python language to analyze and illustrate various issues arising from law and public policy, with a particular focus on security and privacy. You will learn a little bit about "how to think like a lawyer," and a lot about "how to think like a computer scientist."

More formally, the learning outcomes are that by the end of this course you will:

  • Be able to discuss the importance of algorithms in the problem-solving process
  • Be able to use Python to implement, test, and debug algorithms for solving simple problems
  • Have a basic understanding of how the Web works and how to interact with it as a Python programmer
  • Be able to understand and analyze legal issues in privacy, security, and the Web
  • Have a basic understanding of computer ethics and public policy issues
  • Appreciate what computer scientists do and the key concerns of computer scientists


Required Texts (online)

  • CS 111 Law: Program Design I (Programming in Python 3 with Zylabs) from Zybooks; you will need to pay for a semester’s subscription. This is the main text. Make sure that you do not buy the one that says "Prof. Dave Hayes." That is for the other section of CS 111, which will cover different material.


  1. Sign in or create an account at
  2. Enter zyBook code: UICCS111Fall2019
  3. Subscribe

A subscription is $58. Subscriptions will last until Dec 28, 2019.

You will probably find it helpful to read “How to use zyBooks” located in your zyBooks library once your account is created.

(Highly) Optional Texts

If you like traditional books you could try either of:

  • Lubanovic, Introducing Python: Modern Computing in Simple Packages
    • UIC has four electronic copies available through Safari; you should be able to get to a copy just by doing a regular search for the book in the UIC Library catalog; this direct link may also work
  • Zelle, Python Programming: An Introduction to Computer Science (3rd
    edition or later)


Subject to change at any time for any reason


Lab quizzes, lowest two dropped

Completion of ZyBooks readings and associated particiapation activities on time

Lecture participation (from clicker questions), attendance required

Completion of ZyBooks assigned challenge activities, lowest 1 dropped

Lab programming assignments, lowest 2 dropped

Programming projects

Two midterms

Final Exam


We will drop the three lowest grades for both lecture participation and Zybooks participation. The Zybooks participation grade is for completing participationactivities by 1:30 pm on the day of theclass that they are assigned for.

Most weeks we will assign Zybooks challenge actitives after Thursday's class, to be finished by the end of the weekend (11:59 pm Sunday). We'll drop the lowest score here.

Some lab assignments will be submitted via Zylabs, but those will count as labs.

In addition, you must pass both the programming part of the course (lab programming assignments, ZyBooks challenge problems, and programming projects) and the exam part of the course (midterms plus final) in order to receive a passing grade.


Attendance and Participation Policy

You will be expected to attend all lectures, having completed the assigned reading and ready to discuss them with your classmates. Your lecture participation grade will come primarily or exclusively from answering clicker questions (not graded for correctness). We will excuse absences from three classes.

Lab quizzes will be given almost every week. You must be present at the lab to get credit for the quiz. We will drop your two lowest lab quiz scores.

Policy for Missed or Late Work

All programming assignments (lab and projects) are to be turned in electronically via Blackboard. Lab assignments will generally be due at 11:30 pm Thursday; programming projects will come with a deadline.

In general, no late lab or project assignments will be allowed for this course. However, you have three "late day" passes that you can use on the programming assignments, so you can turn in three programming assignments 1 day late without penalty, or a single assignment 3 days late, etc. Once you have used your late days, late assignments will not be accepted. If you wish to use late days for a project assignment, you must fill out the form on Blackboard before the time it is due.

Late labs are not accepted.

Student Courtesy Policy: No laptops or phones in class

If you absolutely cannot take notes without a laptop, please come talk to Prof. Sloan. Otherwise, no laptop use in class. It is distracting to others, and it keeps you from being fully engaged. Likewise, no phone use in class, and of course silence your phone before class.

Academic Integrity Policy

As an academic community, UIC is committed to providing an environment in which research, learning, and scholarship can flourish and in which all endeavors are guided by academic and professional integrity. All members of the campus community–students, staff, faculty, and administrators–share the responsibility of insuring that these standards are upheld so that such an environment exists. Instances of academic misconduct by students will be handled pursuant to the Student Disciplinary Policy.

Consulting with your classmates on assignments is encouraged, except where noted. However, submissions are individual, and copying code from your classmates is considered plagiarism. Copied code on one lab will result in a 0 for the lab and being reported to the Dean of students; copied code on major programming projects or on multiple labs may result in very severe penalties.

To avoid suspicion of plagiarism, you must specify your sources together with all submitted materials. List classmates you discussed your assignment with and webpages from which you got inspiration or copied (short) code snippets. All students are expected to understand and be able to explain their submitted materials. For example, give the question "how did you do X?", a great response would be "I used function Y, with W as the second argument. I tried Z first, but it doesn't work''. An inappropriate response would be "here is my code, look for yourself."

Plagiarism and cheating, as in copying the work of others, paying others to do your work, etc., are obviously prohibited, is grounds for possibly failing the course or even expulsion from UIC, and will be reported. We will be running an automated plagiarism detection tool on your hand-ins.

Students are advised that it is a violation to copy, or allow another to copy, all or part of an exam or program.

Student Disabilities

UIC is committed to full inclusion and participation of people with disabilities in all aspects of university life. Students who face or anticipate disability-related barriers while at UIC should connect with the Disability Resource Center (DRC) at,, or at (312) 413-2183 to create a plan for reasonable accommodations. In order to receive accommodations, students must disclose disability to the DRC, complete an interactive registration process with the DRC, and provide their course instructor with a Letter of Accommodation (LOA). Course instructors in receipt of an LOA will work with the student and the DRC to implement approved accommodations.

Incomplete Grade Policy

The UIC Undergraduate catalog states that in addition to needing excellent justification for an incomplete grade, a student must also have been "making satisfactory progress in the course".

Therefore, no matter how good your excuse, we will not grant you an incomplete grade if you have less than a C average at the time you ask for an incomplete.



Tuesday, Aug. 27
First lecture (also: National Bow Tie Day)

Wednesday, Aug. 28
First Lab meetings; Register your clicker and do assigned reading before 2nd meeting of class on Thursday (also: National Bow Tie Day)

Friday, Sept. 6
Last day to complete late registration; last day to add a course(s) or make section changes; last day to drop individual courses via Student Self-Service without receiving W (Withdrawn) grade on academic record.

Tuesday, Sept. 24
First midterm exam

Friday, Nov. 8
Last day for undergraduate students to use optional late drop in college office and receive grade of W on academic record.

Thursday, Nov. 8
Second midterm (may be moved a little later)

Friday, December 7
Instruction ends

Wednesday, December 11
Final Exam, 3:30-5:30

READING (and buying) ASSIGNMENT DUE 1:30 PM (30 minutes before class), Thursday, August 29

Zybooks CS 111: Program Design I, 1.1-1.4, 1.6-1.9. Do all participation activities. (Challenge activities will be assigned as more traditionalo "homework" after class.). Suggestion: Complete the 1.1–1.4 part before Wednesday morning's lab. It will help.

How to Think Like a Computer Scientist: Interactive Edition, from General Introduction, 1.1-1.2, 1.5, 1.11.

Buy iClicker from bookstore (if you don't already have one), register it, and bring to class on Thursday.

Lab Section Staffing, Subject to Change

SEL 2249E
SEL 2058

8 am
Krishna Garg, Aditya Vandanapu
Mobashir Sadat, Theodore Planinsek

9 am
Xu Lin, Theodore Planinsek
Mobashir Sadat

10 am
Xu Lin, Theodore Planinsek
Zixuan Ke, Kaveesha Weerasiri

11 am
No lab
Zixuan Ke, Aditya Vandanapu