Oasis Digital

Angular Boot Camp

Master AngularJS Faster

Google's AngularJS is an extremely productive framework for complex “Single Page Apps”. AngularJS can be tough to learn, and you need to learn it well to obtain all its benefits. We can’t make it easy, but we can teach you.

AngularJS Classes, Our Office or Your Site

training room

Our AngularJS courses lasts 3 days, of 7-8 hours per day. The courses are hands-on; less than 2/3rds of the content is lecture.

We offer courses in our office in St. Louis, MO, occasionally in other cities around the US, or at your site.

Two Courses to Choose From

Angular Boot Camp covers introductory and intermediate content. At the end of this class, each student should be able to use AngularJS to make an end-to-end, working application.

Advanced Angular goes much deeper, and is suited to developers already in the midst of building real angular-based applications.

See Us In Action

Why Our Courses?

At Oasis Digital our team of developers uses Angular every day on client projects. In the process of mastering these tools and teaching them to new team members, we have learned to anticipate and answer numerous questions that come up, and to help developers through the challenge of learning quickly.

Unlike online or lecture-style courses, our courses include extensive, hands-on work; we send multiple instructors as needed to ensure a great workshow experience.

Most of our work at Oasis Digital is the construction of complex business applications, so our courses are about complex business applications, not “Hello World”.

Angular Boot Camp is an excellent starting point for corporate teams as well as individual developers.

Proven Results

Since late 2013, we have trained hundreds of developers from dozens of companies – over half from Fortune 500 companies.

Public Training

We offer public training at our office in St. Louis, MO (home of the Gateway Arch ) as well as in San Francisco, CA. Others locations coming soon.

mapPlease sign up now using the links above, or inquire with the form below. When planning your visit, our travel and accommodations page may be helpful.

Cost

For the 3-day Angular Boot Camp, the cost per student is $1500.

For the 3-day Advanced Angular class, the cost per student is $2000.

Corporate On-Site Training

We offer the same training for a group of developers at your site. We can adjust the content to match your environment (particular tools you plan to use with AngularJS) to increase the relevance of the course.

We can train up to 30 students at a time, with multiple instructors to ensure good workshop sessions. We can repeat the course as needed to accommodate larger teams. Please contact us (using the form, email, or phone number below) with questions, or to schedule.

So far we have taught this class from coast to coast in the USA; we are also willing to travel around the world.

Cost

For on-site classes, contact us for pricing. For classes around the US, we offer a flat price inclusive of all travel expenses.

What Do Our Students Say?

“Having more than one instructor and others who have used Angular was beneficial. Hearing real-world experiences is what I like in an on-site course.” -Glenn W.

“Angular Exposure from a skilled developer (not just a preacher).” -Elijah H.

“Great overview, easy-to-understand examples, very knowledgeable instructor who was able to answer just about everything we asked him. Never felt at any point that it was going too fast or too slow. Learned a ton of useful information without feeling overwhelmed.” -Phil J.

Knowledgeable and authoritative instructor. He has an engaging style and presents the material well.” -Joe W.

“The instructor was probably the best I have ever experienced. Deeply knowledgeable about all of the subject matter, able to answer every question (including a handful that he was uncertain about, he was able to derive and demonstrate in short order). Very well spoken.” -Daniel M.

“With a second instructor helping the students, things moved along. … Mixing lab work with lectures. There’s no substitute for hands-on work.” -John S.

“Very knowledgeable instructors.” -Brad S.

“Very knowledgeable and friendly instructors.” -Peter C.

“Very responsive to the needs and questions of the attendees.” -Greg

Instructors

Lead instructors:

Kyle Cordes has worked on web applications since the late 1990s, including both line-of-business and interactive data streaming. Kyle has led numerous projects with a wide variety of web application development tools and libraries, including the holy grail of common code between a web page and backend server.

Bill Odom has been a software designer, developer, or systems architect for over two decades. For the last several years, he’s served as a consultant and senior software developer for Fortune 1000 firms in the Midwest. He's been building web applications across a variety of platforms, tools, and technologies since the earliest days of the web.

Paul Spears joined Oasis Digital several years ago, and was involved from the very beginning of our journey to AngularJS. He has personally taught and mentored numerous new members of our team including (for extra challenge) several waves of interns.

Our assistant instructors are Oasis Digital team members: developers who use AngularJS intensely. Assistant instructors teach some topics and assist with workshops.

We're always eager to talk with potential new instructors - if you have extensive experience with Angular,

Angular Boot Camp Outline

This course covers a wide variety of AngularJS features. First you will learn all the AngularJS basics, then you will build an AngularJS application.

The course is organized approximately as follows; but we often vary the agenda order, or reallocate the time among the topics, to meet student and class needs.

AngularJS Versions Covered

As of early 2015, the course primarily covers AngularJS versions 1.3 and 1.2. Version 1.4 will be included shortly after its release; though few 1.4 features matter for the purpose of learning. We also point out various upcoming features of AngularJS 2.0, with an eye toward preparing your team and project for migration when the time comes.

Day 1 Morning

  • Introduction
    • Class Objectives & Roadmap
    • Prerequisites Review
    • Student Background & Expectations
  • What is a SPA? What is Angular?
    • Single Page Apps vs Conventional Web Applications
    • Why Angular?
    • Where Angular Fits
  • Angular Overview / Tutorial
    • Setup & Installation
    • Templating
    • Two-way Data Binding
    • Controllers
    • Scopes
    • HTTP / XHR
    • Dependency Injection
    • Routing & Multiple Views
    • Custom Filters
    • Event Handlers
    • Intro to Custom Services
    • Preview of Other Major Topics

Day 1 Afternoon

  • Set up a project workspace
    • Installing and Configuring Necessary Tools
    • Creating a Starter Application
    • Adding common features
  • Modules
    • Purpose
    • Advantages
    • Warnings
    • Recommendations
    • Testing with Modules
  • Controllers & Scopes in more depth
    • Side-by-Side Controllers
    • Nested Controllers
    • Testing Controllers
  • Developing & Debugging
    • Recommended Tools
    • Techniques
    • Common Issues
  • Digest Cycle & Watches
    • The "watch"
    • How It Works
    • $apply, $digest, etc.
    • Variations
    • Performance Considerations

Day 2 Morning

  • Router
  • Services, Factories, Providers
    • What are they?
    • Why use them?
    • Constants & Values
    • Services
    • Factories
    • Providers
    • When to use each kind?
    • Testing Services (etc.)

Day 2 Afternoon

  • Promises
    • Concepts & Definitions
    • The Problem with Callbacks
    • More Than Just Async
    • The Promises You Already Know
    • Essentials
    • Q and $q
    • The Deferred Object
    • Chaining Promises
    • Error Handling
    • Route Resolve
    • Testing with Promises

Day 3 Morning

  • Directives
    • Concepts & Definitions
    • Why Directives?
    • Built-In Directives
    • Third-Party Custom Directives
    • Building Custom Directives
    • Reusability
    • Testing Custom Directives

Day 3 Afternoon

  • Automated Testing - in more depth; testing is sometimes presented interleaved with other topics, and sometimes consolidated.
    • Unit Testing with Jasmine and Karma
    • End to end testing with Protractor
  • Additional Topics (as time allows) such as:
    • Form Validation
    • Forms and validation
    • Scope Events
    • Student Requests

We believe this curriculum covers the basics well, and positions students to use AngularJS effectively.

For a much more detailed understanding of the course materials, review an example transcript of Angular Boot Camp from early 2014.

Student Prerequisites

Students should have significant experience with HTML, JavaScript, and jQuery or another DOM manipulation library, ideally by having worked in server-side web development (in Java, JSP, PHP, ASP, etc.) in the past.

Advanced Angular Outline

The Advanced Angular course curriculum varies considerably by student request. We start with the list of potential topics below, and allocate time according to student interest and available instructor expertise. Many of these topics are continuations of the material presented in Angular Boot Camp.

  • Controllers and Scopes
    • Communicating among controllers
    • Manging nested scope complexity
    • Avoiding duplication among controllers
    • "Controller As" in more depth
    • Unit testing controllers
  • Templates and Expressions
    • Template caching
    • The merits of in-line versus other templates
    • plain HTML versus Jade or other syntax for templates
  • Filters
    • Building complex filters, parameterized filters
    • Building efficient filters
    • Filters and ngSanitize, $sanitize
    • Unit testing filters
  • Forms
    • Built-in validation
    • Custom validation
    • asynchronous validation, including server-side validation "pre-check"
    • debounce and other model options
    • Building Angular forms programmatically
    • Testing forms
  • Routing
    • Avoiding hashbang URLs, including coverage of (but not development of) the server-side considerations to accommodate this.
    • routing events
    • Replacing ngRoute with ui-router
    • Application state management with ui-router
    • Testing routes
  • Providers (Values, Services, Factories, and Providers)
    • Real-world examples of when to use .provider()
    • Decorators, for example decorating $http to handle server-side errors uniformly
    • Creating services to model backend APIs
    • Unit testing providers
  • Promises
    • Embracing a promise-oriented application architecture
    • Using promises to handle uncertainty (vs just async operations)
    • Using $q.reject() (vs plain JS throw)
    • Dealing with non-Angular promises
  • Directives
    • Overriding / augmenting existing elements
    • When and how to use ngModel
    • ngModelController ($setViewValue, $render, $modelValue, $setValidity, etc.):
    • Using $parsers, $formatters
    • Legitimate uses of shared and inherited scopes (that is, when not to use isolate scope)
    • How shared, inherited, and isolate scopes interact
    • transclusion
    • Building directives akin to Angular's own ng-repeat, ng-if, etc. ($compile service)
    • How multiple directives work when applied to the same element
    • Enhancing an element directive with attribute directives
    • $observe (vs $watch) for attributes, and why
    • Extending existing directives
    • Building extensible directives
    • Building configurable directives (like those in AngularUI)
    • Communicating among directives (and whether or not that's a good idea)
    • require directive definition property
    • Multilevel directives (like tab and tab panes, wizard and wizard steps)
    • Unit testing directives
  • AngularJS and CSS
    • General considerations
    • ng-class, ng-style directives
    • Classes applied by Angular
    • Building stylable directives
  • Performance Considerations
    • Minimizing active watches
    • Using function form of $watch for more surgical watches
    • Lazy loading techniques
    • ng-repeat issues
    • Using track by with ng-repeat
    • ng-if (and ng-switch) vs ng-hide / ng-show
    • Minimizing, optimizing DOM manipulation
    • One-time binding -- https://docs.angularjs.org/guide/expression
    • Pagination, infinite scrolling
  • Security Considerations
    • CSP / ngCsp (Content Security Policy)
    • XSRF
    • $sce
    • Authentication strategies
    • Authorization / Access Control strategies
    • CORS, JSONP, XSRF (including use cases and problems)
  • Error Handling
    • Using JavaScript exception handling try/catch/throw/finally with Angular
    • HTTP error detection and recovery with interceptors
    • Promises -- catch/finally and $q.reject()
  • Communicating with Servers
    • HTTP interceptors,HTTP request/response transformations
    • Custom HTTP headers
    • Caching with $cacheFactory (and alternatives)
    • Using WebSockets with Angular
  • Application Structure
    • Application structures, especially for larger apps
    • Considerations for large applications
    • Combining multiple SPAs into a larger solution
    • Multiple AngularJS apps on a single page
    • Communicating across multiple AngularJS apps
  • Integration
    • 3rd-party (and often de facto standard) libraries
    • Using Angular with non-Angular libraries (like Lo-Dash / UnderscoreJS, moment.js)
    • When you should use jQuery, and how to do so effectively
    • Integrating Angular apps into existing apps, sites
    • Combining Angular with legacy code - wrapping existing JS objects in services
  • many more topics!

Student Prerequisites

To be ready for the advanced course, students should have some experience writing nontrivial AngularJS applications. For example, they might have attended our Angular Boot Camp, then worked on a project for a few months. Or they might have learned AngularJS on their own, started building a real application, and reached a level of experience where they are ready for advanced material.

Equipment (for either class)

Please bring:

  • Laptop (Windows, Linux, or Mac).
  • Chrome (web browser). AngularJS works well with all major browser, but we use the Chrome debugging tools and a Chrome add-in for AngularJS (Batarang) in the course.
  • Text editor or JavaScript-capable IDE.

FAQs

Q: How strictly does the course stick to a set curriculum?
A: We have a set of topics which we always cover, but we also readily adjust the content to match student needs and student questions. If you have a tough AngularJS question, it is likely that one of the instructors will have a helpful answer.
Q: Does the course cover server-side data services?
A: We touch briefly on service API design for easy interoperation with Angular, but development of such services doesn't fit in this very busy three days. We are considering adding a course about those topics, and Oasis Digital developers are available to consult or assist with that outside the scope of the class.
Q: Does the course cover NodeJS?
A: We discuss Node, and assist studuents in installing Node; Node is used in much of the development tooling for Angular and other JavaScript frameworks. Students write a very small Node program for a simple build process, but development of Node services is beyond the scope of the course.
Q: Does the course cover HTML and CSS?
A: Students should already be familar with HTML and CSS, but we teach a few basics as needed, in the context of the HTML DOM which Angular manipulates.

Public Class Dates

Angular Boot Camp(over 25 classes)St. Louis and elsewherecompleted
Angular Boot CampMarch 11-13, 2015San FransciscoRegister
Angular Boot CampMarch 25-27, 2015St. Louis, MORegister
Advanced AngularApril 13-15, 2015St. Louis, MORegister
Angular Boot CampMay 5-7, 2015San FransciscoRegister
Angular Boot CampMay 25-27, 2015St. Louis, MORegister

Special offer for selected St. Louis classes: includes a ticket to a St. Louis Cardinals game at Busch Stadium, one evening after class!

Contact Us

Oasis Digital Solutions Inc.
St. Louis, MO 63131-1863 USA
+1.636.489.2750 (fax)

Request Training Information

Use this form to request details regarding upcoming training dates and to be added to our mailing list.

    Our training mailing list will inform you of any upcoming course dates.