ossu / computer-science

🎓 Path to a free self-taught education in Computer Science!
MIT License
172.46k stars 21.77k forks source link

Suggestion: External website with curriculum and keeping track of MOOCs completed. #265

Closed ghost closed 8 years ago

ghost commented 8 years ago

I think it would very interesting to structure this project into a curriculum like FreeCodeCamp (FCC).

If you are unfamiliar with FCC, it is basically a web-development curriculum online. You sign up, do some task or project and submit your work when done and progress to the next level. The projects and tasks get progressively more challenging and at the end of the curriculum you are left with valuable skills, experience and a nice portfolio of projects.

It would be great to have something like this, but instead of projects and tasks you complete MOOCs.

Very excited about the potential for this project.

What do you guys think?

Avrozavr commented 8 years ago

Hello, Mirzal, I would like to express my opinion: I like the concept and the community of FreeCodeCamp a lot! And the fact that they are constantly evolving. And I got to the bonfires, so I spent there like 50 hours or more, I don't recall correctly. But for me learning leap from waypoints to the bonfires was too steep. I know that this is highly subjective, but that's the way it was.

ni8mr commented 8 years ago

Bootcamps like Freecodecamp has their own perks but also there are some lacking. In MOOCs, you can learn from academia and understand some core concepts. Where in coding bootcamps, you will be introduced with the industry level coding practices. Both are important, but without minimum academia knowledge, it will be hard to upgrade in the field.

crmackay commented 8 years ago

@mirzal I really like this idea....I think there was some work a few months ago on something like this, but either way I like it. It would make it easier to find people taking similar courses, work on final projects together etc, and also seeing how much progress other's have made gives you motivation to keep going...I think it would be a great step in building a community around OSSCS

tangent: how does FCC assess progress and verify achievement of certain milestones? I've been wondering if it was possible to set up some sort of peer-review method

ghost commented 8 years ago

@crmackay Thanks for the response.

For FCC, in order to progress, you just submit an URL with your finished project. It is only reviewed once you complete the entire program and apply for the non-profit work (actual work experience). Not 100% sure, but I believe it is the core maintainers of FCC that review your projects.

With OSSCS, you could submit an URL to course certificate for example. And/or like you mentioned, peer review.

ericdouglas commented 8 years ago

@MirzaI I'm familiar with FCC.

In fact, we're already structured like FCC. We have the linear curriculum and for each course, the student should make a project to consolidate his/her knowledge.

IMO, what we need to do now is: create a profile page where students will be able to show their progress/projects.

I'll try to create this mockup to show for our community in the next weeks/months.

The most important thing we already have: our curriculum. Now students just need to take the courses and create their projects, because this is what really matters in the end.

"It would be great to have something like this, but instead of projects and tasks you complete MOOCs."

Yes, for sure! It's exactly what I think that we need to do. The big difference is that what I'm thinking is to create some basic frontend app where student will be able to manipulate the JSON data, removing/adding courses based on the original JSON file that will contain our curriculum structure.

I really want to give students such level of liberty, because is inevitable we'll need to make updates in the curriculum, but I don't want that such updates reflect in the courses that the students have already done.

Make sense for you guys?

crmackay commented 8 years ago

@ericdouglas

  1. welcome back! we're glad you're doing well, and are exciting to see OSSCS keep improving!
  2. I think starting with a simple way for students to have a profile and a list of completed and in progress courses (and maybe a link to the course/topic final project) is a great first step.

Down the road...

I would like to see a way for students to demonstrate that they "completed" OSSCS. This gets complicated when you start thinking about how long many students will take (a few years), and how frequently MOOCs change, and so how frequently the OSSCS curriculum will need to change. Someone starting now, might not be able to take all courses, as listed, since in a year or two they might have changed, been removed, or been reworked by professors into slightly different courses.

I don't have a good solution for this ... its almost like maintaining backwards compatibility whenever the curriculum is updated...somehow...

ericdouglas commented 8 years ago

@crmackay thank you! :pray:

I think that we need a solid curriculum (we have :white_check_mark:) but students should also have some freedom to remove/add some courses to their personal profile, because maybe someone already took some classes in the University, have no interest in some classes, or want to add some extra courses in their curriculum.

For that reason the best approach IMO is to not have a unique source of truth, but a start point for students create their own curriculum along the journey.

"I would like to see a way for students to demonstrate that they "completed" OSSCS"

Yes, I totally agree! This is the main reason to have a flexible structure/curriculum! :smile:

crmackay commented 8 years ago

It's a good point. I tend to overthink things before they get started (a personal flaw of mine). I think having each student adapt the OSSCS curriculum framework to their needs makes a lot of sense.

I also want to throw out the idea for later: instead of emphasizing checking off courses, is there a way OSSCS can better emphasize competency. Watching videos and doing homework is one thing, but to demonstrate you have actually learned something you need to actually use it. This is why I like the "project based learning" idea mentioned in the readme. It's a great idea which is becoming very popular in many pedagogical circles, so I hope it continues to be emphasized.

Cheers

and let us know if we can help with the demo in any way.

ericdouglas commented 8 years ago

@crmackay I really appreciate your feedback and your interest to help us!

"This is why I like the "project based learning" idea mentioned in the readme. It's a great idea which is becoming very popular in many pedagogical circles, so I hope it continues to be emphasized."

This is the key point in this initiative, and what really makes our project special. Imagine when a good amount of students make their projects for each course... We'll have an excellent material to study and to inspire and give ideas to the following students.

"and let us know if we can help with the demo in any way"

It would be amazing! We need to think what are the necessary information the profile page need to have and create a mockup/basic layout.

After this we should start to refine the layout and develop the frontend application in a modular way, in such way that it works for every type of curriculum. E.g: A list of books, a list of articles, etc.

This is the basic idea that we need to discuss.

crmackay commented 8 years ago

ok here's a first draft:

PS - the github API could be useful, but at a minimum, you can pull avatars by simply using something like:


<img src="https://avatars.githubusercontent.com/{username}" >

TRY IT OUT

Davkilla101 commented 8 years ago

Interesting, do you guys also require hosting for this? I've found that 000Webhosts is pretty good for things that don't require too much in the way of processing power, plus it's free.

Alternatively, I could personally host this on a Raspberry Pi 3 that's being shipped to me as we speak, though my internet connection isn't all that reliable.

ericdouglas commented 8 years ago

@crmackay I'll do a list and open a new issue that we can discuss it. But all those things that you described are necessary and I agree with you (just the oauth won't be necessary in the way that I'm thinking).

@Davkilla101 thank you for your suggestions! In fact, the first version of this app that I'm thinking will be hosted on Github Pages. In that way we're free of such task (at least initially).

Basically, it'll be a frontend app that will consume a JSON file in the same directory.

Davkilla101 commented 8 years ago

@ericdouglas true, though GitHub might get irritated at us for using too many resources.

ericdouglas commented 8 years ago

@Davkilla101 it'll be a simple html page :sweat_smile:

:octocat: == :heart:

Davkilla101 commented 8 years ago

@ericdouglas ah OK, I was under the impression that it was going to be something more complex/resource intensive

crmackay commented 8 years ago

@ericdouglas cool...I'm interested to see what you come up with!

ghost commented 8 years ago

Some comments to the posts above.

Most MOOCs and the various honor codes ask that you do not upload complete assignments / projects online. Do you intend to disregard this or do you have other projects in mind? Maybe you can elaborate on what you mean? I think project-based learning is great as well, but don't see how it would work regarding MOOCs.

Regarding freedom of choice, there are some benefits with strict(er) curriculum. The reason I am doing FCC (and loving it) is because of its strict and linear curriculum. It gives me the entire path to follow sparing me the time to research and the anxiety of choice. It's very easy as a beginner to jump from one language to another, from one framework to another etc.

It also is easier to collaborate and maintain a community when people are doing roughly the same courses, as opposed to if everyone is doing their unique curriculum.

I do agree some choice is good, for example 2-3 different courses per category. For example a categories would be: Algorithms, Intro to programming.

ericdouglas commented 8 years ago

@MirzaI thank you for your feedback! I have good news for you. Everything that you want to see is already stated in our How to use this guide.

"Most MOOCs and the various honor codes ask that you do not upload complete assignments / projects online. Do you intend to disregard this or do you have other projects in mind? Maybe you can elaborate on what you mean? I think project-based learning is great as well, but don't see how it would work regarding MOOCs."

Content Policy

"Regarding freedom of choice, there are some benefits with strict(er) curriculum. The reason I am doing FCC (and loving it) is because of its strict and linear curriculum. It gives me the entire path to follow sparing me the time to research and the anxiety of choice. It's very easy as a beginner to jump from one language to another, from one framework to another etc."

One problem with the FCC model is: when they change the curriculum, you lost what you did or you have an incomplete topic. I don't want to do this with the progress of our students.

More about "our way": Order of the classes, Should I take all courses?

crmackay commented 8 years ago

@mirzal so i would not want students to share solutions to problem sets, quizzes, or exams. I see it as, when you finish a course you should do something with that new knowledge, to demonstrate that you actually absorbed the material (and to practice it...if you actually use it you're more likely to also retain it).

So for cs50x, for example, the final assignment is actually a coding project on whatever you like. The course asks that you submit a link to a video of you demo'ing your project. The course does not have restrictions on sharing the final project code, so for OSSCS you would link to the code for that project.

For 6.00.1x (MIT's Intro course), there is no final project, just a final exam. So I think we are hoping that upon completion students could use their new skills and create a project, and then link to that project on github as a demonstration of "competency".

The projects can build upon each other if it makes sense to do that, in which case you could link to specific commits within the project. So for example, you could take your project from an earlier course, and in it implement a better algorithm after taking an algorithms course.

Or after systematic program design you could refactor your project to be cleaner and better designed according to what you learned in that course and link to that commit.

Or for every course or topic you could create a new small project if that's what you prefer and then move on.

I also imagine that projects could also be done collaboratively, as well.. if you can find a few people who would like to work on it together.

does this make sense? is this too much to ask? thoughts? ideas?

ghost commented 8 years ago

It makes sense, and frankly I love the vision of the projects. It's a great idea.

@ericdouglas

One problem with the FCC model is: when they change the curriculum, you lost what you did or you have an incomplete topic. I don't want to do this with the progress of our students.

This is not true, if freecodecamp changes a project, let's say tic-tac-toe game to web-app calculator. Those who previously completed the tic-tac-toe game still get credit for their work and they do not have to complete the web-app calculator.

Regarding the incomplete topic, say you work on CS50x and halfway through we remove it from the curriculum, it makes sense to me to have a grease period (3-6months) where CS50x completion counts towards the curriculum.

In any case, we can adapt along the way according to feedback from the users.

Davkilla101 commented 8 years ago

Having done a bit of FCC, I can't tell you that with regards to the incomplete topic, they just add extra lessons which you then have to complete. It tends to get a bit annoying, because they keep moving the goalpost.

Davkilla101 commented 8 years ago

Can*

ericdouglas commented 8 years ago

@crmackay

"The projects can build upon each other if it makes sense to do that, in which case you could link to specific commits within the project. So for example, you could take your project from an earlier course, and in it implement a better algorithm after taking an algorithms course.

Or after systematic program design you could refactor your project to be cleaner and better designed according to what you learned in that course and link to that commit.

Or for every course or topic you could create a new small project if that's what you prefer and then move on.

I also imagine that projects could also be done collaboratively, as well.. if you can find a few people who would like to work on it together."

You described what I mean by "be creative"! :smile: All those things that you said are valid in order to demonstrate that you actually learned the subject.

In fact, the projects are not supposed to become an external demonstration, the main interested in making such projects is the student because this is the unique way to prove/verify (for himself/herself) that he/she actually learned something.

The cool thing about linking those projects in our PROJECTS file is that other students will be able to see what have been done, and get some inspiration too.

Another example: an article explaining all the process of taking the course and create the project would be tremendously helpful for other colleagues.

Davkilla101 commented 8 years ago

I also like the idea of using projects to show what you've learn as well as project based learning (hell, that's how I'm learning UDK4), though I imagine a lot of people would have trouble coming up with project ideas. Perhaps we should also include a course that help develop people's creativity?

ericdouglas commented 8 years ago

@MirzaI maybe you are new to FCC, but I know what I'm talking about.

I said:

"you lost what you did (1) OR you have an incomplete topic (2)."

I'll give to you two real examples.

1) Before React, we had a section about AngularJS. Who that completed such section now doesn't have this one anymore. You "lost" what you did.

2) I already completed the HTML and CSS section, but when they add more tasks in this section, I have to complete this again. Now you have an incomplete section.

With FCC, this isn't a problem because we'll spend 20 minutes to complete such tasks.

But if we do this in OSSU, students will need at least 60 hours to complete one more course!

I'm not saying that what FCC did/does is wrong! FCC is an excellent project, and certainly it is our big brother, but for us, this model doesn't work very well, because the impact of add/remove a course in our curriculum is enormous.

For that reason, we indeed have an opinionated curriculum, but we need to give the possibility for students that already done some of the courses in our curriculum to remove such courses of their curriculum, but still be able to have a completed profile to show for others (employers, friends, family, for himself/herself, etc).

ericdouglas commented 8 years ago

@Davkilla101

"Perhaps we should also include a course that help develop people's creativity?"

Yes, this is a great idea! We can search for a good course on this topic and add it as an additional recommended resource, like the course "Learning how to learn".

We also have some Project Suggestions to help in this case.

ericdouglas commented 8 years ago

@MirzaI

"Regarding the incomplete topic, say you work on CS50x and halfway through we remove it from the curriculum, it makes sense to me to have a grease period (3-6months) where CS50x completion counts towards the curriculum.

In any case, we can adapt along the way according to feedback from the users."

With the model that I told to you, even if we remove/add one course, just new students will be impacted by this alteration. Students that already started their courses with an older version of the curriculum will be able to choose if they want to "update" their curriculum or complete the one they already started.

Is it clear to you? Maybe when we create the mockup of this idea it will be more clear.

bestknighter commented 8 years ago

This idea is awesome. In fact, it's so nice that it's already in development. Just give a look at this.

SergeyKhval commented 8 years ago

Hi all. I am currently building web UI for OSSU. Here is repo If you have any suggestion, feel free to use issue tracker. Any help is highly appreciated

SergeyKhval commented 8 years ago

@ericdouglas

IMO, what we need to do now is: create a profile page where students will be able to show their progress/projects.

I have finished basic personal account page and now working towards implementing public profiles. Do you have any particular ideas/suggestions of how they should be done?

ericdouglas commented 8 years ago

@SergeyKhval How are you thinking about the project? I mean, how will the whole thing work?

My intention is to create a general app that could be used for anyone that wants to create a list of something.

It'll be a really basic structure, that contains the following files:

index.html, main.js, style.css, data.json, for example.

This project will be created here.

After this, everyone would be able to fork the project and customize it for their own necessities.

For example, we will make a fork of curriculum.js to the OSS organization, customize the data.json with our curriculum, and, after this, students will fork our fork and setup a github-pages for them.

When they complete a course, they just need to go to the data.json and change the property to "done", add the link to the project they did in order to show they finished the course. That's it.


I downloaded your project here but something broke and I don't have time right now to check what occurred.

Can you tell us more about what are you thinking, and maybe show some print screens of what you did?

Anyway, thank you so much for taking the time to help our project! I really appreciate your effort! :pray:

SergeyKhval commented 8 years ago

@ericdouglas Yes, I was thinking about something like you described. Currently I use Firebase as a backend server which finely suits this projects needs. I store all the courses there as well as students profiles. This is used instead of static data.json files.

My structure is as follows:

This architecture will allow us to deploy site once (on gitpages or firebase) and users won't need to fork the project and run it locally.

ericdouglas commented 8 years ago

@SergeyKhval what you did is pretty good!

We can use this app that you're doing and when/if we achieve the limit of what the free plan can offer to us, we think in the next step (a new backend, $ support for an unlimited plan, etc).

You're totally in the right way! I loved what you did :smile:

After finish what you are doing, we should discuss about the possibility (or not) in add/remove courses/sections.

For now, I have nothing to add to your initial project. It's really good! In the homepage, we can add some basic information about the OSSU and that's it :)

Great work @SergeyKhval :clap:

"Simplicity is the ultimate sophistication." Leonardo da Vinci

simplicity

SergeyKhval commented 8 years ago

@ericdouglas I have finished public profiles. Some bugs are still to be fixed and some improvements are to be made, but basically the app is ready and can be tested out

crmackay commented 8 years ago

@SergeyKhval do you have a demo site up or just self-hosted for now?

great work by the way!

SergeyKhval commented 8 years ago

@crmackay It is self hosted for now, but I hope to launch live site in the nearest future

SergeyKhval commented 8 years ago

I have deployed live version here. Please, take a note, that this is an early version and much may be changed, so don't get upset if something goes wrong. Consider it as beta and feel free to submit any issues you find important to issue tracker

ericdouglas commented 8 years ago

@SergeyKhval awesome!!!

I think that we can close this issue now. :smile:

geritol commented 6 years ago

just leaving this here: i have created a simple static site to showcase my progress: https://github.com/geritol/ossu-progress