Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

SEL Programming Classes

This repository contains the interactive materials, i.e. scripts/assignments/examples, for programming classes designed and hosted at Schweitzer Engineering Laboratories.

Contact: Brett Deaton, STEM Fundamentals program

Course Catalog

Get Started With Python. An active orientation to Python using Jupyter Notebooks. The audience is anyone with little to no programming experience. When done, participants will be able to run, modify, and create scripts using basic syntax like print, for-loops, if-statements, input, and simple objects like lists.

Quick Start For Class Participants

You can interact with your own instance of this code repository directly in your browser by visiting this Binder link: Binder

If instead you want the code on your local machine:

  1. Download a zip of this repository.
  2. Navigate to <yourclass> directory.
  3. Follow the instructions in <yourclass>/

Or for an updateable copy with the entire version history, follow the instructions for git clone below.

Quick Start For Contributors

If you want to create a new or improve an old SEL programming class, reach out. We'd love your ideas! To join the development team:

  1. Create your own github account with conventional handle <username>SEL.

  2. Request an invite to the organization Schweitzer-Engineering-Laboratories. (Contact Thomas Benda, Jason Kemp, or Robert Pepka as of 2020.)

  3. Request write access to this repository. (Contact Brett Deaton as of 2020.)

  4. Clone this repo: git clone

  5. Develop using the GitHub workflow, keeping the main branch always deployable. For example:

    • pull current state of main branch: git pull --rebase
    • create local dev branch (name it better than this) from main to work in: git switch -c dev
    • modify > commit > repeat: git add ... git commit ...
    • push completed development branch to github: git push -u dev
    • merge dev into main on github: create github pull request > pass code review > merge

    Keep your commits small (e.g. a few hours of work) and coherent (e.g. avoid commits that solve multiple unrelated issues).


Create new classes in the root directory using a short name in CamelCase containing no whitespace, dashes, or underscores.

Add a short class description to Course Catalog above for each new class.

Create a file in each course root directory describing the course simply, including information common to other READMEs.

Create the following directories at the root level for any course as needed: images, examples for real-world applications at the learning level of the class, projects for students' final projects.

Make your commit messages clear and concise. Limit the first line (i.e. the subject of the commit) to 50 characters or less and write in the imperative mood. Feel free to refrain from a body if further explanation isn't needed.

Students who don't use git may contribute by sharing their work with the instructor who can commit to this repository.


Programming Classes by Schweitzer Engineery Laboratories is licensed under CC BY-SA 4.0.

If you are a student or teacher anywhere in the world, please use this material! It is disributed under a copyleft license, allowing free reuse, modification, and distribution as long as derivative works give proper attribution, link to the original license, identify changes, and are distributed under the same license.

Note, this CC license is usually used for works of art and education not software, for which the MIT or GPL licenses are more appropriate. We use the CC license because this repository's primary purpose is to educate not to create a usable software tool.

Note, we distribute this material under the BY-SA license rather than the more permissive BY license, in order to incorporate other learning material distributed under the BY-SA license (e.g. Wikipedia).


Active learning content for programming classes at SEL



No releases published


No packages published