Discussion on Data Science and Machine Learning Curriculum

I’ll agree to this part.

Then I guess they’ve gotten better at toning down expectations since I joined.

So, not to say that this is an easy solution, but what about shifting the focus of FreeCodeCamp from the browser to an Electron (or similar) based desktop application? There has been a small clamor for a portable version of the site for some time, and if your goal is to extend the curriculum to more computationally expensive topics, then I don’t see any other way to do this without spending a lot on servers or trying to walk people through a local installation.

Apologize if the tone of my response was not fully adequate. I did not have time earlier to look at your history here, just have read times before were people do complain about this and that. You are probably right in that it may be too ambitious to push for something new, when beta has not launched yet, agreed here.

I agree with you that not free, value of course depends how each individual values their time. I do so the problem that a too ambitious program that in the end is interesting , but not relevant for a full time job may be a significant problem for some users.

I would just point out that it is all optional and link to hiring trends, so each person can decide whether it is worth their time or not.

It seems to me, arguing that a) not having to set up a local development environment and b) not having to read long passages of text are good things is counter to the goal of freeCodeCamp (which, if I’m not mistaken, is to prepare people for their first development job).

After all, setting up and working in an IDE and the ability to ‘just read the docs’ seem pretty integral to even the most junior roles…

If anything, I would argue that these things should be moved way up in the learning process, so that by the time someone even starts to think about Data Science or ML, they are second nature and no longer an issue.

3 Likes

I understand the concerns about python being a more practical language for Data Science and machine learning, but I think the goal FCC is trying to achieve is giving campers a starting point.

When I first learned software development I spent some time struggling to figure out what I actually needed to learn in order to be comfortable with my software development knowledge, because there is so much to learn, but when I found Free Code Camp I had a clear path to follow and although FCC did not teach me everything I know now I am quite grateful that it gave me a starting point from which to grow. I think client-side JavaScript would be sufficient to provide someone with the knowledge they need to decide that they are interested in becoming an expert in data science or to decide on which parts of data science and ML they want to learn/focus on.

For example: https://github.com/karpathy/convnetjs is a JavaScript library with several demonstrations of neural networks learning and running client-side. I would consider this library sufficient to build several interactive lessons on machine learning and neural networking.

What do you think?

3 Likes

Setting up a dev environment for JavaScript is easy - install node, create some folders, get nodenv running if you’re sassy. Python isn’t necessarily difficult, but it’s surprisingly easy to break. Ruby is the same way. By a huge margin, most people wouldn’t have a problem, but a sizable chunk will still have path issues, older/newer versions, conflicting installs, or missing dependencies. I’ve had all of the problems myself. I’ve got it all sorted out, but it took many hours of my life and some technical understanding that someone who’s just starting to program probably won’t have. It’s not something a junior dev is necessarily equipped for, either. The main avenues of support - forums and gitter - could easily get overwhelmed if just 5% of the user base needed help.

The overarching goal of FreeCodeCamp is to reduce the friction involved in learning. Setting up a dev environment would be a great lesson (though it should ideally be a matter of “install this container and go”), but expecting people to dig through mountains of documentation and wade through a swamp of configuration variables before they can start writing code is very much counter to what we want to accomplish here.

2 Likes

I apologize if I was unclear… This is, after all, a conversation about learning Data Science and Machine Learning, not starting out with HTML, CSS and JS.

My point was, using the arguments of not having to set up a local dev environment or read through documentation are ridiculous when you consider that anyone learning these advanced topics should already have some development experience under their belt.

I’m not suggesting those that are just starting FCC should

I do think, however, that stepping outside the online editor to a local IDE for some of the intermediate or advanced front end projects would be a very valuable lesson.

I’m not talking about Python or Ruby, I’m talking about downloading VS Code or Atom or any of the other very user friendly editors and creating your own .html, .css and .js files to be run locally in the browser.

In my humble opinion, those hoping to get a job developing real life web applications (professionally) should know exactly what codepen is doing for them in the background…

1 Like

Let’s forget about Machine Learning, Data Science, Python, R, etc for now.

Just the fact that FCC promotes using CodePen for beginner front end projects is a disservice to learners. Why not instead, have lessons on how to download and install a text editor, how to create a .html, .css, and .js file, how to connect the three together. Then, another lesson on how to see your changes in a browser, how to deploy their local files to something like heroku, surge, or their own website AND THEN, set them off on building their first projects?

Keeping learners caged up in WYSIWYG editors in the name of “reducing friction” is not only a poor way to teach anyone how to code, but it’s also disparaging to learners. It’s like all of FCC thinks that beginners are mouth breathers incapable of learning hard things. Expect more of people, and provide resources for them to learn how to do hard things, and they will. Sugar coat everything by keeping them in copy-paste mode in a browser based editor, and they won’t ever grow into capable developers.

Maybe it’s just that it’s time FCC dropped the charade, as many other MOOCs have, that learning to code is easy. Learning to code isn’t easy. It’s hard work. It’s going to take a long time. You’re going to be frustrated and want to quit more than once. You’re going to run into problems in your local development environment that make you scream. You’re going to bang your head against the wall trying to figure out build tools, algorithms, frameworks,libraries, the terminal, git, and so on forever. If that doesn’t sound like something you want to endure, if you aren’t excited enough about learning to code to endure all of that, then learning to code isn’t for you.

Keeping beginners on training wheels might delay when all that heartache comes, but they won’t be any more prepared for it when it does. Moving further in the direction of fully integrated, browser based development tools is the wrong direction.

1 Like

Yeah, we’re on the same page. I’m not talking about people who are just starting with the web dev courses. Setting up a local environment can be a big pain in the butt. I’ve had problems with it, and I’m not a junior dev. People working for huge companies have problems. It’s one of the reasons why containerization is gaining popularity among developers and not just devops.

Even for experienced developers, a self-contained environment is a boon. Professionals can have a specialized environment that could get borked if they have to change versions or install new packages for learning. Besides, I don’t want to have to set up a whole new environment. For experienced developers, it’s a chore.

I’m not saying that you’re wrong. Being able to work with your tools is important. I just don’t think it’s something people should have to learn before jumping into programming.

This isn’t the appropriate place to discuss this topic as it pertains to the web development section of the course.

That charade hasn’t been carried here. Ever. I’m not sure why you think it has.

There’s nothing stopping anyone from using any environment they want. If you’d like to contribute some lessons on how to set up a local environment, hit up the issues page and offer your services.

You’re right, this thread isn’t about the web development curriculum, but comments in this thread are indicative of the attitude of “let’s stick everything in a browser so that it’s really easy for people, despite that being a terrible idea, and we’ll also close the loop and keep all the traffic right here at home.”

There hasn’t ever been any interest from the powers that be to actually teach people how to setup and use their own local environment. In fact, just the opposite is true. All signs point to the FCC leadership being actively hostile to any additions to the curriculum to promote students moving outside of the platform despite that being a necessary step.

So I’m not sure why I would spend my time contributing lessons to the FCC curriculum that wouldn’t ever get added to the map?

I don’t think that’s fair. What good would the curriculum be if no one came out of it capable enough to get a job? No one wants that, and it wouldn’t make sense if the motive were money. There isn’t some nefarious conspiracy to keep people from developing locally, but there are other considerations than just getting campers to the most realistic dev environment as quickly as possible. Setting up a curriculum that appeals to as many people as possible isn’t easy. It’s not even possible. What about those people who are trying to learn on Chromebooks? Or tablets? There was one guy not too long ago who was sleeping in his car and learning on his phone. The point of keeping things in the browser isn’t to restrict your movement or hold anyone back, it’s to enable the greatest number of people to learn as possible.

If you don’t try, then we’ll never know.

1 Like

I feel obligated to correct you here. We have always said that learning to code is hard. Even when most other learning resources were saying otherwise.

The issue is making learning to code not any harder than it needs to be.

So learning how to use an IDE will complicate your learning?
I know what you are saying but I’m sorry I strongly disagree, in this case it doesn’t apply. This is basics, it is the foundation of where a website or app really begins and should be second nature.

Just get people to start with a normal text editor like notepad, something basic.
You don’t have to mention vi or vim or any other IDES at this point. That’s something they will discover for themselves. At this point they need learn about basics of file structure and how to bring in CSS and JS files into HTML. It will help them get their heads around a lot of other concepts later on down the line. As for Bootstrap, really before this??

There are people here that think that doing the Front End Certificate makes them job ready. What happens when they are asked to make a psd into webpage using just a pain text editor? (a common interview situation) or asked about their workflow. They can’t do it, that is embarrassing for them and that’s not their fault its FCC’s. I think a lot of us agree that it is really doing people a disservice.

@matty22

If I had to set up my environment from day one I might have been overwhelmed trying to understand why I need those things and never get to the important part WRITING CODE. Starting out I could focus on trying to figure out that I didn’t put a closing tag on my HTML element or how to center a div, those things use to be VERY HARD. In some sense, I was a mouth breather incapable of learning hard things. (In fact, I am breathing with my mouth now [allergies!])

Plus my job required 50 hours a week from me, the faster I could get to the meat of what I want to learn the better.

When the time came I figured out how to set up a local environment without fcc and it wasn’t that hard because I had the important skills down.

I am not a professional dev yet, but as of now I am capable of making things with React and Node, and I am learning Mongo. Now it is all done on my local machine and using Git and Github to keep track of changes between my main rig and laptop.

FCC didn’t do a disservice. It was the best learning path that I have ever committed to.

There are a plethora of resources that teach these things, and when someone feels ready they can find it and learn it, very easy at that point.

1 Like

I am going to use the opportunity to quote myself to drive a point that accessibility and reduction of friction is not wrong, and should be encouraged in any learning curriculum. If fundamentals of machine learning are easier using JS libraries, why be against it? It would be a perfect opportunity to gain transferable skills.

1 Like

There is so much arrogance on this thread. It’s as if some of you guys have forgotten how difficult it was when you started out as a developer. Coding is hard, why make it harder for newbies? Is there anything wrong with making it a bit easier? Just can’t believe some of you guys.

I think we should return to the discussing the topic of this post, adding a JavaScript based Data Science and Machine Learning curriculum to FCC. I think we should be discussing:

  1. What we can teach in the curriculum
  2. How we would teach it
  3. What libraries/frameworks can help us achieve this