Checklist for JS self-study period
Version 0

Instructions

Please fill in below your current progress as a programmer. Be honest as this is only to monitor your current status and help you in seeing your progress in the future. Trainee positions are not decided based on these answers - the exercises and motivation to improve are much more important. Everyone was a beginner at some point and we don’t expect trainees to know all of these things. Even most professionals don’t. However it’s really important to get information of your current level to arrange proper trainings and avoid giving  tasks that are too difficult at this point.

1. Learning fundamentals and realizing that everything digital is based on them

Digital computing basics

Can you convert binary numbers to decimal numbers?	Not yet	
Do you understand how an 8-bit processor differs from a 32-bit processor?	Not yet	
Do you understand what logical gates do?	Not yet	
Do you understand how data is stored in memory?	Not yet	
Do you know what registers are?	Not yet	
Do you understand what CPU clock speed means?	Not yet	

JS programming basics

Do you understand what a variable is?
	Not yet	
Do you understand what a boolean value is?	Not yet	
Do you undestand what a string is?	Not yet	
Do you understand what an array is?	Not yet	
Do you understand what an object is?	Not yet	
Do you understand the difference between values and references?	Not yet	
Are you able to use operators to create expressions?	Not yet	
Do you understand how if statement works?	Not yet	
Do you understand how for loop works?	Not yet	
Can you iterate over array items?	Not yet	
Can you call a function?	Not yet	
Can you create a function that returns a value?	Not yet	
Can you create a function that has arguments?	Not yet	
Do you understand what a recursive function is?	Not yet	
Do you understand the scope of a variable?	Not yet	
Do you understand what a closure is in JS?	Not yet	

DOM basics

Do you understand the link between HTML, CSS  and DOM?	Not yet	
Can you start running your own JS code when an HTML page loads?
	Not yet	
Can you manipulate DOM with JS directly?	Not yet	
Can you add CSS classes to elements with JS?	Not yet	
Can you create DOM elements with JS?	Not yet	
Can you create an HTML form?	Not yet	
Can you read the form contents with JS?	Not yet	
Can you run functions when an HTML button is pressed?	Not yet	
Can you get the current mouse coordinates with JS?	Not yet	
Can you run a function when screen is resized?	Not yet	

2. Thinking in modules and understanding how they can interact

OOP basics

Can you create a class?	Not yet	
Can you create an object instance of a class?	Not yet	
Do you understand what a constructor is?	Not yet	
Can you make objects interact?	Not yet	
Can you store objects in an array?	Not yet	
Do you understand “this” keyword?	Not yet	
Can you change the context of a called function?	Not yet	
Do you understand how static methods work?	Not yet	
Do you understand how inheritance works?	Not yet	
Can you create a separate API to access objects properties?	Not yet	
Can you make objects polymorphic?	Not yet	
Can you create a builder pattern?	Not yet	
Can you create a singleton?	Not yet	
Do you understand the prototype chain?	Not yet	

3. Dividing the data and presentation

Data management basics

Do do understand the MVC model?	Not yet	
Can you create different views from same data engine?	Not yet	
Can you filter an array?	Not yet	
Can you use reduce?	Not yet	
Do you understand what a database is?	Not yet	
Can you use the local storage?	Not yet	
Do you know what JSON is?	Not yet	
Do you know what XML is?	Not yet	
Can you parse XML to JS objects?	Not yet	
Can you create a website with authentication?	Not yet	
Can you fetch data from an online database?	Not yet	
Can you design a relational database structure?	Not yet	

4. Breaking free from synchronous running of code

Asynchronous programming basics

Do you understand what an asynchronous function is?	Not yet	
Can you give a function a callback as argument?	Not yet	
Can you use timers?	Not yet	
Can you handle state during asynchronous operations?	Not yet	
Do you understand how JS event loop works?	Not yet	
Can you use the Geolocation API?	Not yet	
Can you use promises?	Not yet	
Do you understand async and await?	Not yet	

5. Ability to see complete solutions right away

Designing digital systems

Can you break an application into logical parts in your head?	Not yet	
Can you draw the data chain from a mobile phone app to a web server?	Not yet	
Can you see use cases from digital system perspective	Not yet