INF397 Full Stack Technologies View Schedule Print

Fullstack Principles

Full Stack means understanding and working on all parts of a system.
Electronics Systems require understanding chips & sensors
Cryptographic systems require mathematics and threat modeling
Games - 3d, game theory, networking

This course focuses on Full Stack Web Development.
Which technologies are full stack?
Being Full Stack does NOT mean knowing a set of technologies. It means knowing the layers and the principles by which they operate and connect.
What are the web layers?
There are, basically, four layers: Front-end, Back-end, the Network and DevOps


Can be a static page in a browser, an ajax -, or a mobile app. Your code runs on the user's device with restricted previliages. In all cases, the frontend is the user faceing side of the system. The input/output mechanism of the web application.
Frontend Overview | {{Frontend Frameworks}}


Can be a home pc, data center rack or a virtual container in the cloud. On the backend your code is king. It is where the complex, secret, and long-running tasks should run. The backend is the "heart" of the web application.
Backend Overview | {{Backend Tooling}}


The network connects the front-end, the back-end and the WORLD. The internet is based on the TCP/IP protocol. The web is based on the HTTP protocol. Other important web protocols include: SSL and WebSockets.


DevOps is about setting up your development and production environments, using tools such as source control, build tools and package managment; and automating your processes. It is a the vital glue that helps the application work.
Are there any general full stack principles?
  • Quality
  • Testing
  • Automation
  • Monitoring
  • Staying agile


If you want your code to be easy to write, make it easy to read.
--Uncle Bob


  • respect the code
  • write documentation
  • utilze tools
  • follow standards
  • perform regular code reviews


The art of programming is the art of organizing complexity
--Edsger Dijkstra


automate standard procedures
  • analysis
  • testing
  • generation
  • integration
  • deployment


Beware of bugs in the above code;
I have only proved it correct, not tried it.
--Donald Knuth


  • create automated test suits with unit, integration, acceptence tests
  • ensure changes to the code do not break existing expectations
  • keep the tests and code in sync and together at all times
  • catch problems as early as possible


The number of states 3 JavaScript variables can have is greater than the total number of atoms of the Earth.
--Joe Armstrong


ensure there is sufficient visibility into both the technical and business aspects of the system
technical: timings, throughputs, resource usage, etc
business: visits, sells, funnel interactions, etc

Agile Processes

“The best way to predict the future is to implement it.”
--Alan Kay

Agile Processes

  • make your working units (tasks) optimally small
  • create a short and focused production loop based
  • analyze team & process through monitoring and feedback
  • learn from failures & errors. Fail forward
What are the typical tasks for a full stack developer?
  • Analysing project specific processes and data.
  • Writing code, tests, automation scripts and documentation.
  • Creating monitoring dashboards and alerts for both the application and the underlying infrastructure.
  • Analysing the current state of both the code-base and the running application.
  • Fixing bugs, improving performance and usability.

Course Schedule:

week 1 03.02.2017 History of the web Fullstack Principles Development Processes Agile Processes DevOps Basics Git
week 2 10.02.2017 Frontend Overview Backend Overview Network Overview Testing JavaScript Overview JavaScript Tooling
week 3 17.02.2017 Web Architectures RESTful principles SOLID principles Web Components Continuous Integration
week 4 24.02.2017 Databases basics Using APIs Deployment Automation Monitoring In-class project consultations
week 5 17.03.2017 Project presentations
Final Test
Course Retrospective and Q&A