• Stars
    star
    2,865
  • Rank 15,842 (Top 0.4 %)
  • Language
    JavaScript
  • Created over 9 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Web site for www.py4e.com and source to the Python 3.0 textbook

Python for Everybody (PY4E)

Course materials for www.py4e.com

The Python3 versions of the code is all in code3

If you are interested in the Python for Everybody book see the folders

See the file book3/README.md for more details.

Setup On Localhost

Here are the steps to set this up on localhost on a Macintosh using MAMP.

Install MAMP (or similar) using https://www.wa4e.com/install

Check out this repo into a top level folder in htdocs

cd /Applications/MAMP/htdocs
git clone https://github.com/csev/py4e.git

Go into the newly checked out folder and get a copy of Tsugi:

cd py4e
git clone https://github.com/csev/tsugi.git

Create a database in your SQL server:

CREATE DATABASE tsugi DEFAULT CHARACTER SET utf8;
CREATE USER 'ltiuser'@'localhost' IDENTIFIED BY 'ltipassword';
GRANT ALL ON tsugi.* TO 'ltiuser'@'localhost';
CREATE USER 'ltiuser'@'127.0.0.1' IDENTIFIED BY 'ltipassword';
GRANT ALL ON tsugi.* TO 'ltiuser'@'127.0.0.1';

Still in the tsugi folder set up config.php:

cp config-dist.php config.php

Edit the config.php file, scroll through and set up all the variables. As you scroll through the file some of the following values are the values I use on my MAMP:

$wwwroot = 'http://localhost:8888/py4e/tsugi';   // Embedded Tsugi localhost

...

$CFG->pdo = 'mysql:host=127.0.0.1;port=8889;dbname=tsugi'; // MAMP
$CFG->dbuser    = 'ltiuser';
$CFG->dbpass    = 'ltipassword';

...

$CFG->adminpw = 'short';

...

$CFG->apphome = 'http://localhost:8888/py4e';
$CFG->context_title = "Python for Everybody";
$CFG->lessons = $CFG->dirroot.'/../lessons.json';

... 

$CFG->tool_folders = array("admin", "../tools", "../mod");
$CFG->install_folder = $CFG->dirroot.'./../mod'; // Tsugi as a store

...

$CFG->servicename = 'PY4E';

(Optional) If you want to use Google Login, go to https://console.developers.google.com/apis/credentials and create an "OAuth Client ID". Make it a "Web Application", give it a name, put the following into "Authorized JavaScript Origins":

    http://localhost

And these into Authorized redirect URIs:

http://localhost/py4e/tsugi/login.php
http://localhost/py4e/tsugi/login

Note: You do not need port numbers for either of these values in your Google configuration.

Google will give you a 'client ID' and 'client secret', add them to config.php as follows:

$CFG->google_client_id = '96..snip..oogleusercontent.com';
$CFG->google_client_secret = 'R6..snip..29a';

While you are there, you could "Create credentials", select "API key", and name the key "My Google MAP API Key" and put the API key into config.php like the following:

$CFG->google_map_api_key = 'AIza..snip..9e8';

Starting the Application

After the above configuration is done, navigate to your application:

http://localhost:8888/py4e/tsugi/

It should complain that you have not created tables and suggest you use the Admin console to do that:

http://localhost:8888/py4e/tsugi/admin

It will demand the $CFG->adminpw from config.php (above) before unlocking the admin console. Run the "Upgrade Database" option and it should create lots of tables in the database and the red warning message about bad database, should go away.

Alternately, you can create all the databases on the command line using:

cd py4e/tsugi/admin
php upgrade.php

Keep refreshing the /py4e/tsugi page until all the error messages go away. Once the error messages are gone, the main page should also have no errors.

http://localhost:8888/py4e/

Go into the database and the lti_key table, find the row with the key_key of google.com and put a value in the secret column - anything will do - just don't leave it empty or the internal LTI tools will not launch.

Next use the administrator interface to install the peer-grading tool from the github repository:

http://localhost:8888/py4e/tsugi/admin/install

Click on "Available Modules" and install https://github.com/tsugitools/peer-grade - you will need to re-run the database upgrade process to create the peer-grader tables.

Then install the "Gift Quiz" tool and re-run the database upgrade.

If you want to have access to the quiz content, please contact Chuck for access to the private py4e repository. Access will only be given to those seriously installing the software and verified as teaching the course and adopting the materials. To checkout the private repo:

cd py4e
git clone https://github.com/csev/py4e-private.git

Then add the following line to your config.php:

$CFG->giftquizzes = $CFG->dirroot.'/../py4e-private/quiz';

At this point, you will need the "quiz unlock password" (also from Chuck) and at that point, you should be able to launch and load all the quizzes (one at a time) from the repository. You need to load the quiz content for every course (context) separately. But at least you don't have to type them all in.

The other two LTI tools that are required are already part of the py4e repo and in py4e/tools folder.

You can always test the tools using the "App Store" at:

http://localhost:8888/py4e/tools/

This allows you to do test launches as the instructor and student in a test environment using the key '12345'.

Using the Application

Navigate to:

http://localhost:8888/py4e/

You should click around without logging in and see if things work.

Then log in with your Google account and the UI should change. In particular you should see 'Assignments' and in Lessons you should start seeing LTI autograders.

Becoming Instructor in the Global Course

Tsugi can support using the content in a Learning Management system through LTI launches and LTI Keys.

You can also run a "MOOC" where students directly log in using Google to your site and do the homework, track their grades, and earn badges.

You will want to "promote" your student account to a teacher account as follows.

  • Log in with your Google account

  • Go to /tsugi/admin - Note that you won't see the Admin option in your drop down until you visit it once and successfully log in to the Admin UI.

  • Enter the admin password you chose in config.php to log into Admin.

  • In the Administration Console, choose View Contexts - These are the "courses" - if you just set things up there will be just one course. Otherwise find the course that matches your configured context_name and go into it.

  • Find your account in the membership records. You can search using your gmail address if there are a lot. Go into your membership record.

  • Edit your membership record and change your "Role Override" value to 1000 and save your record.

Poof! You (and as many of the other folks you give this power to) are now the "instructors" of the global class.

Becoming Instructor for an LTI-Launched Course when the LMS Does not support the Instructor Role

Some LMS systems do not send the Instructor role "the way you would like it to". Sometimes it never sends the instructor role and in other cases it does not send the instructor role for teaching assistants or perhaps you want to promote some students into teaching assistants.

It is pretty simple to do this in Tsugi.

  • Log in to /tsugi/admin as in the previous instructions.

  • Find the context that corresponds to your LTI-Launched course. Enter the context.

  • Find the membership record (often searching on email address) and then edit the membership record, setting "Role Override" to 1000 and saving the membership record.

From that point forward regardless of the role sent by the LMS - that user will be seen as an instructor by Tsugi.

More Repositories

1

dj4e-samples

Django For Everybody Sample Code
Python
550
star
2

cc4e

C Programming for Everybody
C++
291
star
3

wa4e

Course materials for www.wa4e.com
PHP
208
star
4

net-intro

Introduction to Network Technology
PostScript
175
star
5

uninstall-python3

A Simple Shell Script to Uninstall Python 3 versions from Mac OS/X
Shell
120
star
6

dj4e

Django for Everybody
PHP
96
star
7

py4inf

Python for Informatics: Exploring Information
HTML
38
star
8

pythonauto

An IMS LTI based Python Autograder, initially to support my Python For Informatics Book MOOC
PHP
37
star
9

pg4e

PostgreSQL For Everybody
Jupyter Notebook
34
star
10

sakai-scripts

A Repo of my scripts that I use to make my life as a Sakai developer easier
Shell
15
star
11

csonline

This is my registration system for my self-hosted MOOC Infrastructure
CSS
15
star
12

dazzleSketch

A JavaScript library that allows one to sketch over reveal.js presentations or any web page - OmniDazzle meets JavaScript
JavaScript
14
star
13

gift2qti

A simple tool to convert Quiz Questions from the GIFT format to the QTI 2.0 format
PHP
12
star
14

ca4e

Computer Architecure for Everybody
Rich Text Format
10
star
15

cc4e-private

Private Materials for C Programming for Everybody
C
7
star
16

dj4e-projects

Communicate about projects related to the Django Courses
Python
7
star
17

dj4e-advanced

Advanced Sample Code for DJ4e
Python
6
star
18

xmosaic-1.2

XMosaic-1.2 (1993) - Running Native under X-Windows on Mac OS/X
C
6
star
19

pythonlearn

Web site for the Python for Informatics (Python 2) textbook
HTML
5
star
20

wc-experiment

Chuck's Web Components Experiment
HTML
4
star
21

tsugi-jpa-lib

The Library Code for Tsugi Java
Java
4
star
22

wikiextract

Extract Wiki Content from Coursera Wiki
Groff
4
star
23

tsugi-01

This is a next-generation Learning Management System focused on simplicity (Archived)
PHP
4
star
24

obi-sample

This is a very very simple badge management system for the Mozilla Open Badges Project in PHP
PHP
4
star
25

localsearchphp

A simple in-site search for php sites - crawls the site and presents a simple search interface
PHP
4
star
26

youmap

Software to Make a Map of a YouTube Channel
JavaScript
3
star
27

webauto

This is my automatic grading program for web sites
PHP
3
star
28

tsugi-jpa-sample

Sample Appication for Java Tsugi
Java
3
star
29

ihts

Internet History, Technology and Security
PHP
3
star
30

mmorps

Massive MultiPlayer Online Rock-Paper-Scissors
PHP
3
star
31

dj-lmp1

This is a repository for experimentation
Python
3
star
32

itunes

A Simple Process to Make RSS Feeds for iTunes
Python
2
star
33

RPS

My Android RPS Application
Java
2
star
34

tsugi-web

The web site for www.tsugi.org
CSS
2
star
35

py4inf-web

The web content for www.py4inf.com - This is the Python2.x content
HTML
2
star
36

networks-code

This is a repository of sample code for SI301
JavaScript
2
star
37

tsugi-php-mod

Several Tsugi PHP Modules
JavaScript
2
star
38

maven-jetty-jdbc-servlet

A simple servlet that uses Maven, JDBC, and Jetty to say 'Hello world'
Java
2
star
39

dr-chuck

Resume and related stuff
HTML
2
star
40

gift2

The second version of the GIFT Editor
PHP
2
star
41

sakai-book

Sakai: Building an Open Source Community
TeX
2
star
42

talks

Dr. Chucks Talks
Rich Text Format
2
star
43

playground

A place for me to do stuff for testing
2
star
44

GoogleLogin

A simple bit of code to use Google's new OAuth For Login
PHP
2
star
45

djtutorial

My Solutions to https://docs.djangoproject.com/en/2.1/intro/
JavaScript
2
star
46

web2py-hack

A place to record all my web2py hacking - will be deleted later
Python
2
star
47

lti4web2py

An IMS Learning Tools Interoperability (LTI) 1.x Provider Application for Web2Py
Python
2
star
48

egr124

EGR124 - Internet and Technology - 1997 - Course Archive
HTML
2
star
49

hng

An archive of a Home Networking book I was writing in the early 2000's
HTML
2
star
50

tsugi-sakai

Initial outline of the Sakai version of Tsugi APIs - Not yet implemented
Java
1
star
51

sakai-lti-test

A clone of the Sakai PHP Unit Test code for LTI (Now moved to tsugi.org)
PHP
1
star
52

zap

Zap
JavaScript
1
star
53

apps

The top level page for umsi apps
PHP
1
star
54

pdfjstest

Just a place to test Mozilla's PDFJS code
JavaScript
1
star
55

basiclti-oidc-test

An experiment in Spring MVC
Java
1
star
56

cb2k

Clipboard 2000 archive
HTML
1
star
57

conversations

Conversations
Java
1
star
58

sakaiger

The sakaiger.com web site
HTML
1
star
59

cloudcollab

Automatically exported from code.google.com/p/cloudcollab
Java
1
star
60

simple-spring-mvc

A Simple Spring MVC example
Java
1
star
61

runestore

Making an app store for runestone
PHP
1
star
62

pg4e-docker

Scripts / Dockers Setting up PG4E In Production and Test
Shell
1
star
63

react-tsugi-attend-tool

TypeScript
1
star
64

rattend

React Experimental Attendance Tool
PHP
1
star
65

wa4e-net

The web site for www.wa4e.net
HTML
1
star
66

whrwe-cordova

A Cordova Version of whrwe.com
Java
1
star
67

checkskew

A bash script to check the clock skew between a system and timeapi.org
Shell
1
star
68

sandbox

Playing with Kubernetes Sandbox
Shell
1
star
69

smoker

An experimental smoke tester
Python
1
star
70

js4e-samples

Sample code for JavaScript for Everybody
Python
1
star
71

js4e

JavaScript for Everybody
1
star
72

whrwe-swift

The Swift Application for WhRWe
Swift
1
star
73

dj-lmp

The Django LeMans Prototype / Learning Platform
1
star
74

board

A Simple Leaderboard Tool for Tsugi
PHP
1
star
75

charles-auth

Python
1
star
76

charles-elasticsearch

Python
1
star
77

charles-ui

JavaScript
1
star
78

charles-server

Python
1
star