We now have around 800-900 students who started their education back in March 2014, September 2014 and January 2014 at SoftUni. A new batch of 300-400 students will start their education at the Software University in May. Many of our students are enrolled in JavaScript courses. This is one of the reasons why I started writing this article. The next reason is because I want to tell you about our JavaScript courses at SoftUni. And last but not least, because I love JavaScript.

There is one more reason why I wrote this article. I would be very happy if someone would like to give us feedback on our program, about our presentations, about the materials we use in the courses. I want to teach the students everything they will need in the JavaScript world.

I will be happy to read your comments. Thank you!

You can see the schedule with all the SoftUni courses on the site: https://softuni.bg/curriculum

We have four JavaScript courses:


I will review them one by one with more details.

JavaScript Basics

The purpose of the course is to introduce students to the world of JavaScript. The JS Basics course consists of six lectures:

  • JavaScript Development Introduction – In this lecture we look at the differences between static and dynamic programming languages. What is a virtual machine. What is the difference between compiler and interpreter. What is DHTML and the history of JavaScript. What is JavaScript Engine and what does it do for us. How to use JavaScript in HTML Pages. And a quick introduction to its syntax, event handlers and built-in JS objects.
  • JavaScript Tools – Here we show some JavaScript IDEs and tools like Sublime, WebStorm and Visual Studio. How to run JavaScript with Node.js. How to use browser development tools and how to debug JS code. How to configure and use JSLint/JSHint. Also we show JavaScript performance tester jsperf.
  • JavaScript Syntax – Here we talk about data types in JavaScript. What the hell is undefined and what is null? How to declare and use variables. Quick look at operators, expressions and statements, false-like conditions and what is the purpose of strict mode.
  • JavaScript Loops, Arrays, Strings – This lecture is a quick review to loops, arrays and strings in JavaScript because our students have already studied C# and Java in some previous courses and they know the basic programming concepts. We learn how to work with arrays and their methods. Also we review the associative arrays. We cover what are strings and how to work with them. Also something very important, how to escape strings.
  • JavaScript Functions and Objects – Here we talk about functions and objects. They are combined in one lecture because this is only a review of them. Functions and objects are going to be taught in depth in the next course “Advanced JavaScript”. We cover what are functions, what are arguments, functions scope and quick overview of objects.
  • Document Object Model – The DOM API is also a part of this course. We teach what is DOM. How to select DOM elements. What is a Node list and what is the difference between live and static lists. How to create new DOM elements from JS. How to attach them to the DOM. How to traverse the DOM using child parent and sibling methods. How to alter and remove elements. And the end comes with some DOM Optimization with Document Fragment.
  • Events – We are talking about Event types. How to define event handlers and what is the right way. We review the event object. See also event chains capturing and bubbling events.

All resources you can find on our site: https://softuni.bg/courses/javascript-basics/

Advanced JavaScriptoops-in-js

The purpose of the course is to teach the students the deep shit in JavaScript.

  • Advanced JavaScript Functions – In this lecture we talk about functions, function as object, function declaration, function expression, properties and methods, function scope, nested functions, immediately invoked function expressions (IIFE), closures and some other things.
  • How to simulate OOP in JavaScript – Here we talk about how to simulate OOP in JavaScript. What is pseudo-classical oop in JavaScript, what is this object and how to understand the value of this in different contexts. Function constructor. What is a prototype object. What is prototypal OOP. And how to do the things easier than the classical method. This presentation is very interesting.
  • Prototype Chain and Inheritance in JavaScript – This is yet another interesting presentation. Here the main purpose is to view what is a prototype chain, how it works. What is a prototype and what is the difference between prototype and __proto__. How to implement inheritance with Pseudo-classical way and prototypical way. We show some OOP frameworks in JavaScript.
  • JavaScript Design Patterns (Modules) – First we talk about why we need modules and patterns. After that we take a look at Prototype, Module, Revealing Module and Revealing Prototype patterns. The most popular and used patterns in JavaScript.
  • JavaScript Best Practices – This lecture is about naming conventions, using variables correctly, hoisting, scoping, strict mode, how to use this object correctly and how to write functional JavaScript.
  • AMD and RequireJS – This topic is about Asynchronous Module Definition and overview of RequireJS
  • Eventually TypeScript or ECMAScript 6 – We want to show to our students what is the future of JavaScript. What are the new features in ECMAScript 6 and what are the features going to be eventually in ECMAScript 7 implemented by Microsoft in TypeScript. And what is the future of TypeScript after Google announcing that Angular 2 will run on TypeScript and Google will merge AtScript with TypeScript.

JavaScript Applications

The purpose of the course is to teach the students how to make single page applications with pure JavaScript. How to consume web services deployed somewhere in the cloud. And how to do it qualitatively.

  • HTTP, AJAX, REST – Here we talk about basic concepts in the Internet. HTTP protocol, methods, status code, MIME types, AJAX, Web services, AJAX, what is same origin policy…
  • Web Storages – Here we talk about cookies, session storage and local storage. What are the pros and cons using cookies vs web storages in browser.
  • jQuery – Today many people use jQuery. We show how with one-two lines of code you can do magic.
  • Consuming REST Services – This is the lecture in which we show how to consume web services with XMLHttpRequest. At the end of the presentation we show how to do it with some libraries.
  • Promises and Async Programming – Promises are something very useful in JavaScript. We demonstrate them with the help of the library Q. At first some students are scared, but when they get used to them, they begin to appreciate them.
  • Applications Architecture – When we create single-page applications we should structure our code. We show how to separate the code in different layers.
  • Templating – Templates are useful to the developers, because the code is cleaner. We show it with mustache.js or handlebars.js.
  • Routing – Routing is very useful for the users. We show JS libraries for routing like Sammy.js or crossroads.js
  • Unit Testing – Building applications without unit tests is not a good practice. They are a very important part of our development process. We show it with the help of Mocha, Chai and Karma.

JavaScript Frameworksshield-large

This course is interesting because it depends on the trends of the SPA Applications libraries. If the industry writes Angular, we will teach Angular, if the industry writes more backbone, we will teach backbone… By now Angular is the most popular MV* library and this is the reason why we teach it.

  • Introduction to AngularJS – What is Angular, what is MV* framework, Angular architecture, components and features. We show hello world application and Angular seed.
  • Controllers and Markup in AngularJS – We cover the main parts of the AngularJS. What is a controller, what is an expression, what is $scope, filters, binding, validation…
  • Services – What are services and how to use them correctly. Built-in services and how to create custom services.
  • Routing – This presentation is about routing, templating, navigating between routes, working with route parameters. How to enable HTML5 routing. How to insect routes.
  • Directives – What is a directive? How to use directives, how to create directives and how to deal with scope. How to isolate scope. How to handle events with directives.
  • Practical Project with AngularJS – Our students have an individual practical project and they have to create a single-page application with the help of the AngularJS. This is their exam for this course. It is very interesting because they have some real problems to solve and we get to see some very good projects made by the top students.
  • AngularJS Best Practices – I decided to insert this lecture in this course because when we create big projects without caring about the code quality, the code is going to smell. We want to teach our student how to write high-quality code. Here we show how to structure our files, folders and modules. What are the naming conventions in AngularJS. What are the roles of the controller, service and directive and how to use them properly. How to deal with $scope. Communication between components is necessary for the bigger projects. In some cases it is not very easy to communicate correctly between components. We show the students how to do it.

All materials is free and open source. Everything is in English. Only the videos are recorded in Bulgarian.


  • Madhushalini says:

    Superb. I really enjoyed very much with this article here. Really it is an amazing article I had ever read. I hope it will help a lot for all. Thank you so much for this amazing posts and please keep update like this excellent article.thank you for sharing such a great blog with us. expecting for your.

Leave a Reply