Class Notebooks

  1. Strings and Loops [ipynb] [html]
  2. Plotting and Hashing [ipynb] [html]
  3. Hashing [ipynb] [html]
  4. Games with Turtles [ipynb] [html]
  5. Multidimensional Lists [ipynb] [html]
  6. Image Processing [ipynb] [html]
  7. Web APIs [ipynb] [html]
  8. Graphs And Testing [ipynb] [html]
  9. Intro to Classes [ipynb] [html]
  10. Interfaces [ipynb] [html]
  11. Subclasses [ipynb] [html]
  12. Multiple Inheritance [ipynb] [html]
  13. Duck Typing Examples [ipynb] [html]


  1. Introductory Assignment [html]
  2. Loops, Graphics, File IO, and Recursion [html]
  3. Strings and Ciphers [ipynb] [html]
  4. IMDB Analysis with Pandas and Graphs [ipynb] [html]
  5. Class Design with IMDB [ipynb] [html]
  6. Image Processing [ipynb] [html]


  • Must have completed or be concurrently enrolled in INST201 – Introduction to Information Science.
  • INST126 – Introduction to Programming for Information Science, CMSC106, CMSC122, or permission of instructor.

Student Learning Outcomes/Course Objectives

  1. Explain programming concepts, principles, design patterns and methods;
  2. Design, program and debug Python applications to solve non-trivial problems;
  3. Test and assess the quality of object-oriented code;
  4. Write clear and effective documentation;
  5. Differentiate between object-oriented, procedural, and functional programming/design paradigms and identify use cases for each; and
  6. Describe the ethical and social considerations in software development.


  • Think Python, Downey, Allen. 2nd Edition. Green Tea Press. Freely available here
  • Python 3 Object-Oriented Programming, Phillips, Dusty. 2nd Edition. Packt Publishing. Available here, but cheaper on Amazon.

Required Technology

You will be expected to attend class with a laptop you can use for software development. We will do live programming exercises during most classes, so be prepared to write code. Any reasonably current operating system can be used. If you dont have access to a laptop, contact me as soon as possible.

Grading Policies

Letter Grade Distribution Your final grade for the course is computed as the sum of your scores on the individual elements below (100 possible points total), converted to a letter grade:

Syllabus Change Policy

This syllabus is a guide for the course and is subject to change with advance notice. Changes will be posted in ELMS. The ELMS course site is the definitive location for all course work, and communication, including class schedules, assignments and deadlines.

University Course Policies

The essential purpose of the university’s undergraduate course policies is to enable all of us to fully participate in an equitable, accessible and safe academic environment so that we each can be challenged to learn and contribute most effectively. They address issues such as academic integrity, codes of conduct, discrimination, accessibility, learning accommodations, etc. We are all responsible for following the policies at You must read them and send me any questions by the end of the first week of classes.

Course Calendar

Week Dates Topic Chapters*Assignments**

Week 1 5/30, 6/1 (Re)Introduction to Programming and Python TPy 1-3 HW1

Week 2 6/6, 6/8 Programming in Python TPy 4-9 HW2

Week 3 6/13, 6/15Algorithmic Thinking + Procedural Programming TPy 10-12 HW3

Week 4 6/20, 6/22 Object-Oriented Design PyOOP 1-2

Week 5 6/27, 6/29 Midterm, OO, and Project Interim PyOOP 3 HW4

Week 6 7/4, 7/6 Object-Oriented Design PyOOP 4-5 HW5

Week 7 7/11, 7/13 Large-Scale OO Development PyOOP 6-7 HW6

Week 8 7/18, 7/20 Programming in the Real World TBD HW7

Week 9 7/25, 7/27 Programming in Other Paradigms TBD

Week 10 8/1, 8/3 Final Project Presentations

</div> </div>

* TPy: Think Python, PyOOP: Python 3 OO Programming

** All assignments are due on the first class of the following week. E.g., HW1 is due on 6 June, HW2 is due on 13 June, etc.