Hi all:

Here’s the list of videos from Orbital’s Liftoff Day 2.  Once you’re assigned to peer teams for grading and feedback in Orbital, please take note of the time offset in the Ignition video so that your peer teams can be reminded of your idea.  If your idea changes from your Ignition presentation, no worries; make another 1-minute video response to the Ignition video and post it in YouTube.

Git (Laurence, BillPin):

Getting Fired Up (James and Jeffrey, Silicon Straits and Golden Gate):

eCommerce (Alvin, Paypal):

<deleted by request\>

Presentation Skills (Davidson, Google):

Orbital Programme Structure (Wee Sun, SoC):

Ignition (Orbital students, SoC):

Hi all:

Here’s the list of videos from Orbital Day 1.  Using this technology is new to us, so let’s hope all turns out ok.  Do ask us questions so that we can answer them for you — we want all of you to be able to complete these basic lessons so that you can get through completing a basic web application and fielding it on Google App Engine itself.

Design Thinking (Wee Sun, SoC):

Python (Sivagar, Google):

HTML / CSS / Javascript (Janani, Google):

Part 1

Part 2

Google App Engine (Wee Sun, SoC)

20130

We covered Python this morning, just the basics.  You should be able to recognize python code now (it doesn’t have semicolons and depends on indentation to recognize blocks).

We also covered HTML / CSS and Javascript in the afternoon.  These are the basic, common bullding blocks for everything on the web (including webpages you see on your smartphones).  You can try looking at the source of the webpages you see and feeling good that you have some knowledge of what that is and what it does.  Most of the HTML you see is generated programmatically, by servers that run software that replies HTML to your web browser.

CSS helps to interpret how that HTML looks like in your browsers.  We saw by tinkering with the CSS, the webpage can look very different.  One way to think of it is that the HTML specifies the page’s logical structure and that the CSS specifies what that structure looks like (its formatting).  Javascript is a programming language in its own right (similar to Python), but which all web browsers know how to execute and run right inside the browser.  It’s usually used to give dynamic effects on the webpage, so you’ll usually see that you need to load some javascript library to achieve some interesting effect on a webpage (e.g., animation, sorting, dynamic styling).

Finally we covered Google App Engine, the hardest part of today’s work.  Here we did the job of generating HTML programmatically in response to requests from your clicks to “run” the program.  The HTML is generated from HTML templates where some values are filled in by the app engine’s python code’s.  In particular, you are using python code (e.g., giftbook.py) to specify classes and handlers for those classes.  The responses that the handlers generate are HTML webpages (e.g., wishlist.html) that have placeholders for the Jinja2 template language to insert the appropriate values from Python.

We don’t expect you to get it all on the first try, but take a look through the code to see what you can understand and what you don’t.  We know it’s difficult to ask questions on what you don’t know — because you don’t know what you don’t know — but try your best.  We’d love for you to ask at least 1 question in our Askbot forum so that we can try to answer your questions offline.

Impromptu installation video for the prerequisites needed for Orbital.

This first one is for Mac users.

The below second one is for Windows users (note the long skippable lull between ~14:00 38:00).

See you soon on Monday at Liftoff!

Hope you did well on your final exams and are ready to begin Orbital with our Liftoff workshop on Monday and Tuesday next week.
As preparation we need to you do the following few things (may take 1 or 2 hours to do):

  1. [10 minutes] You should plan on fully attending both days of Orbital’s Liftoff workshop.  If you cannot attend, please let A/P Lee Wee Sun <leews@comp.nus.edu.sg> so that we can approve your request for leave from this mandatory event.
  2. [10 minutes] As part of Liftoff (and Orbital in general), we will be using third-party websites and links to give you pointers to resources where you can learn and practice hacking skills yourself. SoC and NUS does not explicitly endorse these websites but we think the global community has developed very useful resources for one to learn many hacking skills on your own.

    For starters, we would ask that you register yourselves on Codecademy.com.  We’ll be using this online resource to teach Python, HTML/CSS and Javascript.  Go to http://www.codecademy.com/ and create an account for yourself, and poke around if you have time.

  3. Installation and testing of software is one of the potentially difficult things that you will have to do in Orbital.  Sometimes installation can be straightforward, but occasionally instructions for certain platforms (Linux in particular) can be fraught with difficulties. Please attempt to install the following on your laptop computer to enable us to conduct the workshop more efficiently:
  • [30 minutes] Python 2.7: You can find it at http://www.python.org/download/releases/2.7.2/
  • [30 minutes] Google App Engine SDK for Python: You can find it at https://developers.google.com/appengine/downloads. It is likely to be better to install python 2.7 before installing Google App Engine to allow the install script to detect python 2.7 for you.
  • [15 minutes] A good text editor.  You may have and/or used “vim” before.  That would be fine.  If you haven’t used a text editor much, it’s a good idea to pick one that you will become an expert in.  NUS Hackers has recommended Sublime Text:http://www.sublimetext.com/
  • [30 minutes] Git: Sign up for Github.com if you don’t already have an account.
    Linux users, install git the way you normally install stuff (yum, apt-get)
    Mac users, install XCode, under preferences, downloads, install command line tools as well
    Windows users, install the latest version of git from here (http://code.google.com/p/msysgit/downloads/list?q=full+installer+official+git)

    After that generate the SSH Keys and link it to your Github accounts by following the guide over at https://help.github.com/articles/generating-ssh-keys#platform-windows

    You may also find it useful to install a git client for your particular operating system/platform.  Some choices are available here: http://git-scm.com/downloads/guis . You may want to check reviews on the web to see which (free) client is best for you.  Some default choices are SourceTree and the GitHub client (just for your information: GitHub and Git are not the same).

Students should maintain

  • A project journal where you record the work periods and work done weekly. It is okay to do more on some weeks and less on others, but to get course credit for CS3108B, the total number of work hours must be at least 130.
  • A project wiki where the project documentation is kept.
  • Both of these are available on IVLE project.

We will follow a simplified agile methodology (http://en.wikipedia.org/wiki/Agile_software_development) for Orbital. The main part of the methodology we will use is as follows:

  • We use iterative development where each iteration (sprint) is done over around 4 weeks (2 iterations over the entire Orbital project).
  • For each sprint, a small subset of features is specified using user stories (http://en.wikipedia.org/wiki/User_story) and accepted (http://www.extremeprogramming.org/rules/functionaltests.html) by the peer evaluator at the end of the iteration.
    • For Orbital, we will not use any formal specification method. User stories should be done in natural language, but your peer evaluators must be able to understand the stories clearly. We will also not use any automated testing. The peer evaluators do acceptance testing manually until they are satisfied that it meets the requirements based on their understanding of the user stories. You will learn more about specifying requirements and testing (including unit and regression tests) in your software engineering courses.

Each group will act as peer evaluators for three other groups. If you are traveling or have other activities that do not allow you to meet the peer evaluation schedule, you need to discuss alternative dates with your peer evaluation groups. If your evaluation dates are after the scheduled dates, you need to get permission of the instructors for the alternative dates.
Passing requirements are described at http://orbital.comp.nus.edu.sg/?p=45, but will be moderated by the instructors.


Week 1 (13 – 19 May): 

Monday & Tuesday: Liftoff Workshop

  • Work on mockup and requirements.
  • Update journal.

Week 2 (20 May – 26 May):

  • Mission control (optional).
  • Work on mockup and requirements.
  • Update journal.

Week 3 (27 May – 02 Jun):

Submission Week

  • Mission control (optional).
  • Update journal.

Monday: Submit

  • Mockup. This can be a powerpoint mockup with simple interaction, or more sophisticated mockup on other platforms if you wish.
  • A 3 minute video describing the aims of the project with the help of the mockup.
  • At least 3 user stories describing at least 3 features to be implemented in the sprint over the next 4 weeks.

Tuesday to Friday:

  • If necessary, clarify the aim of your project and the features to be implemented with your peer evaluators.
  • Act as a peer evaluator. If necessary, clarify the projects you are evaluating with the groups you are evaluating.

Week 4 (03 Jun – 09 Jun):

Monday: Submit the updated version of the user stories after feedback from the peer evaluators. This forms the requirements that you are implementing in the sprint over the next 4 weeks.

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 5 (10 Jun – 16 Jun):

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 6 (17 Jun – 23 Jun):

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 7 (24 Jun – 30 Jun):

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 8 (01 Jul – 07 Jul):

Submission Week

  • Mission control (optional).
  • Update journal.

Monday: Submit

  • Prototype (url) with the features specified in Week 4 completed.
  • A 3 minute video describing the work done with the help of the prototype.
  • User stories for the remaining features that you wish to implement.

Tuesday to Friday:

  • Act as beta tester to see if the features of the projects you are evaluating can be accepted. Give feedback on any bugs found, or if the requirement is not met. This can be done through the evaluation form, or if necessary through face-to-face meeting or through videoconferencing.
  • If necessary, clarify the features to be implemented in the next sprint with your peer evaluators.
  • Act as a peer evaluator and give feedback on the features that are implementing in the next sprint by the groups you are evaluating.

Week 9 (08 Jul – 14 Jul):

Monday: Submit the updated version of the user stories after feedback from the peer evaluators. This forms the requirements that you are implementing in the sprint over the next weeks.

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 10 (15 Jul – 21 Jul):

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 11 (22 Jul – 28 Jul):

  • Mission control (optional).
  • Implement features.
  • Update journal.

Week 12 (29 Jul – 04 Aug):

Submission Week

  • Mission control (optional).
  • Update journal.

Monday: Submit

  • Prototype (url) with all features specified completed.
  • A 5 minute video describing the entire project with the help of the prototype.

Tuesday to Friday:

  • Act as beta tester to see if the feature of the projects you are evaluating can be accepted. Give feedback on any bugs found, or if the requirement is not met.
  • If necessary, discuss your project with your peer evaluators.

Friday:

  • Submit final feedback on the project you are evaluating.
  • Submit your reflection on your project after receiving the final feedback from your peer evaluators.

Week 13 (Sem I Week 0: 05 Aug – 11 Aug):

<No activities; Work for Orbital should be complete>

Week 14 (Sem I Week 1: 12 Aug – 18 Aug):

<No activities; Work for Orbital should be complete>

Week 15 (Sem I Week 2: 19 Aug – 25 Aug):

Splashdown (tentatively Wed 21 August, evening)

 

The schedule for the two-day Liftoff workshop is given below. This schedule is still tentative and subject to change. The workshop is compulsory for those doing the program unless you have prior permission to be excused. We will try to put as much of the material online as possible for your reference.

The aims of the workshop are
– To introduce you to the platform, tools and methods that you can use for the program. This is mostly familiarization and is enough only to get you started. You should expect to self-learn more as you do your project.
– To allow you to find a partner if you have not already done so. You may use http://orbitalpartner.appspot.com/ to help you find a partner.
– To allow you to find a mentor if you wish to be mentored.

Please bring your own laptop (or at least have a shared laptop with your partner). Let us know if you are unable to do that.

Location: SR1

Day 1 (13 May)

  • 9:00-9:15 Opening
  • 9:15-10:45 Design Thinking (LeeWS)
  • 10:45-12:30 Python (Google)
  • 12:30-13:00 Lunch / Partner finding (on your own)
  • 13:00-15:00 CSS/HTML/Javascript (Google)
  • 15:00-16:30 Google App Engine (LeeWS)
  • 16:30-18:00 Templates (KanMY)

Day 2 (14 May)

  • 9:00-10:00 Git and collaboration tools (TBD)
  • 10:00-11:00 Talks by Silicon Straits and GoldenGate (TBD)
  • 11:00-11.30 ECommerce (PayPal)
  • 11:30-12:00 How to present your ideas (Google)
  • 12-13 Lunch (On your own. You should complete your partner finding after this.)
  • 13-16:30 Launch Window (Hackathon). Ideally you work on the idea that you’d like to do in the program, but you are not required to continue on the same idea.
  • 16:30-17:00 Briefing on Orbital schedule and peer grading (LeeWS/KanMY)
  • 17:00-18:30 Ignition (1 minute madness). Present what you did in Launch Window, elevator pitch style.
  • 18.30-19:00 Speed mentor matching (Only for those looking to be mentored)