Skip to content
In-browser, real time code editor intended for early programming education
CSS JavaScript HTML Other
Find file
Pull request Compare This branch is 11 commits ahead, 5 commits behind firstbytes:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
conf
models
public
routes
scripts
scss
services
test
views
.bowerrc
.gitignore
Gemfile
Gemfile.lock
Gruntfile.js
LICENSE.txt
README.md
app.js
bower.json
config.rb
dev.sh
package.json

README.md

First Bytes Society

This is the early stages of the First Bytes Society's web based programming education environment. It is based on the work of many excellent people and projects that preceeded it, like _why's Hackety Hack, Khan Academy's Computer Programming Coursework, John Resig's ProcessingJS, and Codecademy, to name a few.

The First Bytes Society App gets right down to business by immersing the student in legible code from the beginning and encouraing exploration as a means of accidentally learning programming.

Manifesto

Don't be "right", be the hook

Traditional CS curriculum focuses on teaching things the "right" way. These approaches may start a proper or marketable language, start with the fundamentals (abstraction, encapsulation), dive into specifics (int vs. float vs. unsigned int), push the proper tools, and on and on. If someone had to learn all of the "right" ways of programming before they dove in, we would never have software.

The fact of the matter is most of software people had an initial hook that opened their minds to the potential of programming in a real and impactful way. They usually aren't glamorous or ideal but they get the gears going. It may have been programming on a TI-83 calculator instead of actually doing math homework, or exploring BASIC on an Atari or even editing a website. First Bytes Society is first and foremost the hook. The other stuff will come later.

Code early and often

Get students looking at code immediately. Immerse them in it. Promote exploration into the code by providing easy ways for students to manipulate code and see the impact of their edits immediately.

Provide quick feedback channels

Banging your head against a table because you can't figure out why your code isn't running is frustrating for anyone, let alone a beginner. Frustation is detrimental to excitement. Excitement and motivation are required to learn programming. Limit frustration for the student by providing great feedback channels. Provide easy docs, great error feedback, provide easy access to mentors via chat, etc.

Encourage looking over the shoulder

Build upon the ideas that make the open source community so great. Promote sharing code, work, and stories from day one. Inform students they should use their peers work to help them. Make it easy for students to share their work with others in the community. Make it easy to find other's work. This isn't your typical classroom environment. Copying is encouraged!

Be the megaphone

The only thing more satisfying than seeing your code work, is seeing others use your code. Provide a platform that makes it easy for students to share their finished projects with friends and peers. Not only should this be motivating to the student, but hopefully it will produce a domino effect.

Development

Installation

Requrements (older versions may work but have not been tested)

To get a local version of First Bytes up and running:

git clone git@github.com:firstbytes/firstbytes.git
cd firstbytes
npm install
bower install
grunt

From here on, just running grunt from this directory will start up the app.

Testing

Tests are built using nodeunit (I know, we're soo uncool). The tests are wired into grunt. You can run them via the following command:

grunt nodeunit

Contributing

First Bytes Society App is open source under the MIT license. First Bytes will only be successful if the open source community rallies behind it. To contribute, please fork the repository, work on a topic branch, and submit open a pull request via GitHub.

Having said that, the project is still very early on in development and may change rapidly. Before diving deep into anything, please open an issue outling the work you'd like to do to make sure it doesn't overlap with the work of others or won't soon be irrelevant. We hope to open up our Trello board soon which is where most of the dev roadmap and feature suggestions will be mulled over.

Something went wrong with that request. Please try again.