Code Monkey home page Code Monkey logo

curriculum's Introduction

The Odin Project Curriculum

The Odin Project (TOP) is an open-source curriculum for learning full-stack web development. Our curriculum is divided into distinct courses, each covering the subject language in depth. Each course contains a listing of lessons interspersed with multiple projects. These projects give users the opportunity to practice what they are learning, thereby reinforcing and solidifying the theoretical knowledge learned in the lessons. Completed projects may then be included in the user's portfolio.

Lessons are structured through a combination of original written content and a compilation of carefully curated resources from the web. This is where the contributing happens!

This repo contains the actual lesson files used on our website. For the actual TOP app that pulls in this lesson content and contains our front-end and back-end code, please go to the main TOP repo.

Our community can be found on the TOP Discord server.

Contributing

The Odin Project depends on open-source contributions to improve, grow, and thrive. We welcome contributors of all experience levels and backgrounds to help maintain this awesome curriculum and community. If you would like to contribute to our curriculum, be sure to thoroughly read our contributing guide.

Some of the things you can do to contribute to our curriculum include:

  • Correct typos and other grammar errors.
  • Rewrite parts of existing lessons to make them clearer and easier to understand.
  • Fix broken links.
  • Add new resource links you think would make a lesson better.
  • Work on entirely new lessons after getting approval.

Happy Coding!

* See license.md for usage details.


Created by Erik Trautman

curriculum's People

Contributors

01zulfi avatar 105ron avatar arku avatar bycdiaz avatar catqueencodes avatar codyloyd avatar couchoftomato avatar craftykate avatar csrail avatar eriktrautman avatar hgducharme avatar i3uckwheat avatar javier-machin avatar jonathanyiv avatar kevinmulhern avatar kriox26 avatar leila-alderman avatar leosoaivan avatar linkonsat avatar marvingay avatar mclilzee avatar mindovermiles262 avatar nikitarevenco avatar rlmoser99 avatar robocopyzer0 avatar thatblindgeye avatar twalton83 avatar wise-king-sullyman avatar zachbaird avatar zachmmeyer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

curriculum's Issues

Severe issue with rspec --init

Was unable to do the rspec part of the odin project in windows because of this. Here's the stack overflow question I posted:

http://stackoverflow.com/questions/25858155/rspec-init-not-working-mkd-ir-invalid-argument-c-errnoeinval/25860824#25860824

I had an email to the designer of rspec with a link to the stack overflow question. As you see, he replied. I think it's a link to some sort of fix, but I don't really understand it. It would be of great help to me and other Windows users if a way to use the fix was added to the curriculum. Thanks.

In the mean time, I have an Lubuntu VM, and I tried to run the install fest over on my VM. It works, and if no one figures out how to make rspec work on windows in the meantime, I might go and fork the curriculum with some info on how to get a VM started in order to help Windows users. The problem is, I'm by no means an expert on VMs or Linux. I've just been using it to program in C along with Beginning C and Learn C the Hard Way. I'd know I'd have to recommend using Lubuntu, in order to be able to capture a larger audience with cheap laptops, but that does sacrifice a little bit of the user friendliness of the Ubuntu UI. I know there's at least one issue I ran into when setting up using the Linux Installfest, where the UI to switch to login shell wasn't available and I had to cry to stack exchange until they gave me the right shell command to solve my problem:

http://askubuntu.com/questions/524640/run-command-as-login-shell-in-lxterminal

Probably the best way to download something as big as an OS in most cases is a torrenting, so we'd also have to teach some one to download a torrent client and get the magnet link to the latest lubuntu version.

Does anyone else think this is a good idea? Does any one feel like they have the right set of tutorials or expertise to add this to the curriculum? Or does some one think this would be inappropriate?

In addition, there's an issue with the rspec tutorial on code school, where even on lubuntu, rspec followed by file path in your project directory (as the tutorial suggests) will give you one of those crazy long powershell error messages, but typing rspec from the project directory works like a charm. I think this is a change that happened due to a rspec update. I'm not sure how the project is supposed to go about handling that sort of thing? Do we just warn them before sending them that way or what?

Hope this was helpful.
Roman A Davis

Registering for Slack doesn't work

When clicking the Register Button I get an Heroku "No such app" - error reading:

There is no app configured at that hostname.
Perhaps the app owner has renamed it, or you mistyped the URL.

Missing Hartl Tutorial Chapter

There seems to be a missing Hartl Tutorial chapter; I think it might be new but I'm not certain. Hartl states that it's closely related to the user authentication/authorization chapter, so it might be worth adding as a project somewhere.

Revised link to official GitHub Training site

In the 'Additional Resources' section of 'Using Git in the Real World' there appears to be a dead link to the Github Training site. Their link appears to have changed from teach.github.com to training.github.com

Broken link

Dear Odin,

I have found a dead link in Web_development101/Introduction_to_the_front_end lesson. The link at the bottom of the page in Additional Resources does not work, namely: Skills of a Successful Front-end Web developer.

Cheers,

Node.js learning

In reference to #2874

Since we want a catch all, here's my preliminary suggestion

Complete all the free sections on https://www.learnallthenodes.com
Complete how-to-npm, learnyounode, expressworks, learnyoumongo from NodeSchool, in that order.
The first website is pretty cool, they have a paid subscription but that mostly gives you access to more niche topics as a way to support the website. Otherwise, they're dedicated to keeping the site updated and teaching node for free. The video series goes through the process of building a rich MEAN app from the ground up.
The second is a pretty huge and global open-source movement, so the tutorials will definitely stay up to date, as tons of workshops and sites like FreeCodeCamp rely on them.

Optional: Read this short article series on Medium
The first article talks about typical web applications, like those built with Rails
The second article talks about what the MEAN stack is and how it compares to Rails
The third article is short tutorial that builds the most basic MEAN app possible
Disclaimer, the author is a Ruby engineer but seems to bash Rails a bit.
I found the first two articles to be a great read, as he concisely explains the history and concepts surrounding web apps.
The third article was especially awesome since the code is so compact and simple, you can read the code and understand what it's doing, and it serves as a really sweet reference since most of it is boilerplate that you'll have to write for every MEAN app. To top it off, there's a small assignment at the end too.
https://medium.com/@dickeyxxx/mean-the-monolith-crusader-47b2c30936cd#.sdn4bwagu

Last, but not least, I found it a bit disconcerting that Node.js comes before front-end frameworks in TOP, which is the opposite of how it's taught anywhere else, online or offline. Even the link I removed suggested starting with front-end first.

Chinese

Thank you for your awesome project~

I want to translate it into Chinese, is this OK?

Not very useful command line resource, alternative suggested

On How Does Your Computer Work? section, item 3 of the assignment suggests: "To gain a better understanding of your command line, start with this simple walkthrough by Avi of the Flatiron School."

As you can see on comments 1, 2, 3, 4, this often confuse more than it helps, so I think it's better to remove it.

Zed Shaw's Crash Course does a much better work. Alternatively, this is another good basics tutorial: Command Line Basics - Level Up Tutorials (instead of N°3).

How to indicate whether a resource is useful?

As I go through the courses, some of the resources are remarkably better at explaining things than others. Is there a way for us to include a poll / upvote system that allows users to indicate the usefulness of each resource?

This will keep the curriculum fresh and constantly tested. Even if the result is not public, the ability to mark a resource as helpful is still valuable to an user as a record-keeping device.

Project: Ruby out of date

The Test-First Ruby is not updated to RSpec 3.xx so it no longer works. If we should continue using the outdated project, please add instructions for how to downgrade to RSpec 2.xx.

Fork issue?

Are forks working for others? Can't seem to access mine.

Adding SQL Resources

TLDR: New resource available. We should add Khan Academy's new course as well.


Hey,

First of thank you for this simply amazing collection of resources and structuring them in the way that you did! However I was not very satisfied with the SQL side of things.

The DB1 and DB5 courses picked up pace way to quickly without enough explanation and I found the SQL Zoo to not be very helpful at all.

I suggest that you change the primary SQL resource to http://sqlbolt.com it's a very good interactive tutorial very similar to the RegEx ones.

Let me know what you think!

Kind Regards,

Alexander

Use of "swathe"

Swathe is defined as something used to wrap something else.

In context of the sentence, "swath" (a broad area of something) should be used.

Or you could rewrite the sentence for even more clarity by removing the uncommon "swath(e)" altogether, e.g. We will cover a very broad area of knowledge here, and that's intentional. It's silly to dive straight into server-side programming... etc.

Middleman and Rack

Firstly thanks for a great project. I refer lots of people to it and the feedback is almost always good.

I looked at the curriculum recently and it reminded me of an article long time ago that helped A LOT when I was learning:
http://techiferous.com/2010/07/roadmap-for-learning-rails/

Surprisingly it's mostly the same but Odin is still missing nanoc and Rack. Though an argument can be made that they're not essential, I believe small bits of information can go a long way in connecting the dots for learners between Ruby and the web.

I recommend Middleman over nanoc as it follows similar conventions to Rails so no time is lost. There are many good tutorials for it:
https://github.com/sbellware/middleman-lesson/blob/master/middleman.md
http://12devs.co.uk/articles/204/
http://willschenk.com/building-sites-with-middleman/

For Rack:
http://code.tutsplus.com/tutorials/exploring-rack--net-32976
https://gist.github.com/robbinhan/4247728
http://codenoble.com/blog/understanding-rack-middleware/

Hope this helps.

A 'last updated' for every page

Maybe we can add 'last updated' timestamp to every page to reflect when was the last time the page was updated and going further ahead we can also add the changes made to that particular page the last time it was updated. This will help the users to have the information about how up-to-date the site is.

Improve Ruby Project in Web Development 101

This project is currently in a bad state, Some work needs to be done to the instructions to make them clearer and less confusing.

The project itself can use a lot of improvements to make it easier to set up on the users local machine and get the tests running.

All of this together will make the project a much more enjoyable and less frustrating learning experience.

To do for instructions on lesson page

  • Remove the link to the outdated version of the project - done
  • Remove the instruction for using the in browser environment - done
  • Remove instructions for which one to do and replace it with do them all (we will remove the un-needed exercise from the project) - done

To do for the project files

  • Move it into the odin organization - done
  • Remove un-needed exercises - done
  • Remove pry-bye bug from the gem file - done
  • Create the files where the code will go so they are there by default. - done
  • Update the read me to have clear installation instructions, include a step to run rspec --init in the root of the project - done

Option to change default homepage when visiting main website

Whenever someone signs into TOP, they are redirected to the 'Courses' page. And when someone who is already signed in, visits www.theodinproject.com, they are on the same homepage as seen by the new users. For a person who has already seen all the steps and has been using the site for some time, it doesn't make sense. When visiting FreeCodeCamp, the user is redirected to the last challenge you were on. We can do something similar here. Or maybe an option for the users, either the default homepage or a particular course or the last challenge you were on.

Broken Link

The link to Nitrous.io, under the note for the assignment in Web Development 101: How Does Your Computer Work, is broken.

404 Link

I just wanted to let you fellows at viking code school know that the additional resource titled "UX 101: What is User Experience? from Dashburst" under the "What is User Experience?" prep work page is no longer there.

Thanks!

SUGGESTION: deliver_now instead of deliver

When you invoke PassengerMailer.thank_you(Passenger.first).deliver!, the email actually "sends" and everything works fine, but you get a DEPRECATION warning message like this:

DEPRECATION WARNING: `#deliver!` is deprecated and will be removed in Rails 5. Use `#deliver_now!` to deliver immediately or `#deliver_later!` to deliver through Active Job. (called from irb_binding at (irb):1)

Should we update to deliver_now!??
I put suggestion because it's not urgent since everything still works, but when rails 5 is released it won't

The Odin Project Blog Page

Hey guys I realize you currently host a blog on tumblr, but I'd like to propose that we build a page on the site itself for our blog posts. This link to the page could potentially be on the top navigation bar. I think the positive to this are more people will be checking this out. Personally I was not even aware you guys had a blog until i talked to Kevin. We can also easily control the layout of the blog and empahsize the viking theme. currently it looks pretty bland and un-inviting.
The blog content looks great but I would also recommend adding some other things and publishing a blog post weekly.
somethings I'd like to see added to the blog content:
-weekly status: what was accomplished and what will be accomplished

  1. perform interviews of core team members (we would love to know how you got to where you are today and what you guys do for fun)-newbies can help out! This doesn't have to be weekly just interview everyone.
  2. look for 2-3 software related news and provide the links to those articles for further reading (I'd like to keep up with technology and web dev and this is a great way)
    3.List some open source resources/projects that we could jump into and start contributing. If Odin has any easy/starter issues list them here and invite newbies to give it a shot
  3. A couple of miscellaneous memes/articles/jokes from the week that you found funny. doesnt have to be coding related but it could be
  4. provide figures and people to follow on twitter/github/facebook that you see are influential and we could learn from. (examples: codenewbies on twitter, newbiecoderwarehouse on facebook, etc.)
    We could have a certain bunch of people dedicated to doing this every week.

Dead links to Flatiron school

Hi,

I'm currently working through the Odin Project from start to finish. The experience has been great thus far.

Within Web Development 101 ---> The Basics: Terms to Know ---> Assignment 1, all of the links are now dead. The content is technically hosted by The Flatiron School, but I figured that giving you all a heads up was likely more beneficial / faster than trying to contact them.

If you prefer I contact The Flatiron School, please let me know! The list of terms looks great to have as reference.

With kind regards,

Drew (shima)

Project: Ruby in WebDev101 needs a warning about rspec version

It seems that the test-first gem-file has a bug in it's rspec requirement (see the Edit of the first answer here ) and thus won't work with rspec 3.

A warning and instructions on the course page on how to install an older version of rspec should be sufficient but before I open a PR I'd rather get confirmation on that.

Note:
I've also opened an issue (alexch/learn_ruby#23) on the tutorial's repository. So this issue might simply become superfluous.

Two broken links in HTML & CSS basics

In Web Development 101/ The Front End/ HTML & CSS basics the links for OverAPI's HTML Cheat Sheet & OverAPI's CSS Cheat Sheet are broken. They take you to overapi.com/css/ and overapi.com/html/. If you remove the final back slash from each link they work.

Possible new link

See email pitch below, need to see if this is actually a good link or just spam:

Dear The Odin Project.com

I was searching for some articles about Cloud Computing today and I came across this page:
http://www.theodinproject.com/web-development-101/the-cloud-hosting-and-software-as-a-service-saas

I noticed that you link to one of my favorite articles--The Beginner's Guide to the Cloud – Mashable. Linked under: “Assignment (1. Check out this explanation of cloud computing from mashable”.

Just wanted to give you a heads up that I created a similar piece of content. It's like The Beginner's Guide to the Cloud, but more thorough and up to date:
https://www.workbooks.com/what-is-cloud-computing

Might be worth a mention on your page.

Either way, keep up the awesome work!

Consider adding an entire chapter/section on the web inspector

Great project...I just have one request/piece of advice for now: I think you should teach the web inspector, perhaps as soon as they learn their first bit of HTML.

I've taught the web inspector to very non-technical audiences...often to other journalists, to show how it can be used to find hidden data files. But what they get most out of it is a hands on understanding of what HTML actually is, even if they never intend to be a web dev. What really blows their mind is how you can edit HTML inside the inspector and the page changes.

Yes, that's pretty obvious to anyone who has done a little web dev, but the majority of people don't understand that the web is just text. And for those that do, the web inspector is still a fantastic tool to learn, interactively, how CSS selectors and attributes work...and of course, it's not time wasted to learn the tool at any point, as they'll be using it for the foreseeable extent of their careers.

I've written a couple guides here:

http://ruby.bastardsbook.com/chapters/web-inspecting-html/
http://dannguyen.github.io/NICAR/2012/02/25/nicar-2012-inspect-the-web-with-your-browsers-web-inspector/

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.