The Course

  • 12 weeks of intensive group learning, including personal mentoring, targeting immediate employment.
  • No prior knowledge required (a technological background or any prograrmming experience is a plus).
  • Pilot/beta group starts December 17, 2012 with 4 students.
  • First group starts February 17, 2013 with 8-12 Students.

Main Concepts

  • Learning through doing. Software development is a craft. All subjects, even theoretical ones, will include hands-on exercises, to be submitted through a unique system based on git and github:
    • Hundreds of 5-15 minute tasks, puzzles, and questions
    • ~20 mini projects, focused on step-by-step implementation, taking 1-2 hours each.
    • 7 full projects requiring a day or two to complete, from idea, through design to implementation.
    • A final project (~10 work days)
  • Learn How To Learn. We will teach you how to learn faster, find the best resources, and make the most of of them.

  • Multi-disciplinary. Web development is multi-layered. Good developers should understand the different aspects of a software project. We are teaching the full stack, focusing on important concepts and methodologies that can be applied in different contexts.

  • Extreme Programming. Writing code is not enough. Pair Programming, Team communication, testing, documenting, using source control and issue tracking systems, proactive relationships with your customer. We love mockups. You will need to create some and present your project plan to the class, explain why it would work, collect feedback, publish a spec, allocate and commit to a detailed time estimate (!) and implement it in a short time period.

  • Tools. Know them. Master them. From bash, ssh and grep, to LESS, ipython, pydev and selenium.

  • Analytic Approach. Learning through discovering, dissecting and comparing technologies, apps and web phenomena. Students will hand in ~5 analytic papers covering sites, apps, modules, etc. You will peer review your friends' work, and give lightning talks to the class.

  • "A journey of a thousand miles begins with a single step" (Lao Tse) . We don't prepare you (just) to pass the interview. We want to give you the kickstart and foundation needed to be a great software developer.

  • Fundamental concepts of Software Development. Discover the beauty of algorithms by solving code puzzles.

  • Keep it Simple :-)

Curriculum

Timeline

  • The training is divided into 6 two-week Sprints, with an additional Sprint working on the final project after the course.
  • The first month will include mostly time in the classroom, going through lectures, group study and exercises. The second month will be taught using a flipped classroom methodology, and the third month will mostly include guided self study and work on a personal final project.

Main Content Paths

Three threads leads us through the course:

  • "From One Bit To Angry Birds": Mastering Web Technologies; Data > Information > Knowledge: Data representation and serialization, HTTP, HTML, CSS, REST, Google App Engine, Social APIs
  • Programming: Python, Javascript, Open Source Ecosphere, Code Challenges
  • Extreme Programming: Pair Programming, Test Driven Development, git, Agile Project Life Cycle

Sprint 0: Programming with Python, Understanding Data

  • Programming basics: from data types, variables, and functions to classes, modules and the standard library
  • ipython, virtualenv, and the python ecosystem
  • Practicing Best Practices: Keeping it simple, writing tests and documentation, logging.
  • Project: Well-documented python module or app, TDD style.
  • Data > Information > Knowledge: bits, unicode, json
  • TCP/IP

Sprint 1: HTTP, HTML and Server Side Development

  • The Digital Revolution and Internet technologies
  • Web history, Present and Future
    • HTTP
    • Structural HTML (Self Study)
    • CSS (Self Study) and Twitter Bootstrap; Responsive web design
    • Project: building and deploying a simple static website using git and github
  • Google App Engine: Tools and webapp2
    • Using NDB and templates, MVC style.
    • Data Modeling on a non-relational db
    • Offline operations with Task Queues
    • Project: NoSQL Server Side Application

Sprint 2: Front-End Development

  • Chrome developer tools and Google Pagespeed
  • Guided self study: Javascript and jQuery
  • Canvas; Web sockets
  • Project: Single Page App

Sprint 3: Plugging Into the Web Ecosphere

  • From embedding to JS APIS: Youtube, Google Analytics and Google maps.
  • REST: RSS, flickr, twitter, Google Data APIs
  • Security: Server (user data) and client (XSS, CSRF)
  • User Profiles, OAuth, Facebook Login
  • Project: Facebook app / web mashup

Sprint 4: The Open Source Toolset

  • Django: Batteries included. Modeling relational data, Building admin interfaces.
  • Linux theory and practice: distributions, package repositories, ssh, nginx and gunicorn.
  • Automatic deployment with Fabric
  • Automating testing with Selenium; Simple load and performance testing.
  • CSS preprocessing
  • Project: contributing to an open source project
  • Final Project part 1/3: From ideas to mockups

Sprint 5: Going deep.

  • Explore advanced topics through guided self study and practice, choose one:
    • Building jQuery plugins; Coffeescript or dart; AngularJS, d3.js or processing
    • Optimizing, caching; scaling; mongodb
    • html5 mobile apps
    • html video and audio
    • Async servers: tornado (or node.js)
    • Anything else, or just give some more love to an open source project
  • Project: wildcard
  • Final Project part 2/3: Design, Code, peer-review

Grand Finale: Presentations and Intrerviews

  • Final Project part 3/3: Presentation and feedback collection
  • Meet the industry: guest presentations by startups and web firms.
  • Some more guest presentations: Search Engine Marketing, Developing for Android and other topics (subjects may vary).
  • Beyond FizzBuzz