About
The Programming Basics website was created by Dr. Ming-Yee Iu.
tradução em português: Margardia Martins
中文翻译: Dennis Song
traducción al español: Liudmila Pino Ledesma
Deutsche Übersetzung: Stephanie Pelser
हिन्दी अनुवाद: Tejas Shah, Richa Gupta
الترجمة إلى العربية: Ben Sassi Mohamed Sabri, Ben Said Walid
Русский перевод: Анна Парфенова (Ann Parfenova)
日本語訳: Akiko Miura
한국어 번역: EunKyoung Sheppard
বাংলা অনুবাদ: Prithiraj Sengupta
Traduzione italiana: Manuela Vastolo
Türkçe çevirisi: Pinar Yanardag
terjemahan Bahasa Indonesia: Noviyanti Sugita
Tafsiri ya Kiswahili: Clarence Bitegeko
Nederlandse vertaling: Kamiel Verwer
The website is designed with these principles in mind:
- There are a lot of barriers that confuse beginner programmers and discourages them
from starting lessons. These barriers should be reduced as much as possible
- There should be no software to install, and the interface should be consistent
regardless of what type of computer people are using
- The user interface should be as simple as possible, so that people don't become
discouraged by the complexity
- Some people might not have computers of their own and will use out-dated locked-down
computers that are available in schools and libraries. The website should still be usable in
these cases
- The website teaches a current mainstream programming language using a traditional set
of programming lessons without a particular application area in mind. This allows the
lessons to be broadly useful and less likely to become out-dated over time
- Exercises are an important part of learning to program. These exercises should not
involve a lot of typing yet be complicated enough to force people to really learn the
material
- The exercises should make use of modern user interface elements like windows, graphics,
and dialog boxes while avoiding older interface elements that people may currently be
unfamiliar with like consoles
- The exercises may use modern interface elements but the exercises should focus on
teaching concepts and not on trying to impress the learner
- The lessons are intended mostly for people trying to teach themselves programming
though they can be used in other settings as well
- Since the lessons are designed for self-learners, every programming detail must be
carefully explained since a teacher might not be available to explain any missing details
- Modern programming libraries are so general that often they are hard for beginner
programmers to use. The website should simplify these libraries as much as possible,
but not to the point where they don't serve an educational purpose or where they are
no useful as a real-world library
- Programming concepts are good for everyone in the world to learn, so the website
should be designed for international use
- Although there may be flashier and more innovative programming websites, boring
websites with well-designed lessons are always useful and are often difficult to find
because programmers like building flashier websites designed around novel pedagogical
methods
Inspiration
In the early 80s, Usborne, a publisher of children's books, released a
series of programming books that helped introduce countless numbers of
children to the world of computer programming. Unfortunately, since then,
the books have not been updated to reflect more modern programming
paradigms, and the tools needed to do programming have been removed from
recent computer systems. In fact, there are fewer resources for teaching
children programming today than there were 20 years ago.
ProgrammingBasics.org attempts to take the essence of the Usborne
experience and recast it for the modern computer age. This process not
involves creating new programming lessons based on modern programming
practices, but also creating programming environments and APIs suitable
for the beginner hobbyist programmer.
Like the original Usborne books, the overriding pedagogical theme of
ProgrammingBasics.org is to make
learning to program as "fun" as possible by trying to make it possible to
write useful and interesting programs using mainstream programming methods
while learning as few concepts as possible.
License
JavaScript is a trademark of Oracle corporation.
The Programming Basics software makes use of Babylscript, which
is in turn derived from the Mozilla Rhino JavaScript engine.
Those portions of code are subject to the NPL 1.1 license.
Roadmap
- Possibly add an extra credit exercise to the loops section?
- Quizzes
- Start working on intermediate lessons
- More complex code editor with debugger
- Mobile phone apps?
Release History
September 17, 2022
- Updating the interactive storytelling module to reflect the new UI of Twine 2.5.1
October 25, 2019
- Fixing some of the diagrams in the interactive storytelling module
September 30, 2019
- Improving the interactive storytelling module
July 23, 2019
- Provided sample games for the Super Fashion Dress-Up and Clay Shooting Scratch exercises
July 21, 2019
- Rebooted the Super Fashion Dress-Up Scratch exercise game
- Tweaks of the Scratch games handouts
July 6, 2019
- Changed the stand-alone editor to just be a standalone web page instead of a Java .jar file (there should be no more Java on the website)
- The source code download option was mostly useless, so I'm removing it
- Adjusting external links
- Adding images to the downloads page
July 4, 2019
- Removed Google+ links
- Beginner tutorial will no longer support falling back to using Java applets if your browser does not support HTML5
- Moved the Introduction to Scratch lesson to Scratch 3.0
- Changed the local version of Scratch to use Scratch 3.0
- Changed the cat used in the Cat & Mouse game
October 11, 2018
- Tweaks to the interactive storytelling material
August 23, 2018
- Code for "choose" didn't work properly in Swahili and Chinese
August 22, 2018
- Adjusting the layout of the beginner lessons to work better with cellphone screens
- Images for the beginner lessons will now be rendered using svg on modern browsers so that they look sharper on high resolution screens and can be zoomed in
- Added a tutorial on interactive storytelling using Twine to the Downloads section
December 5, 2017
- Adjusting the layout of many pages (mainly the ones that aren't used for the beginner lessons) to display better on mobile phones
- Added a Unity tutorial
April 25, 2017
- Minor update of the teaching module on NFC to include a couple more pictures in the presentation
April 23, 2017
- Added a teaching module on NFC and making transit card keychains
September 30, 2016
- Altered the layouts of the Scratch games handouts
- Added a teacher's guide for the Scratch games handouts
- Added metadata for search engines to help them find alternate language versions of the beginner lessons
February 23, 2016
- Added a second loading indicator since sometimes there is a long wait between when an exercise has downloaded and when the exercise starts
- Fixed a problem with the Orion editor becoming slow because old scripts from the preview pane would continue to run even when the preview was replaced with new contents
December 11, 2015
- Moved from using YouTube to host videos for the HTML5 Graphics lessons to hosting videos on the site itself
- Deemphasizing the use of jsbin as the main editor for the HTML5 Graphics lessons
November 30, 2015
- Fixed up a problem with how the Windows input method enters quotation marks for CJK languages in text editors
- Forgot to include some parts of the Swahili translation previously
- Properly fixed the fact that the old Java version of the site wasn't being compiled properly to work on old versions of Java
October 23, 2015
- Fixed up some video links
- Added a new Scratch game lesson called Super Fashion Dress-up
- Made some small tweaks to the formatting of the Scratch game lessons
- Updated the links to other educational websites
- Preparing the site so that it can be distributed to places that don't have Internet access
- Switching over to use more relative links
- Instead of using off-site html/js editors, the website will offer ones that can be used straight from the website
- Building a version of Scratch that can be distributed as part of the website
April 20, 2015
- Updated the presentation on making web pages
- Fixed the html5 version of the website so that \n and other whitespace can be used in show() and elsewhere
March 25, 2015
- Added a presentation on making web pages
February 9, 2014
- Making sure the links in the Programming Games in Scratch .pdf files work
- Altered the layouts of those handouts and added a list of useful blocks for each handout
November 4, 2014
- Improving the layouts for the Programming Games in Scratch worksheets
November 3, 2014
- Added an activity section on programming games using Scratch
April, 2014
- Added a printable handout to the graphics and animation section
July 23, 2013
- Added a presentation I made on computer graphics and animation to the Downloads section
December 9, 2012
- Added a Dutch translation
- Finished filling in the Swahili translation
November 25, 2012
- Added basic keyboard support and support for UI buttons to the html5 version of the IDE (this means the html5 version of the site now has feature parity with the Java version)
- Filled in more of the Swahili translation
November 23, 2012
- Made corrections to the Indonesian translation
- Filled in more of the Swahili translation
November 19, 2012
- Cleaned up some more of the translations
- Improved the look of the html5 version of the website
November 18, 2012
- Changed the website to default to the html5 version if html5 support is available
- Previously, the website would only use the html5 mode if it did not detect Java, but this Java detection was unreliable on Chrome and IE
- Note: the html5 version of the site does not have feature parity with the Java version. It is also slower and uglier. You can access the Java version of the site by downloading the IDE from the downloads section or adding "?html5=0" to the end of the website URL
November 16, 2012
- Testing Turkish and Indonesian/Malay? translations
November 13, 2012
- Testing an Italian translation
- Added support for opening and saving files in the html5 version of the website
- Removed the donation button
September 18, 2012
- Filled in more of the Bangla translation
- Apparently, when I switched loaders a few weeks back, it also broke the non-English html5 versions of the site. This is a bug in GWT that will be fixed when the new GWT release comes out in a few weeks, but I've manually corrected the problem in the generated code for now.
September 11, 2012
- Starting to deploy parts of a Bangla translation
August 28, 2012
- Fixed up some bugs in the exercise guide
- Moved the hosting of the website to Amazon S3, which will break some redirects, notably the redirects for old URLs of the beginner lessons
August 26, 2012
- Rearranged the directory structure of the website for better caching behavior
- Wrote a guide about how to create your own exercises
- Added some new entries to the external links section
August 21, 2012
- Added links to other programming websites for kids
- Trying to be more clever about animation timing in the html5 version of the site
- Small tweaks to the html5 version of the site to make the run button give more immediate feedback so that things seem more responsive
- Fixed up a problem with the downloads directory
- Fixed up the German translation for zbot.jump()
August 18, 2012
- Added some small tweaks to the html5 version of the site (like a loading screen and movable windows) to make it usable for those people with fast enough computers to actually use it
August 13, 2012
- Made some fixes to the Korean translation
August 9, 2012
- Filled in the rest of the Korean translation
August 7, 2012
- Filled in more of the Korean translation
August 6, 2012
- Reorganized the site so that it will exhibit more reliable caching behaviour
- Fixed up some problems with the rendering of the images in the Hindi translation
- Started to put in parts of the Korean translation
July 30, 2012
- The html5 version of the site is too slow, but fixing it requires me to write a new JavaScript bytecode interpreter in JavaScript, which is too time-consuming, so I'm experimenting with optimizing the exercise code directly
- The tool I was using to create the Hindi images wasn't able to render Hindi text correctly, so the Hindi images have been incorrect this whole time. I'm rerendering them using Firefox, since it seems to be the only svg renderer that properly handles more complex text forms
July 17, 2012
- Tweaking the performance of the html5 version of the site
- Making preparations to experiment with serving the site out of the Amazon CloudFront CDN to save on hosting costs
June 30, 2012
- Starting to experiment with how well the html5 version of the site works. If no Java is available, the website will fallback to use a rudimentary html5 version of the code editor
June 24, 2012
- Apparently, the website stopped working a long time ago for people using Java 1.6_7 or earlier, but I've fixed that up now
- Someone was having problems with the website recently, but I can't repeat it. The only thing I can think of that I've changed recently is some messy internal code, so I've discarded all that code and rewritten it in a new way
June 21, 2012
- Arabic images went missing and were put back.
June 21, 2012
- Tweaking the images and translations for the Japanese and Russian versions of the site
June 20, 2012
- Integrated more of the Japanese and Russian translation
June 19, 2012
- Started to integrate some of the Japanese translation
- Integrated more of the Russian translation
June 16, 2012
- Apparently, the downloadable versions of the code editor wasn't working properly in Chinese, Arabic, and some other languages--that's fixed now
- Tweaked some redirect behavior on the website for people manually entering the URLs for different language versions
- Changed the lesson code a bit so that it will be more compatible with a future html5 version of the website
- Starting to integrate the Russian translation
May 18, 2012
- Tweaked the text sizing in the Hindi and Arabic images
- Worked out the RTL issues on the Arabic images and web pages
May 17, 2012
- Filled in the missing parts of the Hindi translation
- Starting to work out how to flip the Arabic images and how to handle RTL language issues in SVG
May 16, 2012
- Starting to work on the Hindi and Arabic translations
- Added more fix-ups to the Spanish translation
May 7, 2012
- Added fix-ups to the Spanish translation
- Finished integrating in the initial German translation
May 6, 2012
- Added fix-ups to the Spanish translation
- Started deploying the German translation
May 3, 2012
- Started testing the Spanish translation
- Fix-ups to the Portuguese translation
April 21, 2012
- Added numbers to the filenames of the downloadable versions of the lessons
- Tweaked the translations a bit
April 19, 2012
- Fixed up some of the Chinese and Portuguese diagrams
April 18, 2012
- More updates to the Portuguese and Chinese translations
April 17, 2012
- Updated the Portuguese and Chinese translations
April 16, 2012
- Finished doing a rough merge of the Chinese and Portuguese translations for the images
April 15, 2012
- Started merging in parts of a Chinese and Portuguese translation
- Rewrote the underlying Babylscript engine
- Changed domain registries
March 27, 2012
- Fixed a bug I introduced last week that prevents the website from working with Java 1.4
- Preparing the infrastructure for a possible Portuguese translation
- Added a support this site page
March 21, 2012
- Downloadable version of the French Simple Code Editor now actually is in French
- Internationalized some more the UI
March 20, 2012
- Cleaned up the French translation some more
March 11, 2012
- For beginner users, i/o will seem properly internationalized now
- Changed Babylscript/JavaScript to default to using the current locale when doing number to string conversions
March 4, 2012
- Filled in and tweaked the French translation
- Activated the localization of Rhino error messages
- Changed the names of the objects and methods in the "while" exercise because the old ones were confusing
February 25, 2012
- Finished retracing and colouring all of the hand-drawn pictures
- Tweaked the variables section a bit to be more clear
- Added a hint to the exercise in the loops section
February 5, 2012
- Internationalized some more diagrams
- Vectorized some of the hand-drawn pictures so that they can be translated
January 29, 2012
- Started to internationalize some of the diagrams
January 12, 2012
- Internationalized the exercises and started to internationalize the code editor
January 8, 2012
- Starting to deploy some of the initial internationalization infrastructure that will allow different language versions of the web pages to be generated
January 4, 2012
- Changed the directory structure of the website
- Replaced the Rock, Paper, Scissors example with a gameshow example
- Moved the Rock, Paper, Scissors example to be an optional sidebar
December 17, 2011
- Added a new exercise to the loops section
- Fixed a bug related to adding attachments to programs
December 11, 2011
- Source code to the code editor can now be downloaded from the downloads section
December 6, 2011
- Previously, the applet exercises were written in Java while the downloadable versions of the exercises were in JavaScript. Now everything is in JavaScript, which will make it easier to support translations in the future
- When errors occur in internal libraries, the reported error messages will now show the line number for the code that called the library and not the library itself
November 22, 2011
- Created an about page
- Started tracking release history
Early 2011
- Secure sandboxed downloadable versions of the code editor and lessons released
2005
- Beginner lessons completed
2003
- Programming Basics website started