Class Description

Practical Python Programming teaches the fundamentals of Python by solving a series of problems that incrementally introduce features of the language. "Learning by doing" is emphasized. Good programming practices and algorithm design will be important. The class will include hands-on programming in a variety of application areas. Major general-purpose Python modules including numeric and graphing modules will be explored in the context of simple problems to solve. A solid grasp of basic college level math is a required. There will be lots of programming assignments.

Time: 12:30-1:30 Pacific Time MWF
Location: Live at the time above via Zoom (no face to face class). See BBLearn for class for Zoom id. Yes, you can take this course anywhere in the world.
Tests: TBD
Final: TBD
Coding: *Lots* of Python plus some UNIX skills.

Goals:

  1. Learn the Python Language
  2. Learn to use several important and popular Python modules
  3. Practice these skills

Covid-19 Adjustments
  • This class will be taught live entirely on Zoom. ZOOM ID in bblearn for class.
  • All zoom lectures will be recorded and appear in the videos section in the class BBLearn page. There may be as much as a week delay in posting a class video.
  • Except for videos and grades in BBLearn, all else will appear here on the class web page.
  • All email from students should have the subject: CS212.
  • Since almost no one showed up for office hours last semester I will try office hours BY APPOINTMENT ONLY. Please send email. Appointments will be in 20 minute slots. Multiple people can arrange to see me at the same time if you wish. We will see how this works out.
  • Since we can't have in class exams, all exams will be take home. I will assume I am working with adults in extraordinary times and that students will not share hints or answers.
Recommended Textbook: Python Programming in Context, 3rd ed.
ISBN: 978-1284175554, Jones and Bartlett Learning
Recommended Textbook: The Quick Python Book, 3rd ed.
ISBN: 978-1617294037, Manning Publications

Estimated Syllabus

This syllabus is an estimate of what we might cover this semester. This is the first time this class has been taught.

Wk#

Monday
of that
Week

Topics/Links Assignments Comments
1 Jan 11 Introduction to the class, what we plan on doing, how the class works, where to find stuff. assignment NO CLASS MONDAY
2 Jan 18 Introduction to the course. Survey. Pros and cons of using Python. What are your options. The layout and philosphy of the Python language and how it compares with other languages. Running Python. How to get Python on your machine. IDEs such as idle and Jupyter. UNIX basics. ways to run Python.   NO CLASS MONDAY - MLK/Human Rights Day
3 Jan 25 Object/function/operator invocation. basic types including lists and tuples. mutable vs immutable. helper functions like dir and help. assignment and scope. names and name spaces. Functions and good programming practice. Python style.    
4 Feb 1 control structures in general. string basics, slicing and dicing, translation. coercion and casting. three ways to do importing. sys and I/O and formatting.    
5 Feb 8 more on the usefulness of dictionaries.
6 Feb 15 program layout. how to start and writing reliable code. design for testing. visibility of symbols and abstraction.   NO CLASS MONDAY. President's Day
7 Feb 22 using modules. name space and file collisions. Abstraction again. Fun with drawing and the Turtle module. Example: building Lsystems with Python using much of what we have learned up to now.    
8 Mar 1 Objects. The importance of object oriented design. Build your own objects. The complexity of scoping and naming for abstraction. build a useful join utility using dictionaries and the OptionParser module.    
9 Mar 8 how to make a module.    
10 Mar 15   NO CLASS THIS WEEK! SPRING BREAK
11 Mar 22 plotting with mathplotlib. How to process data read in from a basic file. The types of plots available in mathplotlib and how to make your graphs pretty and informative. Examples plotting crime data and then plotting them geographically using our join tool. Seaborn.    
12 Mar 29 Some GUI things with the Images module. How to do some interactive data analysis.    
13 Apr 5 Using csv module to do read *real* csv files. example computing distances on Earth using a data file of latitude and longitude.    
14 Apr 12 Using numpy. Seeing how numpy reshapes what you can do with numbers. Linear algebra with numpy and array based operations. I/O in numpy. Cleaning data from real sources. Common mistakes with matrices and vectors.    
15 Apr 19 Objects and inheritance. How to usefully build a hierarchy of classes. Example: build a DnD world using a hierarchy of classes.    
16 Apr 26 Building a digraph (nodes/edges) object for practice. building weighted graph and nondirected graph objects. Graph algorithms using graph objects and things to watch out for. The PyGraph module.    
17 May 3      
18 May 10   FINALS WEEK (NO FINAL FOR US) Final: None

References and Resources

Code

Services

  • Homework submission page. This our homework submission page. This is not to be confused with any other submission tools used in the CS department. This is How Testing Works
  • Submitting homework without a browser
  • Computer Science IT FAQ including information on logging onto class machines.
  • The CS212 student machine is called cs-212.cs.uidaho.edu. If you are off campus you can access this machine only by first "coming on campus" with VPN. For details see CS IT FAQ The compile command I run on that machine is:
     scl enable
    devtoolset-7 "make" 
    to get the same compiler and options. The devtoolset-7 command is an annoying command prefix you have to use to access a 21st century compiler. Not my fault, it is a consequence of the Linux distribution we are using.

    Policies and Processes

  •