Technical portion of the program is based on the FrontEnd stack – JavaScript. The primary focus is technical education, but the background is about teaching students how IT industry is operating and how they can find their place in it. While our students will be equipped with technical skills necessary to successfully participate in IT industry, the enduring value that BIT provides is a mindset necessary for the long term career in IT.
Program is designed to be highly practical - lectures are usually short and followed up by practical work on a computer to illustrate theoretical components. Every 3 weeks, each student is producing technical solutions which are carefully added to the base knowledge with intent to have sizable final project that can be demonstrated to potential employers.
During the 390 lessons long program (including soft skills lessons), the first part is focused on basics of computer science - candidates will learn basics of HTML, CSS and JavaScript. The focus of the second part is on practical applications of JavaScript - learning the framework landscape, engineering system and one specific framework (React).
One of the frequently overlooked aspects of successful IT education is understanding of the engineering system. During the program, our students will be exposed to technical aspects of the engineering system (source control system, unit testing system, deployment automation system). In addition to engineering system tools, students will be introduced to concepts of scrum/lean development, roles and responsibilities within engineering teams and general theory of software engineering process.
The climax of the program is the final project which will be completed within the framework (React) and using the engineering system (source control, deployment and unit testing). Final project will be hosted and available for demonstration to interested parties.
JAVASCRIPT COURSE OVERVIEW
The course is designed for students with minimal or no knowledge of computer programming, Internet principles and software design.
The first part of the course two subjects are taught - Computing and principles of Programming and Web design. The other part of the course one subject is taught - Web applications.
PROPOSED FORMAT
Format: 15 lessons per week
Duration: 6 months
Days per week: 3 – Tuesday, Thursday and Saturday
Lessons per day: Tuesday 2.5 lessons (18.00-20.00), Thursday 2.5 lessons (18.00-20.00), Saturday 10 lessons (9.00-13.00 and 14.00 – 18.00)
Total lessons: 390
Our program is intense on Saturdays in order to simulate a workday in an average IT company. Any fundamental change in life requires reprogramming. Such reprogramming cannot occur by part time setting after work alone. For the fundamental change we need students to fully focus on the transformation and on learning so we are proposing Saturdays as main day for study without distractions and tiredness from work. Saturday program starts at 9:00. During the initial period the professor will present the plan for the day. Student will do a short morning meeting (similar to scrum) to discuss the experience and challenges from the prior lessons. Five lessons are conducted from 9.00 to 13.00. Each lesson starts with a short lecture (20 minutes). After the lecture students work on a practical implementation of a particular theoretical concept. After the lunch break from 13.00 to 14.00, another five classes are conducted from 14.00 to 18.00.
Work-day program starts at 18.00 and ends 20.00. Two and half lessons are conducted in that time. Every day ends with giving homework and instructions for further practicing.
CURRICULUM OVERVIEW
Internet vs Web
Response / Request cycle
How website is created
Web page structure
HTML elements
Layout using just HTML
Forms
Validations
Audio and Video
Computer jargon and terminology
Hardware and software
Programming and programming languages
Introduction to JavaScript. Language syntax
Version control systems (git)
Introduction to CSS
CSS selectors
Fonts
Box Model
Layouts
Positioning
Control flow.
Data structures (Arrays).
Functions
Input/return values
Git branching
VisualStudio Code deep introduction
Responsive layout
Semantic HTML 5
CSS preprocessors
SASS
Bootstrap
Components
Expanding programming vocabulary
Code blocks
Variable Scope
Self-invoking Functions
"this" value
Constructor functions
The global object
High-order functions
Object-Oriented Programming Concepts
Built-in objects
JavaScript and the browser
Global objects
Window objects
HTML 5 storage
JavaScript and DOM
Traversing DOM
DOM manipulation
Events / Handling Events
Built-in Objects and Functions in Depth
Error Handling
try...catch
Error object
Prototypes and Inheritance
Prototype chain
Connecting with browser
Documenting code
JavaScript library
jQuery
DOM manipulation using jQuery
jQuery Plugins
jQuery IU
AJAX
API
Scoping and scope chain
How code is executed: Js parsers and engines
Execution context & execution stack
Creation and execution phases
Closures
Scope Chain
Lexical Scope
Modules: namespacing, reuse, decoupling, separation of concerns
Module Revealing Pattern
Introduction to JSON. API. ES6
WEB APPLICATIONS
Single Page Applications
Razvojni alati i okruženja
Usklađivanje JavaScript verzija
Build process
Arhitektura aplikacija
Moduli
Testiranje
React
Okruženje za rad
JSX. Components
State
Props. Forms
Events
React Router
Advanced React
Rad na sopstvenom projektu
Postavljanje Hello World aplikacije
Liste
Pretraga
Dohvatanje podataka sa servera
React + Redux
Master-Detail
Unit tests
Deployment
Pregled drugih framework-a
Sigurnost web aplikacija
Wrap-up