Skip to content

Latest commit

 

History

History
95 lines (55 loc) · 5.25 KB

File metadata and controls

95 lines (55 loc) · 5.25 KB

Overview

Project-Based Learning

One of the best ways to quickly learn a new topic is to build a project that leverages knowledge of that topic. Project-based learning enables you to learn about areas you're curious about via constructing projects that use them.

By applying project-based learning to your life, you'll not only learn tons of new things that college might not teach you, but you'll also bolster your resume with personal projects that demonstrate your skills in new areas.

Choosing a Topic

The first thing you have to do is find a topic you'd like to learn more about. This topic can be anything you'd like! For example:

  • A programming language you'd like to learn better
  • A technology you'd like to understand
  • An algorithm you'd like to implement

Don't worry if it seems like what you're interested in is vague -- that's totally natural. It's hard to know what you can do until you start to dig into it a little.

Example

Let's say that we're new to computer science, and we want to pick up our first programming language. Python sounds like a good choice of topic for that (if this applies to you, definitely come to our workshop next week)!

Finding What's Possible

Now that you've found a topic you'd like to dive into, you need to start thinking about what you'd like to do that can make use of that topic. If you have some cursory knowledge of your topic, you'll know what types of things you could make with it, so this step may not be totally necessary for you.

In the case you don't know much about your topic of interest, it will take just a little research to figure out whether we're looking into the right topic.

Here are some good examples of possibilities:

  • Learning Python by writing a game
  • Learning network sockets by writing a chat program
  • Learning cryptography by writing a file-encrypting application

Here's a not-so-good example of a possiblity:

  • Learning Java by writing an HTML page -- this doesn't work, since Java isn't directly related to HTML

Example

Following from the previous example, we decide that we'd like to make a game in order to learn Python.

Building an Idea

Now this is the first fun part: brainstorming. Now that you know vaguely what you'd like to do, let's have fun with that idea!

Think of all the features that you'd like to add in your optimal project. What would users be able to do? How would the application look? What does the interface look like? Try jotting down what you'd like using your application to work like.

In the end, you'll have an ornate, beautiful idea to work with. Keep notes of what this idea is, and come back to it if you ever start to feel like you're losing interest.

Example

We decide that we'd like to write a side-scrolling adventure game. We nail down our setting, and we start to think about how the controls, levels, XP, and enemies might work together. By the end, we have a 100-node mindmap detailing all the features we'd like to have.

Breaking it into Bite-Sized Victories

If you start to work directly on your idea at this point, you might feel yourself becoming overwhelmed within a couple of hours.

To reduce burnout, it's a good idea to break down your idea into its individual parts. Try to find the pieces of your idea that you can make individual mini-projects out of. If you can break your massive idea into parts that might take you a day's work each, then you're well on your way to finishing your project!

It's also a good idea to try to remove complexity from parts that matter less to you. If you're trying to build an chat application, but not interested in learning a user interface library to make it look pretty, then don't worry about your application looking pretty -- make the interface take input from the terminal if that's easier for you.

Example

We know we can break our game down into several pieces:

  • The main menu
  • The free-roam stage where we move around the map
  • The combat stage
  • The player itself
  • The XP system
  • ...and so on.

Depending on how in-depth we'd like each part to be, we might be able to finish each part in a few days.

Also, we know that we don't really want to learn a graphics library, so we decide to use ASCII (text) art for our game's visuals.

Taking the First Step

Now that you've broken your idea into different standalone pieces, pick the one you'd like to do most and go at it! The Internet has everything you need, and nothing is stopping you.

Along the way, you'll run into many problems -- it's bound to happen. Here's a couple tips.

  • Use resources like StackOverflow to learn more about errors, bugs, and glitches you don't understand, as well as how to do individual things in different programming languages.
  • Try to find tutorials related to issues that you find yourself stumped about.

We're looking forward to seeing what you create :)

If you're interested in learning more about how to manage your projects and how to break them down more effectively, definitely look at the Fleshing Out the Details tutorial in this workshop.