About
The Programming Basics website was created by Dr. Ming-Yee Iu. 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
- Explore the difficulty of creating a rough French translation of the website
- Look at the internationalization of error messages and i/o
- Possibly add an extra credit exercise to the loops section?
- Start working on intermediate lessons
- More complex code editor with debugger
- html5 version of the website? Mobile phone apps?
Release History
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