The most interesting Coursera courses for Java and Scala developers 
Bart Duke

It’s been said that learning doesn’t stop when you leave the classroom, and I’ve found that mostly true. One big difference is that you have to put more effort into it outside of school. Luckily for all of us, there are several great resources for continuing to learn on our own time, and the best thing is that they’re available for all of us, no matter who we are.

One such great resource is Coursera. Coursera is excellent for finding online classes from good universities on a huge range of topics. Whether you want to expand your knowledge or refresh your memory, you can often find something of value there. We’ve taken a look at the current offerings on Coursera that are relevant for Java and Scala developers, and here are some of the most interesting ones we found.

Java Basics and Refreshers

For most of us out there, there are random gaps in our knowledge as far as some of the basics go. We may have skipped that day in class or just didn’t have a chance to use some of these concepts in practive. So every now and then, taking a refresher course or bulking up your understanding of some of the basics can help you out. Here are a few interesting courses that fall under this category.

1. Hardware/Software Interface

It never hurts to have a good understanding of how the low level stuff that you’re coding on work. You can’t ignore the impact hardware has on the performance of your application and this is a good course to learn more about these connections.

2+3. Algorithms Part 1 and Algorithms Part 2

These six week classes from Princeton cover the fundamental elements of algorithms and data types. If you want to brush up on sorting, search, graph-processing, and string processing algorithms, these courses are a great resource for that.

Scala

There are two cool classes on Scala being taught by Martin Odersky, the lead designer of Scala. If you’re a Java developer who’s been meaning to check out functional programming or a Scala developer who wants to hear some of this stuff straight from the source, these are two awesome classes. Taking both of them is highly recommended.

4. Functional Programming Principles in Scala

This course covers the cornerstone elements of functional programming through the use of Scala. If you’ve ever had functional programming on your to-do list, this is a great crash course on the elements that you’ll need to know.

5. Principles of Reactive Programming

This is a spiritual part two of the Functional Programming Principles in Scala course. It aims to build on the fundamentals of functional programming by delving into the principles and key elements of reactive programming – which can be looked at as an extension of higher-order functional programming. The course is taught by Martin Odersky, Roland Kuhn and Erik Meijer.

Theoretical / Interesting

To be a really strong developer, you need to take more than just pure programming classes. Coursera has several classes that can indirectly make you better or that are just plain interesting and useful in general.

6. Natural Language Processing

This course from Stanford is a cool one to take for a couple of reasons. The first is obviously, that you may need to implement or use a solution like this at some point. And second, while the course focuses on Java and Python, it’s a relevant topic for any language, not just Java or Scala.

7. Data Analysis and Statistical Inference

If you want to analyze benchmarks in Java or look at other stats that your JVM produces, having a strong foundation in data analysis and statistics is super valuable. This course from Duke covers the fundamentals of statistics and arms you with the tools you need to apply this to your app. While not strictly a software-focused course, the knowledge is very applicable for developers.

8. Cracking the Creativity Code

Creativity is a useful attribute to have across most activities, programming included. This course from the Technion covers the creative process, treating creativity as an acquired skill that you can hone with practice. Part 1 of the course is concerned with tools, frameworks, and concepts for discovering new ideas.

Conclusion

Keeping sharp and expanding your knowledge is always a good idea. These courses represent a good overview of what’s available on Coursera today. Fortunately, most of these courses are interesting too, so it won’t feel like you’re grinding for the certificate of completion.

Do you have any other recommendations that we might have missed? Let me know in the comments below.

During his time at OverOps, Josh was in charge of product marketing. He wrote and maintained product documentation in addition to his contributions to the OverOps Blog. He's a big baseball fan and a small beer nerd.