Making Education Accessible Through Community

Making Education Accessible Through Community

Technological innovations, like those from Boston Dynamics, offer a glimpse of exciting growth and change in the near future! Science, technology, engineering, and math (STEM) are growing in many ways. New technologies drive change in traditional industries, stimulate job growth, and revolutionize education. From advanced research to elementary-school classrooms, our world is changing as technology becomes more prevalent.

Source: Wikimedia. Click for original
Source: Flickr. Click for original

The Education Commission of the States (ECS) has reported that STEM related industries will experience 13% job growth from 2017 to 2027. Within that category, computer related industries will grow the most at 14%. In comparison, the average growth is expected to be 9% (ECS)  

Median hourly earnings are $38.85 for STEM-related careers, compared to the $19.30 average (ECS). That’s a difference of over $40,000 in yearly income assuming a 40-hour work week. Unemployment is also half of the average (2.2% vs. 5.5%).   

This all seems great! Fantastic job growth, high pay, and low unemployment. One key challenge to rain on this STEM parade is that many of those jobs could go unfilled in the future. In manufacturing alone, 3.5 million jobs will be needed by 2025, with nearly 2 million going unfilled (Emerson).   

The most commonly cited cause for this disparity is that workers will not be qualified enough to fill those roles. This leads us to wonder, what can be done to prepare workers for those jobs?  

The demand for STEM education is understood by parents and students. 90% of students expect their future job will require some computer science knowledge. 85% of parents agree. Parents from low-income families ($54,000 or less yearly income) are twice as likely to find computer science more important than required courses. (Google)  

Despite the demand from industry, students, and parents, 47% of principals reported their schools don’t offer coding courses. 53% don’t offer robotics. 44% of principals state a lack of teachers is why they don’t offer computer science. Of those principals, 40% state there is a teacher available in their schools who could teach computer science. Refer to the table below for other reasons computer science isn’t offered (Google).  

Source: Google - Searching for Computer Science. Link below

Traditional education has done many great things in preparing students for the future, but has struggled in many ways. Notably, an over-emphasis on testing is a barrier to coding and other STEM courses. We may have to look outside the classroom for a solution. 

Community-driven and open-source movements have revolutionized many industries. Being open-source means that the software, hardware, or whatever it might be is freely available and can be redistributed or modified.  This allows information to be shared for the benefit of all. Many open-source projects are created as hundreds of individuals work together to create a useful tool. Wikipedia is an example common to most of us. 

Many companies drive astounding impact by contributing to open source. Below are a few companies (and some projects of theirs).

  • GitHub  
  • Google (Android, TensorFlow, Chromium, Dart, Go)  
  • Linux  
  • Microsoft (Visual Studio Code, .NET dev tools, TypeScript)  
  • Automattic – Creators of WordPress 

Let’s analyze two organizations that are teaching STEM through community and open-source.

FreeCodeCamp

FreeCodeCamp stands at the forefront of many organizations who teach coding. Founded in 2014 by Quincy Larson, FreeCodeCamp has experienced outstanding growth. Highlighted below are a few key stats:

  • 1 billion user minutes across all their platforms. That’s 2000 years!  
  • More visitors than CodeAcademy ($47 million valuation)  
  • More visitors than Udacity ($1 billion valuation)  
  • 54,500 Alumni with thousands now working in computer related industries  
  • Curriculum translated into Arabic, Chinese, Portuguese, Russian, and Spanish  

It’d be easy to assume FreeCodeCamp had hundreds of employees and was heavily funded! Actually, it’s quite the opposite. As of December 2018, FreeCodeCamp has 5 employees and an operating budget of $200,000. It is a 501(c)(3) non-profit.  

For more info on FreeCodeCamp, check out this medium post. 

How can 5 people do all that? Well, to put it simply, they don’t. At least not alone. Over 650 volunteers contribute to all that growth! Many graduates (and current students) use their newly acquired knowledge to give back. Through Open Source for Good, FreeCodeCamp also helps their students contribute to other open source or non profit organizations.

Although most users are adults, an increasing number of educators are using it. FreeCodeCamp is adding a classroom mode and tools for study groups as donations and volunteering increases!

FreeCodeCamp is educating thousands at home or in the classroom. People are learning then giving back, driving viral growth for this amazing organization.  Following this model, we’re going to look at Khan Academy!

Khan Academy

Another fantastic example of community-driven change is more widely known: Khan Academy.  

To briefly sum up their story, Sal Khan started tutoring family members who were struggling with science and math. As more family asked for his help, he posted videos on YouTube. He also created a website where they could do practice problems. More and more people found his resources. He was soon noticed by Bill Gates and Google. 

Backed by a passionate community, Khan Academy began to reach more and more people. Through volunteer content creators and translators, they now reach hundreds of thousands of students in over 100 countries. 

According to Sal Khan, Khan Academy was never designed to replace traditional classroom education. It is meant to supplement it by providing tools for teachers and students. Machine learning can create individualized and effective learning plans by analyzing data from students quizzes and Khan Academy practice. Teachers, now equipped with these plans, can better concentrate their efforts on each student!

A few stats about Khan Academy from their website:  

  • Students who complete 60% of their grade-level math on Khan Academy experience 1.8x expected growth on the NWEA MAP Test, a popular assessment test 
  • 64% of first-generation college students reported Khan Academy was meaningful to their education (164 surveyed)  

Check out this Google Talk to learn more about this wonderful organization!

By empowering individuals through accessible resources, real change can be achieved. As communities develop around similar beliefs and goals, thousands are taught and are then able to teach. This process of learning and giving back is key to educating future generations.  Everyone, everywhere has the potential to learn difficult concepts, given the right community and resources.

We can help make those resources globally accessible by donating to these communities. Donations don’t have to be financial. By giving of our time, talent, and energy, we can support open-source and community-driven organizations that are causing real global change.

At Cyperion Robotics, we are driven by these same principles. We believe in the mission of Khan Academy: provide a world-class education to anyone, anywhere. Our part in that mission is making STEM educational resources accessible. Starting with Project Apollo, we are providing robotics kits at a fraction of the cost of other systems.  

Robotics is the perfect tool to teach STEM and prepare future generations. Through community, robotics sparks creativity in students, all while helping them learn STEM concepts. Learn more at our website or follow us on Twitter!

DC Motor

Tip: Securely Wire a DC Motor

Robot Nightmares

Do you live in constant fear of your robot being stranded as it gets you Taco Bell all because it’s motor became disconnected? Or do you have to treat your robot with the care of a heart surgeon because it’s connections are weak? Well, fear no more! In this tech tip, I’ll show you how to make sturdy motor connections.

Materials

Tools

  • DC Motor
  • Wire
  • Heat Shrink
  • Zip Tie
  • Soldering Iron
  • Wire Strippers / Cutters
  • Heat Gun (Or lighter, matches, etc.)

Let's Get Down to Business

Overview

  1. Cut wire and heat shrink
  2. Solder motor leads
  3. Put on heat shrink
  4. Zip Tie wires to motor body

Pretty simple, but very useful! Stranded wire provides the best connection, but solid core will also work. Cut however much wire you need. I use about 6 inches. Do the same for your heat shrink. Two small sections of about 1/2 inch or less.

I like using red and black to differentiate my leads, but this isn’t crucial.

Solder on your wires, making sure to get good adhesion. If the motor tabs are too close to a plastic body, use something like needle-nose pliers or tweezers to act as a barrier between the soldering iron and the plastic. The tool will act like a heat sink!

Keeping the wires straight, slip the heat shrink on and get it as snug up against the motor as possible. Use your heat source to shrink the tubing. Rotate the motor so you evenly apply the heat. A heat gun is the best choice, but a lighter or matches are good alternatives.

Now, very carefully bend the wires back towards the motor so that they lie flush against it’s body. Use a zip tie to secure the motors. Get it nice and tight and your motors will last much longer! 

DC Motor
Stranger Things inspired Soundboard

On Passion and Why It Isn’t Your Job

  • CSS3 in 30 Days
  • 10 Days of JS on HackerRank
  • Finish Stranger Sounds
  • Make ‘Hello, World’ Chrome Extension
  • The right opportunities will always present themselves given enough time. 
  • Passion is more about who we are than what we do. It isn’t a career or an activity, it’s deeper and closely related to our motives and aspirations. 
  • Finish 10 Days of JS
  • Finish FCC Front End Certification (Make a Pomodoro Clock)
  • Finish Popup and newpage html/css for the non-profit hackathon
  • 2 sections of Accessibility course
Stranger Things inspired Soundboard
Stranger Things Soundboard (Links to CodePen.io)

After over a year of tinkering with programming, I decided to change my major to computer science. Although I was already pursuing a minor, this felt like a huge leap. I never wanted to change majors, I wanted to stick through and be an engineer. That’s what I had said I would be and I enjoyed it. But little by little, those 30 minutes of Learn Python the Hard Way or CodeAcademy lessons led to 1 hour of freeCodeCamp which became 2 hours, and eventually, all of my free time was spent making what I consider to be awesome projects. I was neglecting my homework because it was boring. Sure, learning more about physics and how materials behave is cool, but I don’t want to spend my career doing moment diagrams or analyzing forces on a hinge. After talking it over with my wife, I made the jump and I am extremely happy with that decision. It’s already opened many doors and will continue to change my life.

The word passion comes up extremely frequently when talking about careers, in cover letters, and even in someone’s LinkedIn profile. As I’ve reflected on my change of majors, I’ve realized that passion runs deeper than a career or even a hobby. My passion isn’t coding, it wasn’t mechanical engineering, it’s something more closely related to my personality and ambitions. My passion for creating, innovating, and hopefully helping people in the process, expresses itself in many ways, including coding.

Some say to ignore passion when choosing a career, some say passion is developed when you work hard at something and get good at it. I would agree more with the second, but don’t think that advice is perfect. Maybe I would love biology if I studied it for years and worked very hard, but I think because passion doesn’t stem from the activity, I wouldn’t be developing a passion for biology. I would be learning how to channel my passion through biology. My thoughts on this subject are still developing, but I wanted to share a little about them. I’ve decided to choose what I want to do based primarily off of my core values and passions, setting other factors aside.

 

Vanilla JS Calculator (Links to CodePen.io)

Because of all the time I now have (having dropped my engineering classes), I’ve heavily invested in finding coding work and developing myself as a programmer. I dove back into freeCodeCamp, completing two more front end projects. My stranger things soundboard above took forever in React. I couldn’t quite figure it out or get the motivation to do it. So after picking up a project in Vue for work, I revisited the soundboard, rewriting it in vue. It took a few coding sessions and I had to learn how to edit audio (a lot of fun! Reminded me of playing with garageband in middle school), but it came together nicely. It isn’t perfect, but it’s the most proud I’ve been of a project. 

I also built a vanilla javascript calculator. I’m realizing that I have the fundamentals of javascript down mostly because I already know how to program in C++ and Python. What I don’t know is the important parts of javascript. How to interact with the DOM, eventhandlers, etc. I had hacked together solutions in the past, but I decided to really focus on my basic skills so I built this project with just javascript. 

Post is getting a little long, but in addition to my freeCodeCamp work, I’ve started an accessibility course on Udacity from Google, 10 days of JS on hackerrank, and a few other goals like completing one hackerrank challenge a week. I’ve seriously loved learning more about code and hope to have a few more awesome projects coming next week!

Vim, C++, and Random Quotes

0
Days of Make
  • 1 hour of coding or making a day
  • Finish two front end projects with React/Redux and a CSS library
  • Trust in the process, but don’t worship it
  • Something is better than nothing
  • Working with others is motivating and more fun
  • 1 hour of making or coding a day
  • Write a C++ program that recursively solves a 3D maze
  • Finish the Markdown previewer (Mostly styling with Bootstrap)
  • 10 Learn Vimscript the Hard Way activities
Debugging is debugged code will be a violent psychopath who ends up maintaining your code as that humans can write code
main.cpp
Aspiring human

And now on your left you’ll see a wild C++ program. It’s children (functions) are hiding behind it. It’s main purpose is to generate random text from an input text file. Isn’t that cool kids? Up next you’ll see…

Probably not the coolest field trip, but luckily for you, you don’t have to get on a school bus to see this code. This week, I worked on an assignment for my data structures class that took in a text file and made several others out of it. First, a set with every unique word listed alphabetically. C++ std set is ordered. There is an unordered_set which I didn’t use. Next, a vector with every word. Finally, a map that uses the vector to make key=value pairs.

Although very rudimentary, this program can generate random text that almost makes sense. The quote you see above is a blend of quotes on programming by disgruntled programmers. 

My favorite quote is definitely “Deleted code is debugged code”.

Working on this, I was able to dive into some basic data structures and see why you’d use some in different situations. Playing around with it, I was able to get more intelligent output by generating a map that used a string as a key and vector of strings as the value. By doing this, and with some coding magic, the text was more randomized. 

After this assignment, I wanted to research natural language processing (NLP) a little more. Doing some googling, I found a fantastic github repo called Awesome NLP which I’d highly recommend checking out!

This seriously excited me so much for what I can achieve with programming. Understanding what I can do with these skills is motivating me more to do now what I need to so that in the future I can do what I want to do. 

As part of my data structures class, we use cloud9 which has an integrated UNIX terminal. This translates into ‘I had to learn bash for my class’ and I loved it. It has made way more sense than working with the windows powershell. So in comes Ubuntu on Windows, a Linux subsystem that can be easily installed.

I tried this a few weeks ago, but it didn’t work. I couldn’t install what I needed (npm, python libs, gcc, etc.). Finally, I decided to run apt-get update and what a surprise, everything started working!!!

Now, I can have all the fun of Ubuntu, Vim, and still run Starcraft and everything else I have on windows. This is leading me to remember Vim. Although I’m pretty slow with it for now, I’m invested in learning Vim so that in the future I can always have it, no matter where I’m working or on what OS. Even just running through Vimtutor again, I feel a lot faster.

This week I didn’t do exactly what I had planned, but considering I was sick, I’m happy with the progress and what I was able to learn. I’m passionate about programming and am loving every step of this journey. 

Robots, React, and Remembering

0
Days of Make
  • Finish tutorial section of FCC’s Front End Cert. 
  • Finish Random Quote Machine using React
  • Read 5 chapters of Robot Building for Beginners
  • Practice makes perfect
  • Do one new thing at a time
  • 1 hour of making or coding a day
  • Finish two front end projects using React/Redux and a CSS library
RQG

After over a month of Javascript and front-end libraries, I reached the final projects for the Front End Certification which means remembering basic HTML and CSS. How do I center this div?? How do I make a button? And then you add a new technology like React which makes it much more complicated. Luckily, in a freeCodeCamp podcast I heard the great advice to only use one new technology at a time, so I ditched my initial design which unsuccessfully included Redux. It was just a little too complicated so I started again.

While building this, I remembered a lot of HTML and solidified some more React. I got a better feel for how to structure my components, learned how to change style and content randomly. 

Slowly, I am adding to it. For example, I added a call to my geNewQuote event handler when the page loads. A few next steps: transition from one color to another, spice up my CSS so that the buttons don’t look so awful, and add more quotes. I’m currently using an array for the colors and an array of objects for the quotes that include the quote and the author. 

Check it out on my codepen! I’d love any feedback.

IMG-0005
LED Indicates Power On
IMG-0013
Photoresistors (Center)

In addition to my work on learning React, I invested time into reading Robot Building for Beginners mentioned in my post last week. Again, it was refreshing to revisit some basics of robot building. For anyone interested in robotics or circuitry, I’d highly recommend it. This week, I setup my breadboard to start prototyping the line-following robot and implemented a few circuits.

So far, I have a power indicator and the photoresistor circuit. The robot uses a LM393 comparator chip to compare the voltage at two points. Four photoresistor aimed at the ground change resistance depending on the color they are looking at. If there is a high contrast (black on white for example) and all four sensors are on the same color (i.e. on the black surface with a white line in the middle), the comparator chip will provide equal power to the motors so it will continue straight. If one side of photoresistors goes over another color (i.e. the white line), the comparator chip will provide more power to the opposite motor, straightening the robot out. Thus, with a simple circuit to robot will follow lines. This simplicity really attracted me to building this project. 

Little by Little

0
Days of Make
  • 1 hour of making or coding a day (Yes!)
  • Create Random Quote Machine (Not quite)
  • Learn GPIO with Raspberry Pi (Spent this time on new robotics project)
  • Mon – Thur: Spent a lot of time learning about React and Redux
  • Fri – Sun: A little React, but mostly reading about robotics.
  • Even ‘beginner’ resources offer a wealth of knowledge. 
  • You have to start somewhere
  • Life gets crazy. Adapt and remember your priorities. 
  • Reach project section of Front End Certification and start Random Quote Machine.
  • Finish my Data Structures project (school work)
  • Read 5 chapters of Robot Building for Beginners

This week turned a little chaotic. The week began well with some React and Redux. I finished my project a bit early and got extra credit (A slightly tricky refresher on C++ and classes before starting data structures). On Thursday, my wife and I headed home to visit family which has been amazing. Running into some car problems, we ended up stranded a long 500 miles from home. I didn’t realize how much I relied on the environment I’d set up at our apartment to be more productive. Now, with a lot more distractions, I’ve struggled to sit down and code. Or in other words, I’d rather play games with my wife’s goofy younger siblings than code… I guess breaks from school are a good thing. 

Without my raspberri pi, I couldn’t do much with that. Luckily, I brought one of my first robotics books: Robot Building for Beginners by David Cook, which I would highly recommend. It was refreshing to go back and solidify some basic concepts, remember my first failed attempts at robotics, and see the change in technology the last 10 or so years. 

With the stress of getting a car fixed and managing classes from afar, I sadly didn’t make the progress I wanted this week, but I’m proud of the time I put in. There will be plenty of weeks like this one where I don’t accomplish all my goals, but also many where I will. I guess the most important is trusting in the process, continuing to go day by day. And that’s what I’ll be doing! Until next week!

 

To Another Week of Awesome!

0
Days of Make
  • Finish CodeAcademy’s command line tutorial
  • Finish JavaScript algorithms and data structures certification (FCC)
  • Wake up at 5:30am every day to code
  • Mon: Finished command line lessons
  • Tue: Some JS and front end libraries (Bootstrap, jQuery, Sass)
  • Wed: More JS, tiny bit of React, Microsoft event
  • Thur: Started JS projects. Completed ROT13 Cipher and Palindrome checker
  • Fri: Finished Roman Numeral Converter
  • Sat: Earned JS Certification
  • Sun: Some more React work on FCC
  • I can do this! (Microsoft story)
  • Using a variety of resources and practicing each concept solidifies it in my mind. 
  • Continue work on Front End certification
  • Create random quote machine (FCC project)
  • Learn basics of gpio with raspberry pi with python or JS
  • 1 hour of making or coding a day

Sometimes necessity is a great motivator. I’ve tried to learn the command line many times before and would figure out the basics before promptly forgetting it all because I never used it! Now, I need to for my data structures class (C++) because we’re using an online IDE with an integrated bash shell. It’s awesome and it is so satisfying to work with it. It’s motivated me to use it whenever I can! Also, it’s incredibly useful with my raspberry pi projects. Note to self: use what you learn in a variety of situations and you’ll really grasp the new skill/concept. 

CodeAcademy is a cool resource, but not my favorite. There were definite gaps in the activities and explanations. With some googling and trying things out, I figured it out. Like freeCodeCamp, the tutorials are to get you started. You have to put in that extra work to apply the new concepts (i.e. FCC projects).

Throughout the week, I worked a lot on this certification. It starts off with basic JavaScript, introduces important aspects of ES6, and dives into arrays and objects. There is also a section on RegEx and common debugging techniques. After that, there are a lot of easy/medium algorithmic challenges like you’d find on HackerRank. It took a lot of work to get through it, but was rewarding. By the end, I felt more confident in my thought process and learned some useful techniques. 

There were a few common roadblocks as I solved these challenges, especially the projects. The most difficult was a lack of knowledge on a topic. For example, on the Pig Latin challenge, it took forever to handle words without vowels because I didn’t know how you’d translate a word like nth follows a slightly different rule. I was also able to come up with a solution, but never a very elegant one. I relied heavily on for loops as I’m not too comfortable with some aspects of functional programming. My biggest complaint would be that FCC’s editor doesn’t allow for any output on most challenges. It is very frustrating not being able to use console.log to check my work. Luckily, I could copy and paste my code into another editor which saved me a ton of headaches. 

freeCodeCamp has done an amazing job on this certification. It taught a ton of JavaScript and really pushed. As someone with experience in other languages and some experience completing coding challenges, these were still very difficult and I learned a lot. I feel very indebted to FCC and all that they’re doing in the community! 

Wednesday I attended a Microsoft resume workshop at my school. A project manager and two software engineers came. The resume aspect was pretty generic, but one of the engineers gave some great insights while talking about his interviewing experience. The biggest takeaway for me was ‘I could do that’. He talked about a few of the problems they had to solve and they were pretty similar to those on FCC which I had be solving this week. Although I have a long ways to go, I was instilled with a greater confidence in my coding abilities and felt invigorated, wanting to go and code right then. I can do hard things. So can you. Everyone has incredible potential. I’ll hold onto that moment as things get tough and know, ‘I can do this’ whatever it is. 

I can’t wait to share my progress next week working on react and bringing back to life my LED cube with Raspberry Pi instead of Arduino! Until next week!

FCC Certificate

The Start of Something Good

0
Days of Make
  • Wake up at 5:30am to code for an hour every day.
  • Earn my first freeCodeCamp (FCC) certification
  • Survive the first week of the semester.
  • Actually post this blog post even if it isn’t perfect.
  • I didn’t actually keep track of everything. I’ll be better about that next week. 
  • Monday I earned the Responsive Web Design certification!!
  • Worked a lot on the JavaScript Algorithms and Data Structures section.
  • Did about half of CodeAcademy’s command line tutorial.
  • Wrote this blog post.
  • 5:30 is early.
  • I really like programming.
  • I can figure out challenging things.
  • Nothing will be perfect (code, this blog, homework, etc.), but there’s value in doing it and putting it out there.
  • Finish CodeAcademy’s command line tutorial.
  • Finish Javascript algorithms and data structures certification.
  • Wake up at 5:30am every day to code.

Waking up at 5:30am sounds like a good idea. And becomes the exact opposite when you actually do it. But that is what I’m doing to improve my technical skills. Waking up an hour early to code, make, and tinker. Here I’ll document all of my day to day activities. 

I have about ten billion ideas of projects to work on, so hopefully I can calm down, focus on something, and show you all a cool project (or a few). For the moment, I am falling in love with code. As a mechanical engineering student, I like building things. Software is a whole other world where I can do that. To start off my journey, I’m working on freeCodeCamp’s (FCC) amazing curriculum. Something about it truly clicks with my learning style, so I’m focusing on that. In the future, I hope to add web apps to my robots. 

I love being at college, but so far, I’ve found more value in my extra-curriculars, than my ‘curriculars’. By being proactive and being an avid learner, I’ve been able to explore many fields of engineering that I feel passionate about. I’ve learned that you have to put in the time and concentrated effort to make something worth making. 

Although I’m an awful programmer right now, I’m going out there and making something. I’m not a great writer, nor would I have ever thought I would start a blog, but here I am. Even though I’m no good right now, this week I committed to give more of myself to get better. And I feel like I’ve learned more this week than any other week. 

I finished the first section of FCC. I competed in a University CodeSprint on HackerRank. I easily did the ‘easy’ challenge and couldn’t even understand the rest, but hey, I saw what it was like and feel more prepared for next time. 

Thank you for joining along in this journey. Hopefully I can share something that you’ll find valuable. For the moment, this is highly valuable to me because it commits me to learn something every day. 

With that, until next week!

Skip to toolbar