Your learning path

Introduction to computing

This module we will cover basic concepts of computing that are universal regardless of the programming language of choice:

  1. Introduction
  2. What is a bit?
  3. How is data stored?
  4. What is ASCII code and why should we care about it?
  5. What is binary code?
  6. How do computers understand user instructions?
  7. What is source program and object program?
  8. How source code is compiled to binary code?


Let's get started

Programming fundamentals

This module will cover the fundamentals of the programming language of your choice, covering the following topics: 

  1. Data types
  2. Variables
  3. Type Conversions
  4. JavaScript unary operators
  5. Assignment operators
  6. Arithmetic operators
  7. Increment/decrement operators
  8. Relational operators
  9. Logical operators
  10. Conditionals
  11. Loops
  12. Functions
  13. Program structure
  14. Input/output operations
  15. Language specific features


Let's get started

Project time: part 1

We will develop a simple game to solidify our knowledge in the Programming fundamentals module. This is where all of the pieces are connected and you will be able to apply everything you've learned while having fun. Apart from the basic programming fundamentals (and specific handy features of the programming language of your choice), the following topics will be covered:

  1. Global and scoped variables
  2. Logic encapsulation through functions
  3. Capturing user input through keyboard
  4. Menu selection creation
  5. Handling game levels
  6. Creating maps with 2d arrays
  7. Character movement and collision
  8. Handling logic to end the game


Let's get started

Computer memory management

This module will cover the insights of computer memory: how is memory allocated and freed at run time, how is memory allocated at compilation time, among other core topics. You will understand why is it so important to acquire this knowledge:

  1. Introduction to computer memory types: static, automatic, dynamic
  2. Dynamic memory
  3. Static memory
  4. High level languages vs Low level languages
  5. Pointers
  6. Dynamic memory allocation
  7. Dynamic memory deallocation


Let's get started

Best coding practices: part 1

This module will cover different coding styles, practices, that are most commonly used with the programming language of your choice. The following topics will be covered:

  1. Debugging
  2. Coding styles
  3. Comments
  4. Language specific practices


Let's get started

Object oriented programming

This module will cover topics in the Object oriented programming (OOP) paradigm. OOP aims to abstract and model real world entities and their relationships. Programs are design using objects that bind functions to data. The following topics will be covered:

  1. Classes
  2. Objects
  3. Attributes
  4. Methods
  5. Encapsulation
  6. Access methods
  7. Constructors
  8. Destructors (high level languages)
  9. Relationships between classes
  10. Aggregation
  11. Composition

Let's get started

Object oriented programming (advanced concepts)

This module will cover topics on inheritance and polimorfism (mainly) which help to abstract code in a much more cleaner way and puts you one step forward to develop scalable and maintainable applications. The following topics will be covered:

  1. Generalization and Specialization
  2. Inheritance
  3. Class hierarchy
  4. Polymorphism
  5. Abstract classes
  6. Abstract functions
  7. Language specific advanced features in OOP


Let's get started

Project time: part 2

After covering the modules on Object oriented programming (OOP), we will develop a game using graphic libraries available for the programming language of your choice and for the frameworks that we may be using to develop our application. Apart from the concepts covered in the OOP modules (and specific handy features of the programming language of your choice), the following topics will be covered:

  1. Introduction to a graphical library
  2. Sprites
  3. Animations
  4. Graphical classes
  5. Graphical library specific features
  6. Brief overview of pointers (high level languages)
  7. Brief overview of arrays and 2d arrays
  8. Object dynamic creation and deletion


Let's get started

Best coding practices: part 2

After covering Object oriented programming module (OOP), it only makes sense now to test our code following the OOP paradigm. Tech companies won't spare in testing, and indeed, testing can save you a lot of money preventing faulty code from being deployed in production environments.

  1. Unit Testing
  2. Integral Testing
  3. Test coverage
  4. Code quality


Let's get started

Advanced topics

This module will cover topics that are related to usecases that are likely to be used in real world applications: how do we handle errors, expected or unexpected events that are out of our reach?. How can we consume the resources of thrid parties APIs? How to we save, update and delete data from/to ms office or txt files?. The following topics will be covered:

  1. Error handling
  2. Custom errors
  3. Promises
  4. Error handling with promises
  5. Working with files
  6. Code structuring


Let's get started