-
Contact the lecturer for Zoom & Discord links.
-
Classes run from 9:45AM-3PM Mon-Thu and 10AM-2PM Fri.
-
Student Expectations: ~5 hours of lectures and ~3 hours of homework 5 days/week.
-
1963 Timesharing - How Computers Work - Still relevant
-
1982 UNIX - See Brian Kernighan's demo @ 4:00. Also still relevant.
- Career
- Cloud Foundations
- Linux
- Networking
- Python Programming
- Databases
- AWS
- Exam Preparation
- Hardware Basics
- Virtual Machine Basics
- Database Concepts
- Cloud Service Models (IaaS, PaaS, SaaS, FaaS)
- Basic Computing Concepts
- Brief history of computing & operating systems
- CPU / Central Processing Unit
- Moore's Law
- RAM/Memory
- Storage: Mechanical Hard Drives, Solid State Drives (SSD), Tape Storage, CD/DVD/BluRay
- Brief history of Cloud Computing
- Virtual Machines & Amazon Machine Images (AMIs)
- Database Basics: Relation vs Non-Relational/NoSQL (Key-Value, Document/Object, Graph)
- EC2 Lab demonstration - Deploying a virtual machine
- Shared Responsibility Model Basics
- Memcached & Redis Basics (get/set): Try Redis
- StackShare
- Amazon S3 Basics
- Brief history of Internet (Phreaking, Dialup, ADSL, Fibre)
- Brief history of World Wide Web, HTML, and using archive.org
- Linux Basics:
cd,mkdir,pwd,ls,man,/bin directory, running programs. - Linux Directory Structure
- The Art of Command Line - Bookmark this for use later in the course.
- AWS Compute Options: EC2, Lambda, ECS, and others.
- Hypervisor vs Containers
- Infrastructure as a Service (IaaS)
- Platform as a Service (PaaS) - e.g. Heroku, ElasticBeanstalk
- Software as a Service (SaaS)
- Function as a Service (FaaS)
- Continuous Integration / Continuous Deployment (CI/CD)
- Infrastructure as Code (IaC) Basics
- Application Programming Interfaces (APIs)
- RosettaCode
- Installing
python3withsudo yum install python3
- Personal branding workshop
- Python String data type
str - Python Numerics data types
int,float - Print to console
print() - Takes input from console
input()
- Python Basics
- Git Basics
- Python: Lists
my_list = [1, "hello", 3.14], Tuplesmy_tuple = (4, "blah", 1.23) - Functions (
def my_function():) - Conditionals (
if/else/elif) - Comments (
#) - Debugging: Breakpoints, Stepping, Inspecting values
-
Python Dictionaries
my_dictionaries = {"innovation": "something new"} -
Python Boolean type
my_bool = True | False -
Nested data types: Lists within Dictionary, Dictionaries within List, Lists within List (2D array)
-
Using
pip -
awesome-python - List of popular Python packages
-
Using
pylint -
Local vs. Global scope
-
Classes (basics - grouping of data and functions/methods)
-
Interpreted programming languages vs compiled programming languages
-
AI brief introduction - Tensorflow, Keras, PyTorch
-
Sets
my_set = {1, 3, 'hello', 3, 5}, Intersection and Union methods -
List slices & some methods (append, insert)
-
Keybr.com - Learn to touch type & speed up your typing.
- Python conditionals:
if,elif,else - Exceptions, custom exceptions with
raise,try,except,else,finally - Combine exception handling with functions and
return assertand raisingAssertionError- Sentry for error tracking
- Create /
importmodules in Python - Using
pytestandassertstatement for software testing. - Continuous Integration providers: Travis-CI, CircleCI
- Agile software development basics: Standups, Kanban, Sprints, Scrum
- GitHub platform in depth: Forking, Pull requests, Topics, Issue tracking, Project Management, Contributors / Bus Factor, etc
- Using loops (
while,for,range,enumerate) - List comprehensions aka easily making a list from an iterable.
- Looping through dictionaries using
.keys(),.values(), and.items(). - Printing with
f-strings - More testing with
pytest - More on using modules
- Entry point
- Python's
inkeyword ('b' in ['a', 'b', 'c'], and inforloops) - Using
turtlefor small visualizations and understanding loops
- How git is used for teams of software engineers to collaborate
- How to create a Github repo, also called a
remoterepository git clonefromremoterepositorygit initgit add remoteif there isn'tremoterepository linked already- see status of staged and unstaged changes with
git status - view git history with
git log git commitgit branchgit checkoutgit pullfromremoterepositorygit pushfrom local toremoterepository- rewrite git history, squash N number of commits history with
git rebase -i HEAD~N
- Linux Basics (Filesystem layout, navigating, working with files/processes)
- Kernel / Daemons
- Python Revision
- Command Line Revision
- Git Revision
- Linux Basics Revision
- Linux GUI vs CLI
- Continuous Integration, Continuous Delivery, Continuous Deployment concepts
which,alias,unalias,export,unset,env,less,sudo !!,cat,sleepPATH, accessing environment variables e.g.$HOMEand settingPATH,.bashrcbasics./procbasics- Processes & Process ID's
- Job control basics:
Ctrl-Z,bg,fg, Running a task in the background with& stracebasics & system calls (syscalls) overview/purpose- File Descriptors and
/proc/<process_id>/fd/,stdin,stdout,stderr- More on these later. - tmux Basics: Prefix key (
Ctrl-B), Vsplit%, Hsplit", New windowc, Next windown, Previous windowp, Switching panesarrow keys - Types of interprocess communication: Wikipedia - Inter-process Communication
- More Linux:
head,tail,file, Symbolic Links (symlinks), Permission basics:chmod +x(so far) /etc/passwdchsh,/etc/shellsand different shell examples (zsh,fish)gcc(akacc) and compiling simple C programs/libdirectory, shared objects (.soand equivalent.dllfiles)- Binary (ELF) vs Text (Shell script) and
#!at the top of scripts. - Using
time.sleep(30)in Python and thenanosleep()syscall. - Created a simple shell script
- awesome-shell - List of great programs
- Linux
cd,pwd,ls *(list all files in nested folders) vs.ls cp,mv,mkdir,nano- Python
argsparserto run Python program with customizable input - Makefile, and Makefile command with input
- Makefile command shortcut to run Python program with customizable input
- Explained on a high level what API is, and most common API command
GET,POST,PUT,DELETE - More Linux:
useradd,groupadd,sudo su -,/etc/sudoers,/etc/passwd,/etc/group,/etc/shadow,vipw,vigr, andvipw -s(don't edit these files directly) !!,!$,historyand!<n>- More Bash scripting & handling arguments (
$1,$2, etc in Bash &sys.argvin Python) - Linux permissions: chmod codes cheat sheet,
ugo+rwx(symbolic),421(numeric), output ofls -al - LinuxJourney.com - Thanks Ben
- Bash Cheat Sheet - Plan to learn these during your career
Optional vim stuff:
- Vim Adventures - Thanks Jarryd
- VSCode Vim Plugin - Optional
- VSCode Learn Vim Plugin - Also optional
- Advanced vim cheatsheet - Bookmark for later in your career if you decide to use vim.
- CV workshops
- Flows and conditions with Linux bash scripting:
if else elif,for loop with {1..N},for loop with StringArray(),case,conditions []
Other resources for interview preps:
- Algorithm coding interview: https://leetcode.com/
- All topics in Tech interview: https://interviewing.io/
- General programming interview, not algorithm heavy: https://exercism.org/
- System design interview: https://github.com/donnemartin/system-design-primer
Book recommendations:
- https://www.amazon.com/System-Design-Interview-Insiders-Guide-ebook/dp/B08B3FWYBX
- https://www.amazon.com/System-Design-Interview-Insiders-Guide/dp/1736049119
- Networking Basics: Switches, Routers, TCP vs UDP, IP addresses, Ports
- Revision
- More on containerization vs virtualization.
- Architecture Basics: ARM vs x86 / x64 (aka amd64 or x86_64)
- Virtualbox Snapshots & Amazon Machine Images
- Demos/Presentations of useful utilities
- Debugging a non-ELF binary named
googlr(created in Swift) - Matthew:
atop,gitmux,nnn - Dotfiles - Configure your own setups.
- Joe:
image-scraper,imgp,tiv, and cool mod to Alice's pokemon guesser game - Asimina:
cointop,has - Michael J:
prettyping,gogh& debugging shell scripts - Custom tmux configuration with .tmux
- Installing Python 3.10 from source and using
grep. - Installing Go (see office hours recording) and extracting compressed files with
tar. - Installing Rust (also office hours)
- Keep many CVs
- Job tracking pipeline
- Learning plan
- Manage learning pipeline
- Career progression (the technical track & the management track)
- Negotiation (pay, parking or gym perks, more WFH days, learning and certification stipends...)
- Keeping and building a code snippet library - curated pieces of code for Python, Bash...
- Router, Switch vs. Hub
- LAN vs. WAN
- IP vs. MAC
- Client Server vs. Peer to Peer
- Bus, Star, Mesh topologies and how you can go hybrid
- Introduce network layers, highlight layer 4 (TCP and UDP) and layer 7 (HTTP)
- Connection vs. Connectionless (session-less) protocol
- Binary & Hexadecimal - Hexadecimal to Binary - Organic Chemistry Tutor
- Endianness: Wikipedia, Computerphile
- Hex Editors: HxD - Windows, Hexinator - Linux, HexFiend - MacOS
- ASCII
- IPv4 Addresses
- Ports - List of common port numbers
- Regional Internet Registries
- ROT13 cipher
- Utils:
whois,nslookup& DNS basics (A-record),iftop,tcpdump - Shodan & Honeypots
- IPv4 vs. IPv6
- CIDR
- VPC, Subnets, Avaiability Zone, Regions
- How VPC can connect together
- The concept of CDN in an example related to Netflix content distribution
- History of IP Address allocation
- Classful Addressing
- IPv4 Address Exhaustion - Wikipedia
- List of assigned /8 Blocks assigned to RIR's
- ipcalc for CIDR & Subnetting
whoising IP ranges from countryipblocks.net and seeing who owns what.- Feynman Technique for understanding and remember something: Socratica, Thomas Frank
- Private, Partnered (Paid), and Public APIs
- REST vs. gRPC vs. SOAP
- JSON vs. dictionary
- JSON vs. XML vs. Protobuf
- Building an IP Subnetting calculator API with Python, pytest, and FastAPI.
- Friday: Good Friday (No class)
- More Networking Basics: OSI & TCP/IP Models, IPv4 Subnetting
- Review of the following networking topics:
- OSI Model & TCP/IP Model
- Example: VPN -> OSI Layer 3 tunneling to by pass IP and domain name restriction
- Example: Network firewall -> OSI Layer 4, block IP address range and port range
- Example: Application firewall -> OSI Layer 7, looking at body of requests to intercept application level attack such as SQL injection
- Network Topology
- Ethernet and Switches (vs Hubs)
- Media Access Control (MAC) addresses
- Address Routing Protocol (ARP): Requests, Responses, and Spoofing/Poisoning
- Spearphishing and some OSINT
- Internet Control Message Protocol (ICMP, used for pings). Time To Live (TTL)
- Network Address Translation (NAT)
- Request For Comments (RFC's - Documents used for describing protocol specifications among other things)
- Wireshark
- Tom7 - Using ICMP as a hard drive for SIGBOVIK'22
- NetworkChuck - NAT
- Professor Messer - OSI Model
- Professor Messer - Spoofing
- More VPC & Subnets, NAT, Internet Gateway, Security Group (layer 4 firewall)
- Public subnet, private subnet
- Security basics: Encryption in transit, encryption at rest, intelligent threat detection, anti virus/malware software
- Bitwise Operators: NOT
~, AND&, OR|, XOR^, Shift-Left<<, Shift-Right>>, and Rotate Left/Right (no operator in Python). - Subnetting deep dive.
- SubnettingPractice.com
- Emerging networks: 5G, long range BlueTooth, IoT networks and applications
- VPC lab demonstration for creating VPC, Subnets, and NAT Gateway - Lab 52 in Modules
- Preparing for Interviews: Technical (technology you are learning vs. technology you know vs. similar technology you know vs. technology you cannot relate), and Behavioral (including scenarios based - tell a time me when you run into a conflict with co-worker, and open ended questions - tell me where you will be in 5 years time)
- Files
- Python's
withkeyword (context manager basics) and where you want to use it. - Windows Registry
- Structs (examples in different programming languages)
- Classes & Objects / OOP Basics (
__init__ method,self,methods, basic inheritance).
- Install Node.js, create React.js app with
npx create-react-app my-app
- HTML, CSS, and JavaScript Basics
- ReactJS Basics (stateless & stateful components)
Monday: ANZAC Day (No class)
- More React.js - started building a TODO App
- NodeJS & npm basics
- HTML Basics
- JS Basics:
varvslet&const, definingfunctions - Creating simple stateless components and basic use of
props.
- ReactJS:
useState()hooks, onClick events, event handler functions, events in React, create a counter with React - CSS: id vs classes
- Threads, Multiprocessing
- Intro to async/await and
fetch()
- ReactJS:
useRef()hooks, get values out of a refname = myRef.current.value, change value of element linked to refmyRef.current.value = "new value", deconstructing a JavaScript array (only in ES6 JSX) withnew_list = ["new_item", ...my_list], validating input within a handler functions,list.map()to create a list of components - Building a simple Todo list
- Connecting React frontend to FastAPI backend
- FastAPI - Cross-Origin Resource Sharing (CORS)
- Cross-Origin Resource Sharing (CORS) MDN - Recommended reading
- Interview practice
- ReactJS:
useEffect(), usinguseEffectto react to change of any particular state, ifuseEffectdoes not subscribe to anything -> will run once in the first render -> use this to initialize all data - FastAPI: backend API with
GET requestto get data out of a.jsonfile, andPOST requestto update the.jsonfile - Combine ReactJS + FastAPI: the simple Todo web app that can fetch initial data from file, and add more data to file. Reopenning the app will not lose data
- Homework: create a delete button on the React.js app, and make sure that all data is clear, test by refreshing the web browser
- Database Basics
- Security Basics
- Revision: Linux, Git & GitHub, React, Parallels between Python & JavaScript, HTTP GET/POST, API setup
- Database Basics
- SQLite & SQLite Sample Database
- SQLite Browser
- SQL:
SELECT,WHERE,ORDER BY,LIMIT - Connecting database to API
- Computerphile - The Problem with Time & Timezones
- Data Modeling Basics & Entity-Relationship Diagrams
- Relations: One-to-One, Many-to-One/One-to-Many, Many-to-Many, Cardinality
- Crypto Museum
- SQL string searching with
LIKE - get data from multiple tables with
JOIN - table short names
- multiple
JOIN - multiple
JOINwith conditionsWHERE - JetBrains DataGrip - Free for Students
- Cryptography: Brief History, Ciphers (Caesar, Polybius, Cipher Machines), Feistel Network
- XOR operation, Block vs Stream Ciphers, Symmetric vs Asymmetric (Public Key) Cryptography
- The Codebreakers Book by David Kahn for more history
- Certificate Authority Basics (and DigiNotar/Comodo hacks), browsers Chain of Trust
- Hashing Basics (Block size, Digest Size, MD5 / collisions, Pigeon-hole Principle, SHA3 contest)
- table relationships, dependency, order for adding and removing entries for inter-dependent tables (
ADD artists -> albums -> tracksandDELETE tracks -> albums -> artists) INSERT INTOsql statementDELETEsql statement- Back to React homework: button to remove all contents from Todo List
- Solving duplicate key problem for a List of
<div> - Guest Speaker: Thiago Canestraro
- More security: Hashing / Blockchains
- Recommended platforms for more cybersecurity: TryHackMe, HackTheBox (in office hours)
- Presentation practice rounds, demo of highlights, sharing own plans with class
- DataGrip SQL IDE tutorials
- Revise React.js:
useState,useRef,useEffect - Todo App with complete checkbox and remove button
- Cloud
- React.js deployment Part I
- CI/CD concepts revisit
- Security revision: Symmetric vs Asymmetric (Public Key) Cryptography. Diffie-Hellman & RSA concepts.
- SSH,
ssh-keygen, public key authentication (authorized_keys file, private key permissions) - AWS Console vs
awscli
- React.js deployment Part II (folder deployment_day_1)
- More SSH stuff
- Understanding an HTTP request
- Security Groups &
iptables(Firewall) demo - netcat & usage of sockets for networked services
- EC2 overview
- React.js & FastAPI deployment Part III (folder deployment_day_1)
- Secure password storage (bcrypt, scrypt, Argon2)
- HaveIBeenPwned
- Digital signature basics
- DNS and
dig: (A, AAAA, CNAME, NS, MX, TXT, PTR records) - Brief mention of Amazon SES (Simple Email Service)
- Containers Concepts & Docker installation
- Deploying a static site to S3 Part IV (folder deployment_day_2)
- Guest Speaker: Ash
- EC2 deep dive
- AWS Cost Calculator
- RDS & ElastiCache brief mention
- Linkedin workshop
- Docker: build and run
- Deploying a FastAPI app to Docker
- Docker port mapping
- Homework: deploy React.js from
react_day_6with Docker, entry point is usingserve
- Cloud
- Deploy React.js from
react_day_6with Docker, entry point is usingserve - Docker Compose intro
- Environment variable intro
- "Serverless" Computing with (AWS Lambda)
- Different triggers for Lambda
- Serverless Examples - FFMpeg to GIF - Supplementary. Not required for the course.
- More deployment with Docker
- Virtual Private Cloud (VPC), Subnets, Route tables, Internet Gateways & deploying Web/Database servers to different subnets
- Infrastructure as Code (IaC) Concepts (CloudFormation, Terraform, Pulumi)
- More IaC: Pulumi & CloudFormation
- S3 & S3 Glacier
- Python virtualenvs (
python -m venv venvandsource venv/bin/activate)
- AWS IAM: User, Policy (Effect, Action, Resource), Role (User, Service, Cross Account)
- AWS CloudTrail: all API calls to AWS account are saved here
- Issue Tracking & Project Management
- Assignment Tips
- PowerShell
- EC2 Deployment & Elastic Block Store (EBS) Basics
- System Manager (Session Manager, Patch Manager, Compliance, Parameter - string and secrets)
- CloudWatch Metrics (given by default, and also Custom Metrics like RAM and %Drive)
- CloudWatch Alarms
- Auto Scaling Group
- EC2 Launch Template
- AWS ELB - Application vs. Network load balancing
| Application Load Balancer | Network Load Balancer | |
|---|---|---|
| OSI Layer | Layer 7 | Layer 4 |
| Target | Private/Public IP, EC2 instance in ASG, Also Lambda | Private/Public IP, EC2 instance in ASG |
| Protocol | HTTP/HTTPs/gRPC | TCP/UDP/TLS |
| LB Static IPs | No | Yes |
| Session | Yes | Yes (new*) |
| Forward source IP | Yes (new*) | Yes |
| Cross-AZ balancing | Yes (by default) | Yes (not by default) |
| SSL Offloading | Yes | Yes (new*) |
| Authentication | Yes | No |
| Private network load balancing | Yes | Yes |
| Typical applications 1 | General backend with Application level awareness | Low latency media streaming (UDP) & connectivity (Gaming) |
| Typical applications 2 | Complex authentications supported (SAML/LDAP/AD) | Use static IPs to share/receive data with partner companies |
- Web Security
- OWASP Top 10
- MITRE ATT&CK & D3FEND
- CyberChef & Decoding Base64-encoded JWT's
- ThoughtWorks Technology Radar
- HackerNews
- Flow Charts - Group Exercise
- Sourcegraph Dev Tool Time Playlist - Has developers talking about their workflows
- FastAPI body, query string, input parameters
- Usecases for Docker ENV - default environment variable + dependency versioning
- EC2 Instance Store vs. EBS backed
- Type of EBS drives, and appropriate usecases for each
- SSH/Apache log files, hardening & configuration
- Sockets & Building network services with Python
- Analysis of log files with Python & UNIX utils
- Monitoring Basics (more to follow)
- React
propsandchildren(see react_day_8 folder) - More on React
- Review of UI Component Libraries
- Review of programming paradigms & concepts
- CodeWars
- CloudFront and benefits of CDN (security, cost, user experience)
- CloudFront usecases for caching static content: website hosting, paid content distribution, Lambda at Edge A/B testing, rerouting HTTP to HTTPS
- CloudFront usecases for caching dynamic content: Load Balancer distribution, HTTP response caching
- API gateway vs. Load Balancer
- Object Relational Mappings (ORMs)
- Abstracting interaction with databases
- Docker revision
- Meeting with Spark, Datacom, and Leaven.
- Continuation of CloudWatch with CloudWatch Logs (comparable to LogStash + ElasticSearch)
- ELK stack: LogStash for collecting log files, ElasticSearch for log searching and metrics generation, Kibana for visualizing metrics (comparable to CloudWatch dashboard)
- Billing console, billing report per product/department with Resource Tag
- StepFunction state machine, enabling more usecases with Lambda function
- RDS/Aurora - sync replication thinking of FailOver instance, async replication thinking of Read Replica
- Queue vs. Topic, Kafka overview concepts - topics, partition, replication factor...
- Topics vs. Queue revision
- Publish subcribe (subcribers are not aware of publisher) vs. Observer pattern (the opposite)
- SNS - push based - has many types of subscriber (email, txt messages, HTTP/HTTPs destination, SQS, Lambda...)
- SQS - pull based - for simple queue, if item pulled out -> item becomes invisible to other pollers
- ElastiCache in more depth
- RDS in more depth
- CloudQuest
- Cloud Practitioner Essentials
- Migration with RDS
- Route53 & DNS revision
- nginx configuration & examples of using DNS
- HowDNS.works
- ElasticBeanstalk
- More docker revision
- Solution Architect discussion & AWS Reference Architecture Diagrams
- AWS Architecture Blog
- Volumes (EBS, docker, and docker compose)
- Architecture for full-stack applications w/ both docker compose & AWS (frontend, backend, cache, db, queue)
- Cloud Practitioner Vouchers & Booking Exam Info
- Supplementary Fireside Chat w/ Geoffrey Hinton relating to designing software after physical/biological systems.
- Advanced EC2 features - pricing models (Spot, Reserve, On demands), Placement Group, Host settings
- DMS - Database Migration Service (one off mode and continuous replication mode, schema migration tool to convert MySQL to PostgreSQL)
- General AWS limits (S3 APIs, EC2 number of instances, ECS number of tasks...)
- Presentation Practice
- Practice Test for Cloud Practitioner exam
- More AWS practice exam here 20 free practice questions for all exams
- Advising on topics selection for the marked presentation source for basic topics, source for advanced topics
- AWS CodeCommit, CodeBuild, CodeDeploy, CodePipeline
- In place deployment, Blue/Green deployment
- Maria: S3 Static Website Hosting
- Allan: Terraform
- Matthew K: Scraping with BeautifulSoup
- Matthew R: Elastic Beanstalk
- Michael J: Automation with python and awscli
- Jarryd: AWS Amplify
- Heaven: CloudWatch
- Eden: Creating a portfolio with React
- Tahseena: Setting up and using load balancers
- Sheldon: Using IoT TwinMaker
- Robert: EC2 autoscaling
- Nisheeth: Using DynamoDB
- Nick C: Using AWS Kendra
- Asimina: Intro to TypeScript
- Wiremu: IP crawler that downloads certificates
- Joe Zhu: Using Pulumi to deploy a backend API server to AWS EC2
- Ben Browning: AWS Lambda
- Myat Lwin: Create Custom VPC with Public&Private Subnets
- John Simmons: AWS Comprehend
- Alice Kokado: Boto3 Python SDK
- Xinpeng Yang: AWS Lightsail
- Kumar AWS EC2 Backup
- More Presentations
- Another Practice Test
- Meeting with Sky
- Remaining Presentations
- Test
- Anki - Spaced-Repetition Flash Cards (see the Cloud Practitioner deck in this repo)
- DigitalCloud.training - AWS Cloud Practitioner Cheat Sheets
- AWS.PlainEnglish.io - Cloud Practitioner Study Notes
- Notes for Cloud Practitioner
- FreeCodeCamp - Cloud Practitioner 2020 - Supplementary video on preparing for CloudPrac exam. Caution: Some things have changed since then.
- Revision
- Assignment help
- Congratulations!
- EC2
- IAM
- Lambda
- S3
- Virtual Private Cloud (VPC), Subnets, Route tables, Internet Gateways
- System Manager (Session Manager, Patch Manager, Compliance, Parameter - string and secrets)
- CloudWatch Metrics (given by default, and also Custom Metrics like RAM and %Drive)
- CloudWatch Alarms
- Auto Scaling Group
- EC2 Launch Template
- Elastic Load Balancer
- EBS + EC2 Instance Store (IOPS calculation)
- CloudFront (how this relate to Load Balancer, S3, and APIGW)
- Route 53
- Elastic Beanstalk
- StepFunction (more Lambda)
- RDS/Aurora
- ElastiCache
- RedShift
- DMS
- EFS (NFS)
- S3/Glacier
- Storage Gateway
- SNS
- SQS
- CloudWatch Logs
- CloudTrail
- Organizations
- Tagging
- Billing
- Code Commit, Code Build, Code Deploy
- IaC, CloudFormation
Intended for team of up to 3 people, lasting 4 weeks
| Projects ideas | Difficulty | Nature | Suggested Week 1 milestone | Suggested Week 2 milestone | Suggested Week 3 milestone | Suggested Week 4 milestone | |
|---|---|---|---|---|---|---|---|
| Real-time World Statistics | Medium | Frontend development + Cloud Native Hosting | Identify data source (eg. Covid data), wide frame design for the visualization website, identify a place to host the website (eg. S3+Cloudfront), finalize the scope of work | 40% of planned work | 80% of planned work | 100% of planned work, Team presentation + Demo, figure out future directions for this projects | |
| A fully functioning e-Commerce Website | Low - Medium | eCommerce platform management + Cloud Native Hosting | Identify eCommerce platform (eg. Magento on LightSails, or EC2), and products to sell, finalize the features of the eCommerce website | 40% of planned work | 80% of planned work | 100% of planned work, Team presentation + Demo, figure out future directions for this projects | |
| A Blogging (News aggregate) Website | Low - Medium | CMS platform management + Cloud Native Hosting | CMS engine for the Blog/News website (WordPress, Gatsby...), wide frame design for the Blog/News website, identify a place to host the website (eg. S3+Cloudfront, or LightSail, or EC2), choose and finalize the scope of work | 40% of planned work | 80% of planned work | 100% of planned work, Team presentation + Demo, figure out future directions for this projects | |
| A Habit tracking app | Hard | Backend + Frontend development + Cloud Native Hosting | Identify authentication provider (AWS Cognito or Google Firebase), wide frame design for the web application, design a cloud native architecture (eg. APIGW+Lambda+S3+CloudFront), choose and finalize the scope of work | All the basic infrastructure components such as Authen provider, static web hosting infras, API gateway and backend components | Basic logins and half of the features | 100% of planned work, Team presentation + Demo, figure out future directions for this projects | |
| A project management app (extension of Todos) | Hard | Backend + Frontend development + Cloud Native Hosting | Identify authentication provider (AWS Cognito or Google Firebase), wide frame design for the web application, design a cloud native architecture (eg. APIGW+Lambda+S3+CloudFront), choose and finalize the scope of work | All the basic infrastructure components such as Authen provider, static web hosting infras, API gateway and backend components | Basic logins and half of the features | 100% of planned work, Team presentation + Demo, figure out future directions for this projects | |