Mon School Courses
Why Version Control System
GitHub
Let Us Go
Git & GitHub for beginners
Self Hosting 101
Authoring Courses on Mon School
Building Online Games with Python
Rust for Beginners
Mypy Primer
Build Web Applications with Python
Mon School Courses
GitHub
Let Us Go
Let Us Go
Getting to Go
Getting to Go
Hello World
Data Types
Variables
Exploring Go
Exploring Go
Control Flow
Functions
Going Deep
Going Deep
Arrays Maps
Structures
Methods
Practial Go
Practial Go
Streams Files
Error Handling
Text File Game
Go in Parallel
Go in Parallel
Concurrency
Goroutines And Channels
Card Game
Go Out in Style
Go Out in Style
Coding Style
Gofmt
Packaging
Git & GitHub for beginners
Git & GitHub for beginners
Introduction to Git
Introduction to Git
Why Version Control System
What Is Git
Git Workflow
Git Objects
Installing Configuring Git
Git Github
Getting started
Getting started
Git Repository
Git Cloning
Git Committing
Best Practises
Pushing Commits
Time Travelling With Git
Collaborative Development
Collaborative Development
Managing Collaborators
Pulling Changes
Merging
Resolving Merge Conflicts
Parallel Development
Code Reviews Pull Requests
The GitHub Flow
The GitHub Flow
Fork Cloning
Managing Remote Repositories
Fork Updating
Git Rebasing
Git Stashing
Contribute to Open Source projects
Contribute to Open Source projects
Open Source Software
Leveraging Documentation
Good First Issues
Fixing Issues With Pull Requests
Automated Tests
Open Source Etiquette
Self Hosting 101
Self Hosting 101
Week 0
Week 0
What is Self Hosting?
What Things Can You Self Host
Course Outline
Week 1
Week 1
Overview
Creating a droplet
Creating Users
Installing Software Packages
Working with files and directories
Setting up SSH Access
Using tmux
Week 2
Week 2
Overview
Installing NGINX
Customising Index Page
Creating a site
Setup a site using git
Week 3
Week 4
Week 5
Week 6
Authoring Courses on Mon School
Authoring Courses on Mon School
Welcome to Mon School
Welcome to Mon School
Monschool
What Makes a Good Course
Proposing a New Course
Creating the Course
Creating the Course
Creating Course Outline
Generating Files for All Lessons
Adding Course Preview Image
Adding Content to Lessons
Adding Examples
Adding Exercises
Building Online Games with Python
Building Online Games with Python
Introduction
Introduction
Audience
Setting Up
Canvas
Movement
Movement
Animation Basics
Draw Update Loop
Drawing Primitives
Illusion Of Movement
Bouncing Ball
Collision
Collision
Basic Collision Math
Bounds Check
Hit Check
Control
Control
Key Controls
Key Up Vs Down
Mouse Controls
Adding Characters
Adding Characters
Getting Points
Losing Lives
Interface
Interface
Display
State Machines
Start And End Screens
Publish
Publish
Share With Friends
Whats Next
Rust for Beginners
Rust for Beginners
fn main() -> IntroducingRust
fn main() -> IntroducingRust
Welcome to Rust
First spin, Playground and Rustup
Our First Rust Program
Why Rust?
Doing some control flow
Doing some control flow
Learning about `if`, `else` and ways to construct rust programs with them
Discussing `for`, `while` and more about loops in rust
Write concise code with match and let patterns
Understanding how functions and closures work in rust-lang
Utilising macros to write less code and do more
Data types, traits, borrowing and ownership
Data types, traits, borrowing and ownership
An introduction to the concept of types in rust
Creating data structures in rust
Rust Traits and Generics
Handling memory with ownership, borrowing and lifetimes
Package Management
Package Management
Handling dependencies in rust-lang
Getting to know crates.io and docs.rs
Writing our own Cargo.toml
Capstone Project
Capstone Project
What are we building?
How do we play 2048?
How do we handle inputs?
Let's Re-write it in Rust!
Publshing your first crate
Mypy Primer
Mypy Primer
Introduction to mypy
Introduction to mypy
What is mypy?
Introduction to Python's type annotation syntax
Using mypy to type-check your code
Installing mypy on your machine, and in your code editor
Mypy errors, and how to debug them
Mypy errors, and how to debug them
Why doesn't mypy show an error here?
Mypy configuration
Simple type checking examples
Using reveal_type() to debug types
Mypy types, and the typing module
Mypy types, and the typing module
Lists, Dictionaries, and other collections
Union and Optional types
Reading mypy error messages
Type checking your classes
Typing *args and **kwargs
The "Any" type
Diving deep into the typing module
Diving deep into the typing module
Static duck typing
The NamedTuple class
The TypedDict class
Function overloading with @overload
Some advanced type checking concepts
Some advanced type checking concepts
Typing decorators
Typing generators
The Type type
Typing exercises
Conclusion
Conclusion
Type checking, or writing tests? Why not both!
Integrating mypy into your software development lifecycle
Build Web Applications with Python
Build Web Applications with Python
Basic HTML
Basic HTML
Introduction to HTML Document
HTML head and body
Handling Text
Adding Links
Creating Lists
Creating Tables
Adding Images
Dynamic HTML Using Jinja
Dynamic HTML Using Jinja
Formatting Text in Python
Jinja2
Simple Jinja Template
Conditions and Loops
Creating Tables from Data
Build a Static Website
Getting Started with Flask
Getting Started with Flask
Introduction to Flask
Routing and Controllers
Responding to Website Users
Return HTML Content
Return HTML Content generated using Jinja
Build a Simple Website
Interacting with Users
Interacting with Users
HTML Forms and User Inputs
Submitting the Form to Server
Responding to User Form Submission
Build a Guest Book
Styling
Styling
Introduction to Styling
Using Style Tag
Applying CSS style to HTML Document
Using Bootstrap
Capstone Project
Capstone Project
Problem
Approach
What next?
What next?
What to do next?
Why Version Control System
.