Technical skill is the start
Learn much more than just programming
Technical skill is the start
Together we get things done
Putting it all together in real applications
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.
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.
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 (
) 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.
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
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.
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.