Giter VIP home page Giter VIP logo

learn-code's Introduction

Learn to Program

So what is this?

I initially thought of this as a course, but after further evaluation, it really won't be. There won't be weekly lectures, there isn't a detailed lesson plan, there's no grade, and I wouldn't say I'm your teacher.

At risk of being corny and for lack of a better word, think of this as a journey. You've set off with a destination in mind - to learn how to program. It will probably take a long time. You'll certainly invest a lot of hours to accomplish it. It'll get really hard at times, you may get lost at others, but along the way you'll come across plenty of "ah-ha!" moments and in the end, you'll understand how to create programs that do stuff and things.

If you're on a journey, then my role is just to guide you along. I'll be providing you with resources for topics that are important to learn. I'll occasionally write up overviews on some of those topics, but mostly I'll be deferring to already existing learning materials that I've vetted.

I think the key to learning how to program is doing it with others. Doing it on your own is possible - that's what I did - but it takes a lot longer. I think if you put a few people together that want to learn the same thing, they'll encourage and help each other in ways not possible when going it alone.

To facilitate that, there will be a Slack workspace where you can discuss whatever you want. If you have a question, ask it there and I'll respond. If you found an interesting video or article, share it there. If you just did something cool, share that too. If someone shares an article, read and comment on its contents. If you want to post memes, go to the #memes channel and share some dank ones.

I plan on drafting multiple problems statement of increasing difficulty. Think of them as labs. If you have ideas about things you'd like to make, run them by me and we can work out a way to break them down in manageable chunks.

Coming in, I won't assume you know anything about programming or its associated tools. Coming out, the ultimate goal is to have the skills desired by companies hiring front-end web developers.

I suggest a minimum of 10-15 hours a week of doing something related to programming (either literally coding, or reading an article or watching a video, etc).

What is programming?

Programming is just making programs.

There are many tools that a programmer uses to write programs. You'll learn those too.

What's a website?

A website is just a program on a server (the backend) that sends data to a program on a user's machine (an internet browser - Chrome, Firefox). That data contains HTML (a markup language - it's just a bunch of content). It contains CSS (a stylesheet language - it describes how the content looks). And it contains Javascript (a programming language - it is the brains, and is how you program what happens).

Overview

Before jumping into any of the individual languages required for making a website, we'll first focus on Python. Python is probably the simplest programming language for beginners, so it's a good place to learn the fundamentals of programming. By that, I mean what is common amongst all programming languages: variables, functions, libraries ...

As you learn Python, you'll also learn the tools needed to write and manage programs. When you move on making websites, you'll use some of the same tools.

Topics

File system - How file locations are represented, and how to work with files.

Terminals - How to navigate the file system and run programs using text commands.

Git - How to retain a history of your project, how to collaborate on a project across multiple machines and people.

Languages - Python, JavaScript (then later - TypeScript), HTML, CSS.

Modern JavaScript development - package managers, node.js, parcel

...and more.

Where to begin?

Python

This interactive course on Python from Codeacademy is good. Can do it all in the web, so don’t need to do any setup beforehand. Will expand to running Python on your own machine (instead of on the Codeacademy website) after you have some familarity with the language. The pricing model is a little steep. But luckily, they give a 7 day trial. So I suggest speeding through this within that time frame.

Your Developer Environment

First, a note on hardware. While it is not impossible to learn programming on Windows, it is more difficult to setup a friendly developer environment. I highly suggest a Mac. Refurbished MacBook Pros sell for ~600. New is ~1300. Get something with at least 8 GB of memory. Ubuntu would also work, but will require more work. If you just use Mac, everything will be easier. With that said, you can make Windows work, and we can likely find workarounds for any issues having a different type of machine will cause.

Let's set up some developer stuff.

Make an account on GitHub. Use a professional username - same as email. I suggest <firstname><lastname>. Mine is connorjclark.

Install VSCode

Install CLI tools - git, iterm2 (a better terminal that the default one on Mac. You can stop after step 4. Maybe do the rest later.

TODO

https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.