DevRise Coding School Curriculum - Frontend
DevRise Coding School Curriculum - Frontend
Engineering
Overview
Frontend engineering is a course that offers students 90% practical and 10%
theoretical learning, giving students the ability to learn real-life skills that are
marketable in today’s world. An individual who completes the program in Frontend
Engineering would be able to :
● Develop pixel-perfect website layouts using HTML and CSS.
● Build responsive web UIs with Flexbox and Grid.
● Build interactive websites using JavaScript.
● Fully comfortable building with either React, Vue, Gatsby, ChackraUI, or any JavaScript
UI libraries.
● Write clean codes and document processes.
● Work comfortably with other team members both locally and remotely via Git.
● Able to deploy Frontend apps to several web hosting services like Netlfiy, AWS, etc.
● Comfortable working with backend engineers.
Month ONE
Objective:
Orientation Month. At the end of this month, you would have a full
understanding of the scope and structure of this training, get introduced to
programming languages, and learn about tools of the trade.
➔ What is programming?
➔ Types of programming languages
➔ Important Programming Concepts (definitions)
◆ Data Structures,
◆ Concurrency,
◆ Big O Notation,
◆ Recursion
◆ Loops
◆ Array
◆ Parallelism
◆ A stack
◆ A queue
➔ Basic elements of a program
➔ Tools of the trade
◆ Operating Systems
● macOS
● Windows
● Linux Distributions
◆ Editors
◆ Figma
◆ Browsers
● Edge
● Chrome
● Firefox
● Safari
● Others
◆ Command Line tools
● Windows:
○ Powershell
○ Command Line (CMD)
○ Windows Terminal
○ Mintty
● macOS:
○ Terminal
○ iTerm
○ Powershell
○ Zsh
● Linux:
○ Bash
○ KDE Konsole
○ Powershell
● Others:
○ NPM
○ Git
○ Yarn
◆ Accounts to open
● Sign up on the following platforms
○ Twitter
○ Github
○ Stackoverflow
○ figma
◆ Organizing your computer (creating folders and subfolders to
keep your projects neat)
◆ Documentations and finding help:
● Mozilla Developer Network (MDN)
● W3Schools
● StackOverflow
● Freecodecamp
➔ Further Reading:
Week 2
Week 1 outcome:
At the end of this week, you should be comfortable with the following:
➔ What is HTML?
➔ History of HTML
➔ Why HTML is the building block of the web.
➔ The basics of HTML (Hypertext Markup Language)
➔ Limitations of HTML
Content:
Note to teacher: (ref.1 ref. 2) The list of topics here are the very important things you
have to teach, however, feel free to extend the class to other HTML concepts. Be as
basic in defining these terms as possible, the general idea is to let them know that
these things exist, we don’t expect a full grasp of the concept at this stage.
➔ Definition and Terms
◆ Tags
● Open and Closing tags
● Self-closing tags
◆ Attributes
◆ Values
◆ Validation - HTML Validation
◆ DocTypes
◆ URL
◆ HTML Page
◆ HTML Color Codes
◆ WWW
◆ HTTP
◆ Image Formats:
● Svg
● Png
● Jpeg / jpg
➔ Tags:
◆ <h1>...<h6>
◆ Tables
◆ Forms
◆ Lists
◆ Links - href
◆ Media - audio, video
◆ Download
◆ Marquee
Assignment A:
2. Using table tags, building a Tabulated data page. A single page with
tabled data.
a. The content should be A - Z, each alphabet should be in a single
cell
3. Using Forms, create a contact page:
a. Fields:
i. Name
ii. Email
iii. Message
iv. Priority (dropdown)
b. Your form should have a submit button
c. Your form should have basic HTML Validation
Week 3
Week 3 outcome:
At the end of this week, you should be comfortable with the following:
Content:
Note to teacher: (ref.1 ref. 2) The list of topics here are the very important things you
have to teach, however, feel free to extend the class to other CSS concepts. Be as
basic in defining these terms as possible, the general idea is to let them know that
these things exist, we don’t expect a full grasp of the concept at this stage.
Week 4
Week 4 outcome:
At the end of this week, you should be comfortable with the following:
● CSS Grid and flexbox
● CSS Media Queries and Responsiveness
Content:
Note to teacher: (ref.1 ref. 2) The list of topics here are the very important things you
have to teach, however, feel free to extend the class to other CSS concepts. Be as
basic in defining these terms as possible, the general idea is to let them know that
these things exist, we don’t expect a full grasp of the concept at this stage.
Assignment C:
1. Re-create your calculator interface using CSS grid and/or Flex
a. Ensure the interface is responsive
2. Improve your portfolio page by adding a menu. The menu items should
be the same as the sections of the page (we are working towards
making a single page website) and ensure it is responsive.
a. Add your photo to your portfolio page and other relevant
information outside of what has already been specified.
b. Be creative, and don’t add information that will help the website
visitor know you and your abilities.
c. Highlight your “achievement” and things you are most proud of.
d. Add as many testable links as possible.
3. Build authentication page. Authentication page includes:
a. Register page
i. The following fields are required:
1. First Name
2. Last name
3. Other names
4. Phone
5. Email
6. Gender (drop down)
7. Country (Drop down)
8. State/province
9. Username
10. Password
11. Confirm Password
ii. Ensure you do proper validation on each of these fields
iii. Add a captcha validation (It doesn’t need to work). You can
use a library or create something yourself.
b. Login page
i. The following fields are required
1. Username/Email
2. Password
ii. Don’t forget to do validation
c. Password Reset Process
i. Should include 2 pages
1. Password Reset Request that would accept the users
email address
2. Change password Page that will allow the user
change their password
Month 2
Week 1 outcome:
At the end of this week, you should be comfortable with the following:
● CSS3 Animations
● What is Accessibility and how to get started building accessible
websites.
● Structuring your CSS project
● Collaborating with designers
● Build a Responsive Landing Page
Content:
Note to teacher: (ref.1 ref. 2) Refer to the ref for the content list.
Assignment C:
Week 2
Week 2 outcome:
At the end of this week, you should be comfortable with the following:
➔ JavaScript History
➔ Why JavaScript
➔ JavaScript Concepts: Terms & Definitions
◆ Statements
◆ Comments
◆ Variables
● Let & Const
● Assigning
● Concatenation
◆ Constants
◆ Data Types
◆ Objects
◆ Arrays
◆ Functions
● In-built functions
○ Alert
○ Confirm
○ Prompt
● parameters
➔ System Setup for JavaScript development
➔ JavaScript Syntax and principles
Content:
Note to teacher: (ref.1) Refer to the ref for content list.
Assignment D:
Week 3
Week 3 outcome:
At the end of this week, you should be comfortable with the following:
➔ JavaScript functions
◆ Without parameters
◆ With parameters
◆ Using Math functions
◆ Loops
➔ JavaScript Objects
➔ JavaScript Array Operations
➔ Basic Introduction to the DOM
Content:
Note to teacher: (ref.1) Refer to the ref for content list.
Assignment E:
1. Improve your calculator by making it fully functional.
a. Display result in the answer box
b. I should be able to store basic values and use them for other
calculations
2. Duplicate your calculator and add scientific functionalities
Week 4
Week 4 outcome:
At the end of this week, you should be comfortable with the following:
Assignment E:
1. Refer back to assignment C3 by making your authentication pages
work, the following are required:
a. Registration:
i. Each time a user registers the user data should be
submitted to a file
ii. Before adding the user data to the file, ensure you check
that that user does not already exist
iii. If the user already exists inform them to use different details
b. Login:
i. When a user enters their username and password, you
should check the file if such record exists
ii. If the record exists, show them a successful login message
iii. If the record does not exist, show them failed login message
iv. Users should be able to reset their password if they have
forgotten
c. Password reset:
i. Users should be able to request for a different password by
entering their registered email address
ii. On such request, you should check if such email exists
iii. If the email does not exist, you should inform the user
iv. If the email exists, you should send the user a reset
password email and add a link to the create new password
page
d. Create new password:
i. Users should be able to change their password
ii. Users should not be able to get to this page without going
through the reset password request from c above
iii. If user attempts to use the old password, inform them that
they cannot use the old password
iv. If a user successfully changes their password, inform them
that the change was successful.
2. Build a web application with a professional design from Frontend
mentor.
Month Three
Objectives
Week 1
Week 1 outcome:
At the end of this week, you should be comfortable with the following:
Week 2
Week 2 outcome:
At the end of this week, you should be comfortable with the following:
Assignment G:
1. Build out the following projects:
a. Terrarium
b. Typing Game
c. Space Game
d. Bank Project
e. Browser Extension
Week 3
Week 3 outcome:
At the end of this week, you should be comfortable with the following:
➔ Core React
◆ Component Architecture
◆ Declarative & Imperative
◆ One way Data flow
◆ ReactDOM
Assignment H:
1. Convert your portfolio page to a reactjs single page application
a. Each menu item should scroll down to the appropriate section
b. Push your code to github using the same repo but a different
branch
Week 4
Week 4 outcome:
At the end of this week, you should be comfortable with the following:
➔ Dynamic content
◆ React Component
◆ State
◆ Props
◆ State vs Probs
➔ The React LifeCycle
➔ Hooks & Classes
➔ Functional Component v Class Component
➔ Local State Vs Global State
➔ Thinking JSX
Assignment I:
1. Convert your image gallery to a reactjs application
a. You can improve on its functionality based on the new reactjs
concepts you have learned
b. Push the new reactjs version to the same repo but in a different
branch
2. Write a Technical article about React State and Props.
Month Four
Objectives
In the first week of this month, you’ll learn how to add React Router, and lazy
loading to your React application. For the rest of the month, You’ll learn how to
manage user Data, work with Form in React and styling. You’ll be introduced
to several CSS frameworks, CSS Preprocessors such as SASS and also
CSS-in-JS libraries. At the end of this month, you’ll have mastered Styling and
routing in React.
Week 1
What you’re learning:
➔ Architecture patterns**
➔ Introduction to React-router-dom
➔ Static page content
➔ Dynamic page content
➔ React Events
➔ Lazy loading page / Component
➔ Pagination
◆ Ordered pagination
◆ Continuous scroll
◆ “View more” type
➔ Error Boundary
➔ Router hooks
Assignment J:
Week 2
What you’re learning:
➔ Basic Third-Party Authentication using:
◆ PassportJS
◆ AuthO
◆ Firebase
Assignment K :
1. Improve your authentication flow in Assignment J(1) by using any of the
authentication libraries you have been introduced to. Deploy to Netflify.
2. Deploy your portfolio page on GitHub pages
Week 3
What you’re learning:
➔ SASS (Syntactically Awesome Stylesheet)
➔ SASS 7-1 Architecture
➔ CSS Modules
➔ CSS in JS (Styles-component)
Assignment : Create three branches on the repository you created for the
week 1 project, name them sass-styling, css-modules and
styled-component respectively. As the branch name implies, update the
project structure with appropriate styling methods. For instance, for
sass-styling, checkout to the branch and add SASS 7-1 Architectural pattern
to the project, then do the same for css-modules and styled-components.
Note: Commit your codes to Github.
Week 4
What you’re learning:
➔ React App project week with full design (Your Portfolio website)
➔ LIVE Class
Month Five
Objectives
In the first week of this month, you’ll be introduced to a Software intermediary called
API (Application Programming Interface), HTTP Request and Methods, and Error
handling. You’ll also learn how to make API calls to the server and manipulate the
data returned from the server on the client-side.
Week 1
What you’re learning:
➔ Introduction to API
◆ Application Programming Interface (APIs)
◆ Testing Tools
◆ Consuming API
◆ Understanding API response codes
◆ HTTP Methods (GET, POST, PUT, PATCH, and DELETE)
Assignment :
1. Make your Assignment J(2) functional by using a publicly available
media API library, some examples you can use:
a. https://www.traileraddict.com/trailerapi
b. http://www.omdbapi.com/
c. Push your code to GitHub
d. Deploy your solution to Vercel
Week 2
What you’re learning:
➔ Introduction to NextJs
➔ Why NextJs?
➔ NextJs Features
➔ Installation
◆ Project structure with NextJs
Assignment :
1. Read NextJs Documentation and write an article on Server Side rendering with
NextJS.
Week 3
What you’re learning:
➔ Introduction to TypeScript
➔ TypeScript with React
Week 4
Month Six
Objectives
State Management is another aspect of Frontend web development that is very
pivotal. In this month, you’ll learn everything you need to know about state
management in web applications and how to use state management libraries such
as Redux, Context API and GraphQL/Apollo Client in your applications.
Week 1
What you’re learning:
● React Context API
● When to use Context API
● Context API vs Local State
Assignment : Add Context API to your Weather forecast application. Commit
your codes to Github.
Week 2
What you’re learning:
➔ Redux
➔ Redux Thunk
➔ Introduction to generator function
➔ Redux Saga
➔ HOC Patterns
➔ Redux with TypeScript
➔ Common Redux patterns and avoiding props drilling
➔ Redux Toolkit
Assignment : Add Redux to your Unsplash clone application. Commit your codes
to Github.
Week 3
Capstone Project