Course overview
Objective
The objective of this course is to train people to get a good job in technology.
Pre-requisites of this course is having completed Code Your Future’s Intro to Programming course which teaches the basics of programming with JavaScript, Python, and SQL.
Outcomes of this course are that you can write high quality code in a language and take a further course to specialise for a job role in tech.
Modules
๐งฐ Tools
- ๐ Binary and hexadecimal numbers
- ๐ CPU and memory
- ๐ How Computer really work? Chapter 1 & 2
- ๐ป Shell tools
- ๐ป cat
- ๐ป man pages
- ๐ป ls
- ๐ป wc
- ๐ป grep
- ๐ป sed
- ๐ป awk
- ๐ Programming language concepts
- ๐ Bitwise operators
- โ๏ธ Comparing programming languages
- ๐ป Shell pipelines
- ๐ป grep in pipelines
- ๐ป sort and uniq
- ๐ป head and tail
- ๐ป tr
- โ jq
- โ NodeJS
- ๐ Using dependencies from npm
- ๐ Installing dependencies with npm
- ๐ป Operating systems
- ๐ป Single-use data analysis programs
- ๐ Comparing JavaScript and Python
- ๐ Converting JavaScript to Python
- ๐ Virtual environments
- ๐ Using Python dependencies
๐ฅ Logic
- ๐ง Introduction
- ๐ฅ Deduction
- ๐ฑ Induction
- ๐ Abduction
- ๐บ๏ธ The Problem Domain
- โ Falsification
- โ๏ธ Bisection
- ๐ญ Boolean Logic
- ๐ 1000 Bottles of Wine
- ๐ Binary Information Theory
๐งฉ Decomposition
โฑ๏ธ Backends and Frontends
- ๐ Read about the Internet
- ๐ Read about the world-wide web
- โ Limitations of frontends
- โ What is a backend?
- ๐ง Backend statefulness
- โ Limitations of backends
- โ Responsibilities of frontends, backends, and databases
- โ๏ธ Design a frontend and backend
- โจ๏ธ Write a frontend and backend
- โฌ๏ธ Deploy a frontend and backend
- ๐ Data validation
- ๐ Chat application requirements
- ๐ง Making a non-live chat application
- โก๏ธ Deploying the chat application
- โ Limitations of a single request/response
- ๐งโ๐ฌ Designing a streaming API
- ๐ Repeated client requests for updates
- โณ Long-polling
- ๐ Different experiences for different users
- ๐ Extracting common functionality
- ๐ Extracting a middleware
- ๐ซ๏ธ Coming soon
๐บ๏ธ Legacy code
- ๐๏ธ Understanding Legacy Code
- ๐ฟ Fear and logic
- ๐งญ Finding things
- ๐ด๓ ง๓ ข๓ ณ๓ ฃ๓ ด๓ ฟ๐ด๓ ง๓ ข๓ ฅ๓ ฎ๓ ง๓ ฟ๐ฌ๐ง Identifying patterns
- ๐ Debugging: Proposing and Discarding Hypotheses
- ๐งช Capturing behaviour in tests
- ๐ง Fixing: Targeted Changes with Test Support
- ๐ฑ Extending: Adding Features the Right Way
๐ช Complexity
โฑ๏ธ Memory and CPU
- ๐ Memory consumption
- ๐ Big-O
- ๐ "Expensive" Operations
- ๐ Pre-computing
โฑ๏ธ Caches and trade-offs
- ๐ Trade-offs
- ๐ Network as a bottleneck
- ๐ Caching