Welcome to the jungle! Get ready to dance with the Python and embark on a GUIde to making something useful. This 5-day bootcamp is designed to give you a survival kit in Linux, an introduction to programming, and the basics of user interface development—all while keeping things fun and engaging.
Schedule: Each day runs from 09:00 to 12:00 and 13:00 to 17:00, totaling 7 hours per day.
- Objectives:
- Introduce the bootcamp's structure with a flair of adventure.
- Set expectations and get everyone excited for the week ahead.
How Do CPUs Work? - ExplainingComputers (YouTube)
-
Key Points:
- The CPU's role as the brain of the computer—no neurology degree required.
- Basic fetch-decode-execute cycle—how the CPU takes commands and makes magic happen.
- Introduction to the Instruction Pointer (EIP) and how it keeps the CPU on track.
- CPUs vs. GPUs: Why your graphics card can't do your taxes (yet).
-
Notes:
- (John) Von Neumann Architecture (1945)
- Control Unit
- Arithmetic Logic Unit
- Memory
- Input/Output
-
registers can store:
- instructions
- data
- memory addresses
-
buses:
- data
- address
- control
-
clock
- Ghz: billions of cycles per second
-
fetch, decode, execute cycle
- Program Counter or Instruction Pointer
- points to the next instruction in memory
- Control Unit
- fetches the instruction to the Instruction Register
- increments the Program Counter
- decodes it
- executes it
- Program Counter or Instruction Pointer
- machine code: instruction set of a CPU
- assembly language
- low-level programming language
- still compiled to machine code
- x86 (Intel 8086, 1978)
- CISC (Complex Instruction Set Computer)
- opcodes
- ARM
- RISC-V
- like ARM but open-source
- assembly language
- (John) Von Neumann Architecture (1945)
- Key Points:
- HDDs vs. SSDs: One spins, one doesn't, both hold your memes.
- How data is stored and why you should care about read/write speeds.
- The joy of waiting for a file to load—or not.
- Key Points:
- RAM: The computer's short-term memory (no goldfish jokes here).
- How RAM affects multitasking—why 100 browser tabs might slow you down.
- Difference between RAM and storage: One forgets, one forgives.
- Key Points:
- What is PCI? Think of it as the computer's expansion slot for new gadgets—because who doesn't like upgrades?
- Common devices: Network cards, sound cards—your computer's favorite accessories.
- How peripherals communicate with the CPU—it's all about connecting the dots.
-
The Good:
- Wide Availability: Like coffee shops, Windows is everywhere.
- Software Support: Runs a vast array of applications—from AAA games and Adobe Creative Suite to niche professional software.
- Compatibility with Legacy Systems: Your old software feels right at home.
-
The Bad:
- Viruses: Windows catches more bugs than a swamp in summer.
- Bugs and Glitches: Ever seen the Blue Screen of Death? It's not a metal band.
- Dubious Architecture Choices: Sometimes, even Windows doesn't know what Windows is doing.
-
The Ugly:
- Spying: Big Brother might be watching—you didn't need privacy, did you?
- Key Points:
- macOS roots in BSD Unix—Apple didn't fall far from the tree.
- The elegance of integration—when hardware and software finish each other's sentences.
- Limitations: You can have any color you like, as long as it's space gray.
- Key Points:
- Linux: The open-source underdog that's everywhere.
- Distributions galore—Ubuntu, Fedora, Debian—collect them all!
- Customization: Linux is like Lego for your computer.
- Where Linux Falls Short: Despite its strengths, Linux can lack support for certain proprietary software and games, making it less ideal for some users. It also often requires getting your hands dirty to drill down into issues, but there is almost always a way out of any issue.
- Key Points:
- Kernel: The bouncer of your system—decides who gets in.
- Userland: Where all the apps hang out.
- Interaction between hardware and software—making the magic happen.
- Key Points:
- Everything is a file—even your keyboard, sort of.
- Navigating the filesystem: Why root is not just for plants.
- Common directories:
/home
is where the heart is.
- Key Points:
- Users and groups: It's like social media for files.
- File permissions: Read, write, execute—permissions so important, they deserve their own rules.
- Changing permissions: Use
chmod
andchown
to manage access.
- Key Points:
- Terminal vs. shell vs. console—when words get confusing.
- Basic commands:
ls
,cd
,pwd
—the holy trinity. - Standard input/output: Talk to your computer without emojis.
- Activities:
- Install VirtualBox or your virtualization tool of choice.
- Step-by-step guide to installing Debian—no compass needed.
- Configuring settings: Making sure your virtual machine doesn't feel virtual.
- Commands:
ls
: List directory contents—see what's in the jungle.cd
: Change directory—explore new territories.pwd
: Print working directory—so you don't get lost.mkdir
: Make directories—build your own treehouses.rm
: Remove files or directories—clean up the camp.cp
: Copy files or directories—because cloning is cool.mv
: Move or rename files or directories—rearrange your stuff.touch
: Create empty files—start something new.cat
: Concatenate and display file contents—let the cat out of the bag.echo
: Display a line of text—make your computer talk.chmod
: Change file permissions—be the gatekeeper.chown
: Change file owner and group—assign ownership.
- Commands:
grep
: Search text using patterns—find what you're looking for.find
: Search for files—find that needle in the haystack.wc
: Word count—count words, lines, and characters.rev
: Reverse lines characterwise—because reading backward is fun.head
andtail
: Display beginning or end of files—get the gist quickly.env
: Show environment variables—see what's in the air.
- Commands:
htop
: Interactive process viewer—feel like a hacker.df
: Report file system disk space usage—avoid running out of space.du
: Estimate file space usage—find what's hogging space.free
: Display memory usage—see how much RAM is free.
- Commands:
ping
: Check connectivity—test if the server is alive.ifconfig
orip
: Configure network interfaces—networking basics.ssh
: Secure Shell—connect to remote machines securely.
- Commands:
man
: Manual pages—RTFM (Read The Fine Manual).--help
: Quick help for commands—get brief usage info.
- Key Concepts:
- Starting a script:
#!/bin/bash
—because magic numbers are cool. - Variables and loops: Make your script do the heavy lifting.
- Permissions: Make it executable—feel powerful.
- Starting a script:
- Activity:
- Create a script that generates a directory for each month.
- Inside each month, create a file for each day.
- Each file says something like
2024-01-01 is a Monday
. - Example:
cat ./2024/01/01.txt
outputs2024-01-01 is a Monday
. - Bonus: Add holidays—because everyone loves a day off.
- Key Points:
- What is Git? A time machine for your code.
- Repositories: Your code's cozy home—where commits become family.
- Commands:
git add
: Stage your changes—get ready.git commit
: Seal the deal—leave a message.git push
: Send it off—no take-backs.- Tip: Commit messages should be clear—or hilariously vague.
- Key Points:
- Variables: Containers for your data—or emotional baggage.
- Data types: Strings, integers, floats—no dating profiles needed.
- Type casting: Turning one type into another—like magic, but real.
- Key Points:
- Conditionals:
if
,elif
,else
—make decisions like a pro. - Loops:
for
,while
—keep going and going. - Break and continue: Control the flow—be the river guide.
- Conditionals:
- Key Points:
- Defining functions: Because repeating yourself is for parrots.
- Parameters and return values: Give and take.
- Scope: What happens in the function stays in the function.
- Activity:
- Write
print("Hello, World!")
—start your engines. - Run your script—feel the thrill.
- Write
- Key Points:
- Understanding error messages—decipher the hieroglyphs.
- Using
try
andexcept
—because mistakes happen. - Common exceptions: Know thy enemy.
- Activity:
- Create a program that encrypts and decrypts messages using a simple cipher, like the Caesar cipher.
- Allow the user to input the message and the encryption key.
- Display the encrypted or decrypted message.
- Goal: Practice with strings, user input, and basic algorithms.
- Key Points:
- Installing packages:
pip install package_name
—get new gadgets. - Virtual environments: Keep your dependencies in line—like herding cats.
- Installing packages:
- Examples:
requests
: Make HTTP requests—talk to the web.matplotlib
: Plotting data—make graphs that impress.pillow
: Image processing—because pixels need love too.pygame
: Simple game development—unleash your inner game designer.
- Key Points:
- User Experience: If you build something that works but no one can use, is it really useful?
- Accessibility: Making sure everyone can join the party.
- First Impressions: You never get a second chance.
- Overview:
- TUI: Text-based, like retro gaming.
- GUI: Graphical, point-and-click adventure.
- Web Interfaces: Accessible anywhere—even locally on your machine.
- Key Points:
- Tags and elements: The building blocks.
- Creating headings, paragraphs, lists—make it look official.
- Images and links: Spice it up.
- Key Points:
- Selectors and properties: Dress your HTML in style.
- Layout with Flexbox: Align items like a pro.
- Responsive design: So your page looks good on a fridge.
- Key Points:
- Variables and functions in JavaScript: Familiar yet different.
- DOM manipulation: Change your page without reloading—it's alive!
- It's a Trap: Beware of
==
vs.===
—JavaScript can be sneaky.
- Key Points:
- What is REST? Not just what you need after this bootcamp.
- HTTP methods: GET, POST, PUT, DELETE—the verbs of the internet's language.
- Status codes:
418 I'm a teapot
—the code you didn't know you needed.
- Activity:
- Use a public API to fetch data—because who doesn't like free stuff?
- Display data on your web page—make it interactive.
- Activities:
- Include Vue.js via CDN—no setup fuss.
- Data binding:
{{ }}
makes your data show up. - Event handling: Click, add, remove—control is yours.
- Goal: Create a functional app you can show off.
- Key Points:
- Setting up FastAPI: Fast and easy, like the name suggests.
- Defining routes: Decorators make everything prettier.
- Running the server: See your API in action.
- Activities:
- Create GET and POST endpoints—because interaction is key.
- Use data models with Pydantic—validate like a boss.
- Automatic documentation: Let Swagger do the talking.
-
Options:
- Project A: Build a real-time precipitation map—make it rain (data).
- Project B: Create a quirky app or tool that solves an engineer's pet peeve.
-
Examples:
- Overengineered Toaster Simulator: Simulate toasting bread with physics.
- Coffee Break Scheduler: An app that tells you the optimal time for a coffee break based on your workload.
- Activities:
- Apply everything you've learned—this is your moment.
- Work individually or form a fellowship—teamwork makes the dream work.
- Implement features, test, debug—embrace the journey.
- Key Points:
- Don't fear failure—it's just a step towards success.
- Seek help when needed—Google is your friend.
- Iterate and improve—Rome wasn't coded in a day.
- Activities:
- Demonstrate your project—bragging rights earned.
- Share challenges and how you overcame them—be the hero of your story.
- Receive feedback—because growth is the ultimate goal.
- Key Points:
- Recap the adventure—look how far you've come.
- Next steps—this isn't the end, it's just the beginning.
- Celebrate—you're now a survivor of the CS jungle!
Remember, the goal of this bootcamp isn't just to learn—it's to ignite a passion for computer science and empower you with the tools to innovate. So gear up, stay curious, and let's code our way to greatness!