Web Application Development

Learn much more than just programming

Coder

Programming

Technical skill is the start


Languages

  • Ruby, JavaScript
  • Html, Haml
  • Css, Sass

Web technologies

  • Client/Server
  • cloud services
  • Ip/dns/http

Frameworks

  • Rails
  • Bootstrap
  • Rspec

Teamwork

Together we get things done


Roles

  • Frontend
  • Backend
  • Designer etc

Source Control

  • Git basics
  • Github
  • Branches

Workflow

  • Distributed flow
  • Test Driven
  • Continuous Deployment
Together
Application

Excecution

Putting it all together in real applications


Planning

  • UML
  • Brainstorming
  • UI Design

Development

  • TDD frameworks
  • Test cycles
  • CI testing

Deployment

  • Distributed flow
  • Test Driven
  • Continuous
  •  

    Daily Schedule

    Lesson
    Break
  • 1.5
    Theory Lesson
    9:00 - 10:30
    30
  • 1.5
    Student Presentations
    11:00 - 12:30
    75
  • 1.0
    Work assignments, tutored
    13:45 - 14:45
    15
  • 1.0
    Group work, explanations
    15:00 - 16:00
    30
  • 1.0
    Work assignments, tutored
    16:30 - 17:30
    60
  • 1.0
    Independent work
    evening
     
Schedule

Modules

Every two weeks we cover the fundamental topics, while going deeper with each iteration. Use hover or click on the topics to get more info

Introduction

Initial theory lessons happen in small groups where you will be able to ask questions immediately. You will be building useful apps for real people throughout the course.

Basic box model Boxes in boxes is a simple way to think about html. You'll learn a little about it's initial shortcomings and current standards.
We introduce Haml as a shorter, more concise and error free way of writing correct html.
Also you'll learn about the type of boxes and how they can be arranged, in other words the connection to css.

Style basics If we think of html elements as boxes, then we can think of css as labels on these boxes. The label describes the box and importantly there is a finite number of labels.
This is the basic distinction between content and style. Over the course you will learn more and more about the myriad of ways css can be used. Similar to Haml, Sass is a shorthand and more semantic (but equivalent) way of writing css.

Object model We are physical beings, and are well trained to think in terms of innate "things" having given properties. In one of the easiest to understand ways of programming we call the things object and their properties attributes.
You will learn basic concepts of object oriented programming in Ruby, which is very thorough in it's approach to treating everything as an object, and the concept of class. We will see how procedural code (think cooking recipes) slot nicely into this model as methods.

Roles Software Development is all about teamwork. Even tools have got much better, so have timetables shrunk. In any meaningful project we rely on other people's strengths to achieve a goal. We will talk about the different roles and skills people have, not just to see what a software developer is, but also to open the scope of possibilities for your future career. People are best at what they enjoy and a large part of the course is finding out what you are good at.
Also projects are heavily dependent on often open source libraries, tools and frameworks. The first of which are your os, editor, command-line and browser.

Object table model SQL databases are a ubiquitous, well understood and efficient way to store data. The standard way of storing objects, maps classes to a tables and rows to objects.
You will learn how this object table model is implemented in rails, or rather active record and try out the tools that come with it. We also talk a little bit about alternatives.

Testing as assurance Testing has been more of a nice idea in software engineering for a long time, before finally, and especially in the ruby community, becoming a reality.
There really is no other way to know that the software we write does what we intend it to do, as you will be able to experience yourself very quickly.
You will learn different types of testing and we will touch on frameworks and test integration.

Communication

You will be assigned a younger student to whom you’ll explain the topic. You will notice that to achieve the clarity needed to express yourself, you will need to study yourself.

Dynamic html generation Here you learn a little more about the DOM and and how it can be used to create simple dynamic pages, eg endless scrolling.
We use existing tools and server side responses to generate html on the client.

Semantic css / susy Reviewing bootstrap html code we will see that it does not adhere to the content/style separation we learned. To do it right, we introduce the concept of semantic css. This gives meaningful names to our styles and lets them build ourselves.
You'll earn Susy and how to build your own grid system.

Concurrency and closures Concurrency, several or even many things happening at the same time, has been a difficult topic up to quite recently. You will learn better concurrency models like the actor model and channels. Especially actors are easy to understand and reason about since they just extend the object model to "active" objects.
When a piece of code is passed of to another part of the program to be executed later, one talk of closures, and we will see the somewhat different light this shed on variable lifetime.

Advanced git After having gained some hands on experience, you will understand the problems better and so we will go into more advanced usage of git.
This will give you a glimpse into how large project are run, both in the open source world and in companies. After the theory you may choose to deepen this part or not, since in larger projects this is usually a separate role.

Searching Going deeper into how to find objects in the database we learn about scopes, some simple sql clauses and how to actually use sql in queries.
You will learn the tools to build complex search interfaces and use pagination on the results.

Continuous testing The next step will be to integrate our test fully into our workflow. This simply means that no work should be accepted before adequate test are written and fixing bugs should always start by writing test.
To make the should a reality we make testing automatic both for the developer, and for the current state of the committed source (in git). We will see the tools needed to alert us directly of any shortcomings.

Presentation

You will give 2 presentations on your chosen topics (group and solo). Presentations are a practical demonstration of the work you will have completed, and will provide you further insight for future learning.

Dom, the api for Html The Document Object Model ( DOM ) gives us a programmatic interface to the rendered content. While html describes the static structure and a transport mechanism, the dom gives us a way to programmatically create, update and delete arbitrary nodes.
This is the foundation for the modern web and client side applications.

Bootstrap / Frameworks As in other language, css has libraries and frameworks that we can reuse. A modern framework like Bootstrap or Foundation will not only make the basic html "look good".
You will also learn about standard elements, eg modern navigation, menus, dropdowns, callouts, buttons and many more. you'll see how a grid system works and how eg bootstrap solves the multi-device issue.

Associations and structures Objects are great at modeling single entities, but in programs we need to model large system, invariably containing many objects.
You will learn about different data structures and their different properties. Like how they are accessed, how they store data and which are good for what purpose.
We will theoretically brush on O(n) and practically experiment with access and iteration.

Git basics The sharing of code has always been very important but never as easy and efficient as today, with git. Even more, online sharing sites like github.com fuel open source community by sharing publicly and across projects.
You'll learn the basic workflow and will practice this in your own projects.

Associations In the same way we need structures for programming, we need associations in databases. You'll learn how associations are implemented and how they relate to the structures we have learned in the programming sessions.
We see how associations are implemented as in rails by using metaprogramming techniques to create a very intuitive api.

Rspec framework In the second module we will concentrate on exploring and using RSpec, a commonly used testing framework. We will be writing different tests and use supporting tools for creating mock object, managing database "cleanliness" and interacting with the application as if our test were a user.

Mastery

You can choose your final assignment according to your interests and previous work. ​You will work in a group on a final project to show mastery of the topic.

Client side applications Going further into client side api's and cross compilation we examine languages that can be used instead of using JavaScript directly, specifically coffee script and opal
We will look at evolving tools to write client side applications, like volt , clearwater and webix You will also have an opportunity to look at pure JavaScript frameworks like Angular, Ember, and Backbone.

Mobile first, breakpoints While learning about Bootstrap, we touched on the multi-device concept and now go deeper into mobile first Development. You'll learn what Breakpoints are and how to implement one design that can be viewed on multiple devices.
Other languages Ruby is off course just one of many languages and since by the seventh week you will have learned enough about it, we can start comparing it to other languages. Some of which are similar, some strange, some very different.
Off course we will also cover JavaScript basics and ways to avoid some of JavaScripts strangeness by using languages that compile to JavaScript.
You may also choose to learn a completely different language at this point, eg Go

Communication skills Off course code is by far not the only way developers communicate and so we will go into the importance of both communicating precisely both in documentation and presentation.
We will practice both areas and learn some modeling visualization on the way.
Also we debunk the common misconception that open source means that ownership is not important. This is especially important when wanting to collaborate in open source projects, which you have a chance to.

Performance, NoSql We briefly look at database and application performance. The ways to scale, optimize and benchmark. This is an advanced topic, but you will learn to understand the issues.
Finally we will explore the alternatives a little, so called NoSql, the concept of graph, object or document databases and possible uses.

Client side testing Client side testing, like client side applications, is still quite young. But progress has been made and especially with the ruby tools we will see how.
At the same time we will go into more depth on testing JavaScript enhanced web sites like the ones we will be building in this last module of the course.

Teachers

Web Dev Camp's teachers have decades of experience and started the camp in an endeavor to increase diversity in tech and change the way we learn.

Torsten

Torsten Ruger

Course Director / Teacher

Torsten Ruger

Course Director / Teacher

Torsten has worked for 25 years as a professional web programmer before starting Web Dev Camp in an endeavor to share his experience.
Torsten has programmed in many different languages, used many different standards, led teams and architected systems, but always found that learning and working with people was what he enjoyed most about his profession.


Sherif

Sherif Abushadi

Director / Teacher

Sherif Abushadi

Director / Teacher

Sherif has been teaching developers since 2001. For the last four years he has been teaching at Dev Bootcamp in San Francisco.
He brought his experience to bear in building the school, its course and curriculum.
He also teaches part-time at Web Dev Camp


Raisa

Raisa Kaipainen

Camp director

Raisa Kaipainen

Camp Director

Raisa has been running workshops and courses for 25 years. She is in charge of organizing and running the camp.
Raisa has excellent people skills and is always a good person to talk to or come to for advice.


Next courses Sep 18 - Nov 20