Languages and Libraries for Machine Learning


In our previous post 5 Skills You Need to Become a Machine Learning Engineer, we identified the key skills you need to succeed in this field. Now, we’re going to address one of the most common questions that comes up from students interested in Machine Learning: Which programming language(s) do I need to know?

The answer may surprise you. It doesn’t really matter!

As long as you’re familiar with the Machine Learning libraries and tools available in your chosen language, the language itself isn’t as important. A variety of Machine Learning libraries are available in different programming languages. Depending on your role within a company, and the task you’re trying to accomplish, certain languages, libraries and tools can be more effective than others.

Continue Reading

2 Steps to Land a Job as a Software Developer

Software development jobs are on the rise

Software developer jobs are quickly on the rise and we all want to know how to land a job that pays $93,350 a year on average1. The good news is that whether you are an aspiring or self-taught software developer, a recent college graduate, or looking to switch careers, there is enough room for everyone. Here are two quick steps you can take to not only get your foot in the door but also position yourself as a competitive candidate:

Step 1. Work backwards: Target job first

With the abundance of online courses, the toughest call is often in making the right choices that will lead to the dream career. What courses do I take and in what order? When the eye is on the prize – the job – working backwards from available positions to interview preparation to demonstrating and mastering skills can help chart a path. Identifying a reliable source of information and learning that is approved by industry experts would be the ideal way to build towards your desired job. Who can better prepare you for the job than employers themselves? Produced in collaboration with AT&T, Udacity’s industry recognized nanodegrees explore job requirements with hiring managers first, and then guides candidates through the creation of projects.  Current nanodegree offerings include front-end web development with more to come.

Step 2. Create a portfolio: Tell your story

“Building a portfolio allowed me to tell stories about how I applied my learning, the experiences I gained, and how I brought an idea to life. I didn’t just list off a series of courses I took during my interviews,” remarks Caroline Sun, an associate business analyst in the IT department at Oliver Wyman. The projects Caroline built during an internship and in her computer science classes provided examples to draw upon when answering behavioral questions during an interview. If you have created a project or are simply working on one now, show it off on Github or add it to the Projects section of your LinkedIn profile.

Equipped with these two guiding principles in your job search toolkit, you can now tackle the challenges that lie ahead for a software developer trying to land a job:

Recent vs. Experienced college graduates

In my years of experience as a career counselor, I have often heard recent college graduates’ woes of not being able to compete against experienced candidates. While unemployment rate for recent computer science college graduates does indeed drop from 8.7% to 4.7% in experienced graduates2, the differentiation lies in more than just years of work experience. You can demonstrate to potential employers that you can do the job. By creating a portfolio of projects that showcase your skills, you can move from recent graduate to the experienced category, improving your chances of landing a job.

Lack of confidence: The impostor syndrome

Without a vetted process to learning, the self-taught software developers often experience the impostor syndrome and are hesitant to acknowledge their skills. A validated source like the nanodegree and formal approach helps provide guidance as well as builds confidence in your learning while providing trust in the material.

While you stay on target to gain necessary skills and demonstrate what you can do, the job outlook for software developers remains very promising. Opportunities in the computer systems design and related services industry are projected to keep increasing at 4% annually compared to 1% for all other industries3. A strong commitment to learning, and a guided path to mastering the necessary skills are what you need to present to potential employers that you can and will do the job.

Salwa Nur Muhammad is the Student Services Manager at Udacity. She works on a team to provide quality coaching support for Udacity students taking online courses and prepares them to enter the workforce in the technology industry. Previously, as a Program Director at the Center for Work and Service at Wellesley College, she provided career counseling to students and recent graduates. Salwa received a master’s degree in Technology, Innovation and Education from Harvard University.

New! Programming Languages Course Available with Full Udacity Goodness

Have you ever heard the term lexical? How about parsing? String patterns? These are common techniques used by programmers and if these words are new to you, we’ve got a course that can help!

In Programming Languages, you’ll create the code structure for your own web browser. Along the way, you’ll learn the key fundamentals of programming languages. We’ll write our code in Python, but the concepts learned can be applied to any language.

Today, we’re excited to announce verified certificates and Coaching support for Programming Languages. With the full course experience, you’ll have access to a personal Coach who will help you tailor your learning goals and offer their help if you get stuck on a problem. Plus, after solving some final problems, you’ll earn a certificate verifying your new programming skills.

Check out the course

The Difference Between Programming and Software Engineering

“When I graduated from my programming bootcamp, I had the skills to be a great programmer,” Lindsey starts. “But it wasn’t until I joined Udacity that I realized I still had a lot to learn about being a software engineer.”

The terms Programmer and Software Engineer, contrary to popular belief, are not interchangeable. A programmer knows how to code and may have the technical skills needed to build meaningful products. A software engineer follows a systematic process of understanding requirements, working with stakeholders and developing a solution that fulfills their needs. A programmer tends to work alone. A software engineer is part of a larger team.

Lindsey realized this difference when she graduated from a prestigious bootcamp in San Francisco and started working at a company (with us!). From learning GitHub workflows to more involved testing (“I always questioned the importance of testing,” Lindsey explains, “with individual projects, I knew what it was supposed to do since I build most of it. Now, since all the parts interact with each other, I need to be very careful to test my code”), Lindsey had to pick up a lot of skills as she transitioned into this new role.


Udacity’s Software Development Life Cycles will help make the transition from programmer to software engineer easier for everyone. Taught by esteemed Georgia Tech Professor Alex Orso, SDLC explores software phases, requirements engineering and software testing methods.

P1L3 Lesson Overview

Through Professor Orso’s engaging practical examples and interviews with industry insiders, you will learn how to select and implement the ideal software process for your development project. Our goal is to equip you with the skills necessary to define requirements, set up an integrated development environment (IDE), learn Git (and Github!) and use Unified Modeling Language (UML) to design and build an Android application.

We will also examine several testing practices and refactoring techniques that are helpful before the launch of your software project.

P3L2 Debriefing

Ready to get started? Enroll for the full course experience or view the free courseware now.

Check Out the Course

New! Software Debugging Course with Coaching and Certificates

We’ve all been there. We’ve all written code that didn’t work right. And we’ve all spent hours pouring through lines and lines of code to find the error, not entirely sure what we’re looking for. It’s terrible. But Software Debugging can help! In this course, you’ll learn how to use the scientific process in software engineering and how to automate the debugging process.

7 steps of debugging

This is an essential skill to keep in your software developer toolbox. Plus, the more efficient you are in debugging, the more you will be able to focus on the fun part of programming – designing and writing something new, rather than spending hours and hours on trying to find that one critical, but evasive, bug.

Today we’re happy to announce Verified Certificates and Certified Coaching for Software Debugging. In the full course, you’ll have access to a personal Coach to help you tailor your learning goals and answer any questions that you might have about the course material. After passing an oral exam, you’ll also earn a certificate verifying your new debugging skills. We’ll see you in class!

Start Free Trial

New Course: Software Development Life Cycles

Software engineering is much more than programming. It encompasses a wide range of systematic tasks from gathering requirements up to testing and shipping the final product.

We are very excited to introduce Software Development Life Cycles, a course created in partnership with Georgia Tech as a part of the Online Masters Degree in Computer Science. Taught by Professor Alex Orso, the class covers software phases, requirements engineering and software testing methods.

You will go through all the stages of software development as you design and build your own Android app for the final project. You will also learn about:

  • Integrated Development Environments (IDE)
  • Git (and Github!)
  • Unified Modeling Language (UML)

Ready to get started?

Check out the course