Start date

Series no. 4 – September 2019

Dates are estimates and can undergo minor changes.

Enroll now


Duration

16 weeks x 6 hours/week = 96 hours

Courses are held twice a week: 2 hours after 18:30 (Monday – Friday) and 4 hours on Saturday

Fees

1150 euro + VAT

The fee covers all costs and can be paid in 4 installments: 1 rate when signing the contract and the other 3 in weeks 5, 9 and 13.

Curricula

1. Introducere în limbajele dinamice

  • Interpretor vs compilator
  • Exemple de limbaje dinamice
  • Avantaje și dezavantaje
  • Studiu de caz C vs Python (poate fi util ulterior la un interviu)

Practică

  • Prima interacțiune cu Python (CPython)
  • Interacțiune cu CPython din linia de comandă
  • Pregătirea utilitarelor necesare
  • Elemente de debugging (dir, help, type etc.)

2. Sisteme de versionare

  • Sisteme de versionare – scurt istoric
  • csv vs mercurial vs git
  • Avantaje / dezavantaje
  • Scenarii de utilizare

Practică

  • Avantajele versionarii
  • Git
  • GitHub

3. Introducere în limbajul Python

  • Sintaxa pentru Python (suplimentar reguli de scriere în Python)
  • Instrucțiuni de control ( if – elif – else )
  • Instrucțiuni repetitive (for – while)
  • Expresii

Practică

  • Experimentare cu instrucțiuni de control și tipuri de date imuabile

4. Tipuri built-in in și structuri de date built-in

  • Tipuri de date în Python
  • Introducerea conceptelor de stiva, coada
  • Introducere în algoritmica și rezolvarea problemelor

Practică

  • Exerciții cu structuri de date simple
  • Exerciții cu algoritmi introductivi

5. Programare procedurala

  • Introducerea conceptului de funcție/procedură
  • Prezentarea avantajelor structurale pe care le oferă
  • Exemplificarea funcțiilor built-in (map, filter, int)

Practică

  • Exerciții cu structuri de date
  • Algoritmi simpli

6. Iteratori, generatori, list comprehension

  • Introducerea conceptelor de Iteratori/generatori
  • Avantajele/Optimizările pe care le aduc
  • Introducerea bibliotecii itertools
  • List comprehension

Practică

  • Optimizarea codului folosind iteratori
  • Exerciții care pot fi rezolvate elegant folosind list comprehension

7. Object Oriented Programming

  • Introducere în OOP
  • Sintaxa claselor în Python
  • Tratarea Exceptiilor
  • Avantajele arhitecturale (modularizarea, izolarea, decuplare, etc)

Practică

  • Convertirea exercițiilor bazate pe funcții la clase
  • Studiu de caz pentru a vedea unde are sens OOP-ul
  • Exerciții cu tratare de excepții
  • Studiu de caz asupra ierarhiei de Exceptii in Python

8. Object Oriented Programming – Advanced

  • Aprofundare în OOP
  • Design Patterns

9. Biblioteci standard în Python

  • Trecerea în revistă a celor mai utilizate biblioteci de Python
  • Interacțiunea cu sistemul de operare sys / os
  • Serializarea datelor json / xml
  • Introducerea în lucrul cu fișiere în Python
  • Funcții/metode comune pentru manipularea fișierelor/directoarelor

Practică

  • Lucru cu fișiere
  • Serializare / deserializare
  • Lucru cu procese
  • Exerciții bazate pe manipularea fișierelor și a directoarelor

10. Stocarea persistentă a datelor

  • Avantajele modulelor
  • Instalarea biblioteci de Python
  • Prezentarea modului în care sunt create bibliotecile (setuptools)
  • Prezentarea conceptului de virtualenv’s
  • Prezentarea unor biblioteci 3rd party comune builtin/externe (requests, functools)
  • Introducerea în mysqlite
  • Introducere în SQL: Create, Insert, Update, Select, Delete

Practică

  • Crearea și Instalarea unei biblioteci
  • Utilizarea unor biblioteci comune
  • Exerciții cu SQL peste sqllite

11. Procese, threads, Locks

  • Aprofundarea conceptului de process, thread, lock
  • Studiu de caz asupra problemelor care pot apărea în sisteme multiprocessing
  • Introducerea librăriilor de multiprocessing și multithreading în python
  • Comunicare între procese/threads
  • Introducerea în ThreadPools și ProcessPools

Practică

  • Calcul paralel pentru probleme mari
  • Exerciții care necesită background processing / procesare asincronă

12. Procesare paralelă și distribuită în Python

  • Master – Slave
  • Arhitectură multi-node
  • Scalare verticală / orizontală
  • Scheduler

Practică

  • Aplicarea noțiunilor de la curs

13. Servicii web

  • Introducere în TCP / IP
  • Introducerea în HTTP
  • Introducerea serviciilor web (flask)
  • Consumarea de servicii web externe (API)

Practică

  • Apelarea de API’s
  • Folosirea de SDK’s
  • Crearea unei aplicații de back-end simplă

14. REST și baze de date externe

  • Introducerea conceptului de API REST
  • Principii și avantaje pentru stilul REST
  • Consumarea de API rest
  • Conectarea la MySQL extern

Practică

  • Crearea unui API rest in flask
  • Interacțiunea cu o bază de date externă
  • Consumarea api-urilor externe și salvarea lor

15. Proiect I

  • Consumarea de API-uri REST
  • Servicii web
  • Stocarea persistenta în baza de date
  • Expunerea de date
  • Procesare în paralel și asyncrona

Practică

  • Pornirea proiectului final care agregă o serie de api-uri și expune un API REST care oferă date procesare

16. Proiect II

  • Evaluarea proiectului final și retușuri finale
  • Review final peste proiect
  • Adăugarea proiectului la CV și pe GitHub

Practică

  • Experimentarea cu code review

Trainers

Alexandru Coman
Alexandru ComanTrainer
Matei Micu
Matei MicuTrainer