Wednesday, November 26, 2014

Python Anywhere - What it is and how can it be used

PythonAnywhere is an online IDE with the options of Python 2.7-3.4, iPython, PyPy 2.7, Bash terminal, and MySQL terminal. For a free account, you have the ability to create a python web-app that's hosted on the main site, up to two shells, and the ability to share your console with anyone. There's a private file storage of up to 512mb which for CS students is more than enough.

Advantages:
-This website has a python shell and a bash terminal. This can open up students gently to the idea of using a shell (then using vim, pico, etc).
-Students can use the online text editor which has a push-button option to run code.
-Accounts have file management, so files can be stored and downloaded to local machines.
-Consoles can be shared, which opens up opportunities for teamwork or student/teacher sessions.
-Has tons of modules

Disadvantages:
-Consoles are limited based on processor time used (100 seconds for a free user)
-Site server performance is a concern, but not much of an issue.
-Online only.

Tuesday, November 11, 2014

Brython - Adaption to class tool

Before going into specifics on how best to utilize Brython, I'll be covering some advantages/disadvantages on the onset of using this as a classroom tool.

Advantages:

Disadvantages:
-Useless if offline. Python's native GUI and countless other applications make this inadequate.
-No file sharing. If you want to publish something, you will have to do it on your own server.
-The constant need to build a HTML webpage in order to actually use Brython.
-If you're not familiar with ECMAscript, brython under the hood will seem weird.
-Limited to its own libraries (Python 3.x) and its ECMAscript libraries.
-Suspect translation of python to ECMAscript. 
-Questionable speeds due to python to ECMAscript translations.
-Python 3 maybe not be the standard for many applications.
-If being taught, would need to implement HTML template source code. 
-There's not immersive way to use this as a teaching tool.

Monday, November 10, 2014

Observing a computer science 101 class

Observed on Oct 30, 2014 - a CPSC1010 class

This professor used a projector setup with her own personal laptop.
The subject language was C and a swap function with pointers was being dissected and discussed. I noted that she was using Word to review code in C.
Next lesson was a quiz review. She went over the questions and answers using the above technique.

At a particular point in the classroom she had to use the faculty computer which was a Windows machine which necessitated the use of SSH. The SSH program for Windows might be difficult to see because of the white background. Unsure if there are program options to change the text font or size.

Using a SSH shell, she demonstrated the use of command line arguments with argc and argv. She would alternate between using VI and then using the command line compiler (GCC) to compile source and observe output.

I noticed most of the students (save a few for Mac users) were using SSH/Putty to use the compiler on school computers. This would be an excellent use of an online IDE as it would make it a lot easier to students/teachers to view/edit/compile source code. Instead of using the cumbersome SSH program, class exercises could easily be done using koding or even cloud9. There was also a special needs student and I wondered how this affected the teacher's methods.

Personal Thoughts:
I have discussed using cloud-based IDEs to help demonstrate programming exercises with the professor. However, I had to be mindful because techniques cannot be easily changed overnight and many teachers have a method to how they teach (e.g. using Word to go over C code) and their personal preferences. I personally think programming code would be easier to view/learn from in terms of it being shown in an IDE environment or an application where a teacher could change the font/size. Students could vastly benefit from using cloud-based IDEs as well. For those who don't know exactly (or yet) how to use command line based editors or SSH/Putty on Windows, they could easily use koding to type out and compile example code. This eliminates the hassle of having to log on to a specific computer (which can be confusing to the first year student). This also effectively cuts the users who are signed on to school workstations thus eliminating extemporaneous workloads on said workstations that could be utilized by later year students.

Summary of powerpoint presentation: Web Based IDEs and their place in the classroom

Overview of IDEs:

Brython:
  • Designed to replace JaveScript as the web scripting language.
  • Pros:
    Can be used to create custom, interactive lessons in python.
    Can be used to make websites documenting the power of Python as a web script.
  • Cons:
    Its scope is limited to being a script object in HTML.
    Limited by its JavaScript library.
    Can be utilized offline. However, if teaching Python offline, perhaps it’s better to use the official Python Idle.
PythonAnywhere:
  • PythonAnywhere is an online IDE/Web Host based on Python.
  • Pros:
    Implements many versions of python, bash, and even MySQL
    Accounts are free and have 512mb of storage
    Console can be shared -- cooperative work environment
    Python scripts can be saved on the server.
    Many python modules supported.
    On-site script editor alongside python interpreter.
  • Cons:
    Dropbox integration is down.
    Use is limited by CPU allowance (processor time used).
koding:
  • Koding is an online IDE that allows real-time collaboration alongside access to a full Ubuntu linux terminal that supports many languages.
  • Pros:
    A free Ubuntu terminal with many developer tools.
    Extensive help section alongside other users that can answer questions.
    Can get files from Google Drive, BitBucket, DropBox, etc.
    Ability to collaborate in real time plus integrated Google hangouts
  • Cons:
    Downtime of terminals (sometimes unscheduled)
Student use:
As a student, it’s simple to log into PythonAnywhere or Koding.
Brython might require the student to be familiar with HTML just to program in python. The student can follow along any online course (youtube, udemy, coursera, etc.) and program in the same window. Collaboration and the ability to save files onto site host servers makes it easy for students to work from home and school on different machines. To turn in homework or assignments, students can invite the teacher into a workspace so he/she can explain the program in real time. No need to install software; less headache about hardware limitations. Internet and a compatible web browser is only needed.

Teacher use:
No administrative access to websites so students will have need a system to turn in completed work. PythonAnywhere and koding can be used to demonstrate concepts while in class. While using a centralized IDE, students will worry less how to do things in the IDE and concentrate on actual programming.
Teachers could write half-completed programs as activities and have students fill in the blanks. Teachers could plan and utilize Brython and create a webpage that demonstrates Python concepts. No need for books or if books are necessary students can follow along and be less distracted by switching between two windowed applications.

Areas to improve for these IDEs (in terms of teaching/learning):
Compiler:
  • Providing a compiler that compiles as code is being written.
  • A compiler with clearer error messages (more similar to clang)
  • If the compiler is providing hints and the student still doesn’t understand what’s wrong, maybe a compiler that just provides answers
Drag and Drop:
Allowing the student to drag and drop things. For instance, if compiler says “missing semi-colon” then student can drag and drop a semi-colon. Or drag and drop variables and initializations to these variables. (Basically like Scratch) (A survey of literature on the teaching of introductory programming)

Help Guide/Forum:
If need help finding certain function names, or functions. Or need help figuring out how to actually do something in code. This can be a forum, where they ask people, or be like a huge database in the system, that just so happens to be intelligent enough to do this.

Built In Code:
Providing code for the student to play around with. Code can be specific examples of if statements, loops, recursion, etc. that encourages the student to change things around, asks them specific questions about what they’re doing and what the code is doing.