Skip to content

High level programming learning courses - Python/SQL/RESTful API/HTML/CSS/JavaScript/ES6/DOM manip

Notifications You must be signed in to change notification settings

Bomays/holbertonschool-higher_level_programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

High level programming learning courses

Python / SQL / RESTful API / HTML / CSS / JavaScript / ES6 / DOM manip

 

Windows 11 Ubuntu Vim PowerShell Visual Studio Code

Flask Swagger Postman openapi initiative Docker

Python JavaScript HTML5 CSS3

 

Table of learning courses objectives Contents


Current Repository

 

 

Parallel project > High Level programming project HBnB

See HBnB Evolution Project Overview

$~$

See Repository > Soon available!

 

The project equips students with a structured pathway to develop and deploy a full-stack application
using modern tools and methodologies.
Each stage introduces more complex technologies and concepts, preparing students for professional
software development environments.
The project emphasizes scalability, robustness, and flexibility,
ensuring students are well-prepared for technological advancements in their future careers.

Authors: Louis Genty, Clément Callejon, David Vaucheret, Nicolas Martinez

 

 

 

Courses part objectives

Python

 

1 - General objectives for project: Python - Hello, World

- How to use the Python interpreter
- How to print text and variables using print
- How to use strings
- What are indexing and slicing in Python
- What is the official Python coding style and how to check your code with pycodestyle

2 - General objectives for project: Python - if/else, loops, functions

- Why indentation is so important in Python
- How to use the if, if ... else statements
- How to use comments
- How to affect values to variables
- How to use the while and for loops
- How to use the break and continues statements
- How to use else clauses on loops
- What does the pass statement do, and when to use it
- How to use range
- What is a function and how do you use functions
- What does return a function that does not use any return statement
- Scope of variables
- What’s a traceback
- What are the arithmetic operators and how to use them

3 - General objectives for project: Python - import and modules

- Why Python programming is awesome
- How to import functions from another file
- How to use imported functions
- How to create a module
- How to use the built-in function dir()
- How to prevent code in your script from being executed when    imported
- How to use command line arguments with your Python programs

4 - General objectives for project: Python - data structures

- What are lists and how to use them
- What are the differences and similarities between strings and lists
- What are the most common methods of lists and how to use them
- How to use lists as stacks and queues
- What are list comprehensions and how to use them
- What are tuples and how to use them
- When to use tuples versus lists
- What is a sequence
- What is tuple packing
- What is sequence unpacking
- What is the del statement and how to use it

5 - General objectives for project: Python - More Data Structures > Set, Dictionary

- Why Python programming is awesome
- What are sets and how to use them
- What are the most common methods of set and how to use them
- When to use sets versus lists
- How to iterate into a set
- What are dictionaries and how to use them
- When to use dictionaries versus lists or sets
- What is a key in a dictionary
- How to iterate over a dictionary
- What is a lambda function
- What are the map, reduce and filter functions

6 - General objectives for project: Python - Exceptions

- Why Python programming is awesome
- What’s the difference between errors and exceptions
- What are exceptions and how to use them
- When do we need to use exceptions
- How to correctly handle an exception
- What’s the purpose of catching exceptions
- How to raise a builtin exception
- When do we need to implement a clean-up action after an exception

7 - General objectives for project: Python - Test-driven development

- Why Python programming is awesome
- What’s an interactive test
- Why tests are important
- How to write Docstrings to create tests
- How to write documentation for each module and function
- What are the basic option flags to create tests
- How to find edge cases

8 - General objectives for project: Python - Classes and Objects

- What is OOP
- “first-class everything”
- What is a class
- What is an object and an instance
- What is the difference between a class and an object or instance
- What is an attribute
- What are and how to use public, protected and private attributes
- What is self
- What is a method
- What is the special __init__ method and how to use it
- What is Data Abstraction, Data Encapsulation, and Information - Hiding
- What is a property
- What is the difference between an attribute and a property in Python
- What is the Pythonic way to write getters and setters in Python
- How to dynamically create arbitrary new attributes for existing instances of a class
- How to bind attributes to object and classes
- What is the __dict__ of a class and/or instance of a class and what does it contain
- How does Python find the attributes of an object or class
- How to use the getattr function

9 - General objectives for project: Python - More Classes and Objects

- Why Python programming is awesome
- What is OOP
- “first-class everything”
- What is a class
- What is an object and an instance
- What is the difference between a class and an object or instance
- What is an attribute
- What are and how to use public, protected and private attributes
- What is self
- What is a method
- What is the special __init__ method and how to use it
- What is Data Abstraction, Data Encapsulation, and Information Hiding
- What is a property
- What is the difference between an attribute and a property in Python
- What is the Pythonic way to write getters and setters in Python
- What are the special __str__ and __repr__ methods and how to use them
- What is the difference between __str__ and __repr__
- What is a class attribute
- What is the difference between a object attribute and a class attribute
- What is a class method
- What is a static method
- How to dynamically create arbitrary new attributes for existing instances of a class
- How to bind attributes to object and classes
- What is and what does contain __dict__ of a class and of an instance of a class
- How does Python find the attributes of an object or class
- How to use the getattr function

10 - General objectives for project: Python - Inheritance

- What is a superclass, baseclass or parentclass
- What is a subclass
- How to list all attributes and methods of a class or instance
- When can an instance have new attributes
- How to inherit class from another
- How to define a class with multiple base classes
- What is the default class every class inherit from
- How to override a method or attribute inherited from the base class
- Which attributes or methods are available by heritage to subclasses
- What is the purpose of inheritance
- What are, when and how to use isinstance, issubclass, type and super built-in functions

11 - General objectives for project: Python OOP - Abstract Class, Interface, Subclassing

- Abstract Classes:
  Understand and apply abstract classes to
  define common interfaces while enforcing certain levels of class completeness.


- Interfaces and Duck Typing:
  Grasp the concept of interfaces and duck typing to ensure that objects adhere
  to a specific contract or protocol.


- Subclassing Standard Base Classes:
  Learn to extend standard base classes like lists, dictionaries,
  and iterators to create custom data structures with specialized behavior.


- Method Overriding:
  Employ method overriding to alter or enhance the behavior of base class methods.


- Multiple Inheritance:
  Understand and apply multiple inheritance to form complex relationships between classes.


- Mixins:
  Utilize mixins to compose behavior across unrelated classes.

 

 

HBnB Evolution Project Overview

See Repository > Soon available!

Project Description

The HBnB Evolution project is a comprehensive educational initiative designed to guide students through
the development of a simplified AirBnB-like application.

Spanning four stages, the project progresses from backend setup to full-stack integration and deployment,
using Docker and various modern development practices.

An API-first approach is prioritized, focusing on establishing a robust and scalable API before frontend implementation.

 

Architectural Approach and Methodology

The architecture of HBnB Evolution employs a three-layered approach:

Service Layer:
Manages all API endpoints, serving as the interface between the client and business logic.
Business Logic Layer: Houses models and business rules, handling data logic, validation, and computations.\

Persistence Layer:
Oversees data storage and retrieval, initially using simple class implementations with interfaces for adaptability,
allowing for easy transition to more complex storage solutions.\

Stage 1:
Backend Setup and Basic Functionality

Objectives:\

  • Develop a UML model and implement backend functionality using Flask.\
  • Create data persistence using simple classes, facilitated by interfaces for future flexibility.\
  • Develop RESTful API endpoints.\
  • Containerize the API using Docker.

*Key Entities and Attributes:*\ - User:\ Attributes include id (UUID4), email (String), first_name (String), last_name (String), created_at (DateTime), and updated_at (DateTime).
- Place:\ Attributes include id (UUID4), host_id (UUID4 referencing User), name (String), description (String), number_of_rooms (Integer), number_of_bathrooms (Integer), max_guests (Integer), price_per_night (Float), latitude (Float), longitude (Float), city_id (UUID4 referencing City), amenity_ids (List of UUIDs referencing Amenities), created_at (DateTime), and updated_at (DateTime).
- City:\ Attributes include id (UUID4), name (String), country_code (String referencing Country), created_at (DateTime), and updated_at (DateTime). - Country: Attributes include code (ISO 3166-1 alpha-2), name (String). This entity is preloaded and read-only. - Review: Attributes include id (UUID4), place_id (UUID4 referencing Place), user_id (UUID4 referencing User), rating (Integer), comment (String), created_at (DateTime), and updated_at (DateTime).

Stage 2:
Database Integration and Authentication

Objectives:\

  • Transition to ORM-based interactions using SQLAlchemy, moving from simple storage to SQLite for development and PostgreSQL for production.
  • Introduce JWT-based authentication to secure API endpoints.
  • Update Docker configurations to include a production database and develop Docker Compose scripts for effective deployment.

**Stage 3:**\ *Frontend Development* Objectives:\ - Develop the frontend using HTML, CSS, and JavaScript for dynamic interaction with the backend. - Dockerize the frontend using Nginx to efficiently manage static file serving and API requests.
**Stage 4:**\ *Full System Deployment* Objectives:\ - Use Docker Compose for deploying multiple containers, including frontend, backend, and database services. - Set up Nginx for load balancing and ensure secure and scalable deployments through public and private networking configurations.

About

High level programming learning courses - Python/SQL/RESTful API/HTML/CSS/JavaScript/ES6/DOM manip

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published