Teaching college level students Python coding using Jupyter Notebooks
I reworked the 100 and 200 level Python courses to be run from a Jupyter notebook interface. Students also had the option to create their code using PyCharm. These courses were made available both in-person and remotely. Lectures/demonstrations were also recorded and made available.
Here are a few example demonstrations Lecture 7 Demonstration, Lecture 8 Demonstration
In the 100 level course, students were required to achieve these competencies:
Perform basic programming operations in Python
Identify different component of an IDE
Declare and initialize variables
Distinguish between data types and character sets using variables and constants
Create GUI applications
Generate random numbers
Demonstrate writing to and reading from a file
Write and execute programs via the command line
Incorporate Processing Data
Write a program to input and output numeric values
Use arithmetic operators
Use logical operators
Format output
Use exceptions handling
Use a debugger to find coding errors
Process strings
Cast data to appropriate types
Implement Decision Making
Write if-else statements and nested if statements
Use compound conditions
Define dictionaries and functions to use for selection
Implement Loops
Code using while
Code using for and range() function
Use nested loops
Use pass, break, continue and pass statements appropriately
Create Functions
Write function calls
Write a function that returns a value
Write a function that with default argument values
Write a function using keyword arguments
Write a function that accepts an arbitrary number of arguments
Implement Collections
Define and manipulate arrays
Demonstrate how to declare and initialize lists
Demonstrate sort and search in arrays and lists
Use a tuple to solve a problem
Use a set/frozenset to solve a problem
Create code using Object-Oriented Principles
Create class and class object(s)
Implement inheritance
Use polymorphism in a program
Implement abstract class and abstract methods
Implement multiple inheritance
Use Test-Driven Development for writing classes
Use class composition
Utilize appropriate tools to manipulate data
Use appropriate methodology to display data
Connect to an existing database for queries and updates
Incorporate code readability, application testing and demonstrate communication to other developers
Demonstrate the use of comments, good code layout and coding conventions
Develop strategies for testing your program including the use of unit testing framework
Develop strategies for Test-Driven Development
For the 200 level course, students got into much more advanced topics. Here are some example demonstrations. Lecture 8 Demonstration, Lecture 9 Demonstration
Students had to achieve the following competencies:
Build projects that integrate with open source databases
Create a program that stores output in a database
Create a program that utilizes data from a database
Apply CRUD operations (create, replace, update, delete) on a database from Python
Utilize popular Python data analytics libraries to analyze datasets and draw conclusions about the data
Make use of data frames, arrays in analyzing dataset
Apply statistics to find useful results from datasets
Create consumable visuals of data utilizing popular Python data visualization libraries
Construct graphs and charts from Python
Experiment with different ways to make visualizations more appealing and consumable
Investigate data structures for efficient numerical computing
Identify the differences between the Python list and array-like data structures used in numerical libraries
Demonstrate indexing and slicing of N-dimensional arrays
Utilize methods for array conversion, shape manipulation and item selection
Create web outputs utilizing popular Python libraries
Construct simple HTML web pages using available web frameworks
Create an interactive data visualization in HTML
Incorporate the use of web APIs in Python development
Discuss RESTful Web Services
Implement a REST client
Develop a server application that provides a REST endpoint
Apply the concepts of threading and multiprocessing
Explain the difference between threading and multiprocessing in Python
Demonstrate an understanding of the value and uses of multiprocessing
Use the multiprocessing library to reduce the execution time of an algorithm on a multi-core processor
Build programs that are capable of working with large datasets by utilizing generators
Create a program that includes a generator function
Apply generators to analyze a large data file
Demonstrate an understanding of the value and uses of generators
Design code using the “Pythonic” style
Write a program that utilizes wrapping instead of inheritance
Design a program that includes dependency injection
Utilize factories in a program
Demonstrate understanding of duck typing and monkey patching and their pros and cons.
My role as instructor for these courses was to run the courses, grade submissions, and ensure students had the knowledge they needed to be successful developers. I was also responsible for determining the content and setting up all courses in Blackboard.