Front-end Engineering
Module Aims
By the end of module one, students will:
General
- Understand how the internet works and the roles of HTML, CSS, and JS in front end engineering.
- Understand the what, why, and how of code libraries.
- Exhibit comfort using terminal to navigate through directories, adding and moving files
- Demonstrate an ability to research documentation and apply it correctly in their code.
HTML
- Use semantic tags.
- Write well structured markup w/ proper nesting.
- Follow industry style and naming conventions.
- Create forms using correct structure and form elements.
- Craft markup utilizing best practices for accessibility.
CSS
- Understand and leverage cascading styles.
- Know when to use ids and classes, & add multiple classes in markup.
- Write idiomatic css.
- Understand positioning and employ various approaches appropriately.
- Understand and implement responsive layouts.
- Practically apply css animations in user interactions design.
- Understand basic performance issues introduced by CSS and be mindful of those considerations when crafting their CSS.
- Use Dev Tools effectively to debug & read error messages.
Javascript
- Exhibit a solid grasp of syntax, such that syntax does not inhibit student’s progress (the occasional quick reference is fine).
- Use Dev Tools to debug & read error messages, specifically: making use of console to test data and code, isolating and manipulating the HTML and CSS of elements in the DOM.
- Understand scope, and a beginner’s understanding of this binding.
- Strong foundation in accessing data through arrays and objects (In/Out, transform).
- Communicate coding solutions/questions w/ correct terminology.
- Fundamental Code Concepts: variable assignment, functions, arguments/parameters, objects, arrays, data-types, local storage, conditionals/operators, DOM.
- Array prototypes: students know the different methods and use them appropriately in a variety of circumstances.
- Understand how browsers interpret/read code.
- Understand how event bubbling and delegation work, and exhibit that understanding in manipulation of the DOM.
Testing
- Understand the what and why for testing libraries and difference between test runner and assertion library.
- Capable of test driving code with unit tests in mocha/chai.
- Employ cross browser testing regularly throughout development.
- Leverage test failure messages to debug and diagnose issues.
Refactoring
- Refactor large functions into smaller functions.
- Avoid the crutch of global variables.
- Think/Write with an SRP mindset, and employ purposeful naming conventions/naming style in refactoring.
- Lean toward working/functioning first, and not abstracting too early, but can identify opportune times in which to stop and refactor.