Are you a software engineer? Create a Coursera Collection! | Coursera Community
Coursera Header
Invitation

Are you a software engineer? Create a Coursera Collection!

  • 10 August 2019
  • 6 replies
  • 1342 views
Are you a software engineer? Create a Coursera Collection!
Userlevel 7
Badge +13
  • Community Manager
  • 962 replies

Get your personally-recommended courses published as an official Coursera Collection!


☑ Are you a software engineer?

☑ Have you completed at least four Coursera courses and/or Specializations?

☑ Do you like to help others?

Yes? This is a great opportunity to curate a collection of courses and/or Specializations that you personally recommend related to software engineering.

We're especially interested in collections that have helped you change careers, advance in your career, or develop a critical skill set that you use in your job.

Your collection may be turned into an official Coursera Collection! Check out these Coursera Collections for inspiration:
Post your most creative, thoughtful collection – something that only you could put together. Ready to go?

Next Steps

  1. Reply to this post with your list of 4 to 10 Coursera courses and/or Specializations
  2. Give a reason why you included each course/Specialization
  3. Suggest a title for your collection
  4. Describe what people will learn as a result of completing your collection or what sorts of careers/roles/on-the-job challenges they might be ready for
  5. Tell us who this collection is for – people new to your industry? Senior leadership? People looking to transition into a very specific role?
✳ There's no deadline, but I'll be reviewing collections on a rolling basis, i.e., as they are posted. I recommend posting your collection as soon as possible! If your collection is selected, I'll contact you via private message here in the Community with next steps. ✳

6 replies

Userlevel 5
Badge +3
How to become a thoughtful, well-rounded developer.

  1. Learning to learn
  2. Coding challenge website (for example: https://www.codewars.com, https://leetcode.com/)
  3. Interactive Python 1 & 2 (Rice Uni)
  4. Algorithmic Toolbox, Data Structures
  5. Mathematics
  6. Ethics
  7. Now think about specialising.
Why (1)

Software development is a rapidly changing field, and so to do the job well I think you need to learn a lot of stuff. So for that reason, knowing how you learn efficiently is a really nice 'meta-skill' to have.

Why (2)

Okay so this isn't a Coursera recommendation, but it is nonetheless something that helped me tremendously when it came to my own career.

If you want to become a developer you need to solve problems with code. If you want to pass job interviews then for a lot of companies you will need to be solve problems with code.

A website like codewars.com has thousands of puzzles, at varying difficulties, with several languages options. And once you complete a challenge you can compare your code to how everyone else went about solving it. The fact that there are 'grades' (for the puzzles and yourself) also gives you a sense of progress.

Practice makes perfect, and if you can get into the habit of doing a puzzle a day you will improve quickly. For maximal effect, this is something you should be doing alongside Coursera courses.

Why (3)

Personally I found the Rice course very rewarding. It was at the right level of difficulty (very hard if you are new to programming, but achievable with effort) and the weekly projects (small games) were fun to code. The course was also light on theory, which I consider a plus for a beginner course

In short, I'd recommend this one over a lot of the other beginner python courses because it does a better job keeping you motivated.

Why (4)

Algorithmic thinking is a core part of computer science. Learning it will provide a solid foundation for future study.

I recommend this specific course over other algo courses out there simply for the fact that passing this course requires you to write a lot of code! You have to solve a lot of small self-contained problems. And for why I think that's important just look at "why (2)" above.

Why (5)

It is very hard to make a single course recommendation for mathematics since everyone will have wildly different levels of ability.

If you are good at math then you may only need to take a 'refresher' course or two (maybe something like Imperials "Math for Machine Learning"). If however you are like me and have very little mathematical training then you have a long battle ahead of you. How much math you need will depend on your specialism (more on this in a jiffy).

My journey was of someone who stopped math at age 16. So when it came to learning this stuff 10 years later to say I was rusty is an understatement.

Personally the most useful things I found was 'Khan Academy' and Keith Devlins "Intro to mathematical thinking".

As a software developer knowing a bit of math is like adding another tool to your toolbox; it will allow you to approach problems in a different way. The reason I specifically mention Devlin's course is because the emphasis is on thinking mathematically.

A key meta skill of the software developer is the ability to approach problems from a variety of angles; and I think this course may help with that.

Also, about half of course covers basic logic which is also very useful of developers. For example, developers need to be able to understand and write statements like the following

  • if (A and B) and not (C or D) then return X
Why (6)

Ethics probably seems like a major curve-ball for a software developer. But here's my reasoning...

In the age of big data and machine learning computers are everywhere and technology seems to move faster than ethical debate; therefore I think professional software developers need to consider the impact our work may have.

Take Facebook for instance, any change to the platform changes how millions of people interact with strangers, friends and family. One small change to how the news feed works can therefore have profound consequences on society.

It is precisely because we wield so much power we should endeavour to consider our impact. A little bit of ethics training should give you the ability to argue with your boss when they ask you do something a bit dubious.

To be clear, this training WONT help you get a job and it WONT make you a better developer. But it WILL make you think about what the consequences or your work, and society will be all the better for it.

May also be worth reading this.

Why (7)

So, if you have done everything I've outlined above then you should have plenty of experience solving problems with code: Whats next?

At this point, you might want to start thinking about where you might want to specialise.

  • Games programming?
Ditch python, try learning things like C#, C++, Unity engine, Linear Algebra.

  • Machine Learning / Data Science?
Continue with Python, take AI/Data Science courses (obviously), and make sure you keep up with the Math (e.g. Statistics, probability, Linear Algebra, Calculus, Game Theory).

For ethics, see if you can pick up a copy of Cathy Newman's "Weapons of Math Destruction". There is an 'ethics for data science' course on coursersa which may be worth checking out too. But since I haven't taken that course myself I don't really feel comfortable recommending it.

  • Web Development?
Pick up HTML, CSS, and Javascript. Try to call API's with Python. Have a go at web scraping. Dabbling in graphic design (e.g Photoshop) may also be useful. As for math, you probably won't need anything more advanced than basic algebra and trigonometry.

For ethics, just have a good look at the 'dark pattern' website.
Userlevel 1
Badge
Some software engineer positions require a bachelor's degree. Majoring in computer science will provide the most useful background for designing and perfecting software. Most often, interviewers will ask questions focusing on data structures and algorithms, so the theoretical background provided by traditional computer science degrees best prepares you for this. However, you will likely need to spend considerable time outside of the classroom writing software to learn how the theoretical concepts you're taught can apply in the practice of writing real software. It is possible to get hired with an associate's degree or even with nothing but self-taught experience.

Begin programming. Software engineering is not focused exclusively on coding, but you will need to know at least a couple languages, and a deeper understanding of how they function.

Study data structures and algorithms. Algorithm simply means a formula or process for solving a problem. Focus on developing and maintaining your skills in order to do your best once you've obtained a position as a software engineer.
  • Study math. Mathematics will be a part of any computer science major, and many algorithms and data structures knowledge stems from mathematics. While not absolutely necessary, having a strong background in math will give you stronger core skills for analyzing and designing new algorithms. If you're targeting companies that do cutting-edge research and development, math will be a must. If you want a cushy corporate job, you can likely skim through higher level math.x
  • Discrete mathematics is a particularly useful area of study, as is any math course that involves software.
Supplement your studies Use practice sites for coding. Sites like CodeWars and CodinGame offer thousands of problems for you to test your skills against. Find a real-world community to help keep you inspired, develop connections, and give you guidance on where to focus your learning.

Build software. The best way to improve your skills is to use them. Whether professional projects or personal, designing and coding software will teach you a great deal. [1]



Suggested title: How to be a successful software engineer? (Software Engineering between theory and practice)


Core SWE & CS Requirements:

This Specialization will teach you core programming concepts and equip you to write programs to solve complex problems. In addition, you will gain the foundational skills a software engineer needs to solve real-world problems, from designing algorithms to testing and debugging your programs.

These Specializations cover intermediate topics in software development. You’ll learn object-oriented programming principles, and you’ll implement data structures and algorithms for organizing large amounts of data in a way that is both efficient and easy to work with. You’ll also practice critically evaluating your own code, and you’ll build technical communication skills that will help you prepare for job interviews and collaborative work as a software engineer.

This course introduces the world of database systems. It provides the foundation that will enable learners to master skills in data modeling and information, as well as extract information using existing database management systems.

These specializations aim to provide a deeper understanding of the underlying context and theory of software development practices.

Math Requirements:

As a software engineer, discrete Math is needed to see mathematical structures in the object you work with, and understand their properties.

Software Development Technologies:

As a software engineer, you must turn all knowledge into real world projects hence, these specialisations cover the basics of modern full stack web development, from UX design to front-end coding to custom databases.

------------------------------------------------------------------

[1] How to Become a Software Engineer?
Badge
Starting as a software developer

  1. Learning how to learn
  2. Algorithms specialization(Stanford by Tim Roughgarden)
  3. Web Design for Everybody(UMich)
  4. Full stack web and multiplatform web development(Hongkong)
  5. Python for everybody specialization
  6. Object oriented java programming specialization(UCSD)
  7. Machine Learning(Andrew Ng)
Reasons for including each course:
  1. This course develops your mental faculties. It will help people to perform better in all subsequent courses (and in general life).
  2. Algorithms are the bread and butter for any software engineer. This specialization gives an introduction to most commonly use algorithmic paradigms that you ever going to use. Taught by a great teacher, he tries to develop the intuition in students which is key to success in this field. The courses also have programming assignments to test your understanding.
  3. This specialization provides a basic overview of how a website is structured and how to develop a mobile friendly, responsive website from scratch. No need to learn any framework nuances, just learn basic web development.
  4. After getting a basic idea of web development and honing your HTML,CSS and JS skills, this specialization provides complete full stack development experience. You will learn AngularJS(one of the most popular front-end framework) and Node for backend. Alognwith these, you will also learn many tools to make your web development journey easier.
  5. After getting some coding practice, this specialization delves into python programming, an essential skill in today's market. It will get you started using python for many different scenarios.
  6. This is an intermediate level specialization, but a great source to learn data structures and their applications using Java. You get to learn Java and get a deep insight into the workings of an object oriented language. The courses provide great assignments which will give you a sense of accomplishment when you complete them. The fourth course also provide google interview tips, great for landing jobs at big companies.
  7. Finally, if you are Coursera, you have to take the Machine Learning course by Andrew Ng. Machine Learning is one of the most trending topics in CS now. You will understand all the basic ML concepts after taking this course and will also be able to implement them in your own projects. This will prepare you to take more advanced courses in AI and ML(try deeplearning.ai), if you wish to do so in the future.
These courses(and a lot of practice!) were enough for me to land my first job as a software engineer at Microsoft a month ago.
Userlevel 2
Badge +2
Hello all, below is a list of Coursera courses I have taken that might be related to software engineering. For sure, they are related to Web Development. The title I came up with for this collection is Web Development Courses for people with busy schedules.

  • Responsive Web Design - University of London (I have had a keen interest in making my website responsive for all screen sizes, and this course is all about it).
  • Responsive Website Basics - University of London (It always feels great to learn basics of anything)
  • HTML, CSS, & Javascript for Web Developers - Johns Hopkins University (I find scripting/markup languages, HTML/CSS/Javascript, more comfortable to learn than, say engineering languages, C++/C)
  • Python for Everybody - University of Michigan (Instructor has a great sense of humor, so it was a no brainer for me to follow his numerous courses)
  • Building Web Applications in PHP - University of Michigan (PHP might be the most straightforward language to connect with databases, so I took it)

After completing the above courses, students might be ready to come up with static/dynamic websites that have a frontend and a backend. That means having skilled in full-stack web development to tackle challenges related to that.
This collection might be for people who have somewhat knowledge in Web development and want to dig deeper into it. That might provide them a role of a Front end Web developer. I wouldn't say Full Stack just yet because that might require a little bit more digging. Cheers!
Badge
A few years ago, I completed Andrew Ng's Machine Learning course. That was a real learning experience, one that was not easy, covered a broad range of topics in a fairly intensive timeline, but seemed so practical and relevant to actual work I expected I would do in a job in this area, seeming to be just academic and theoretical enough to give you confidence that you actually had learned something of the fundamentals in algorithms and math (and not just, for example, having learned how to plug some figures into some high-level library) and would be able to build on that knowledge with further study -- if only I could find the ideal next course to progress on to... I never found that course. I started several other machine learning, statistical learning, algorithms, optimization, etc types of courses but they always just required me to start from scratch again many of the same topics I had already covered, in a different language, with different tools, at varying levels of assumed prior knowledge and experience, and so on. The alternate to finding an ideal follow-on course is to enrol in a specialization, which are several courses selected to work together. These require much bigger commitments and there are not many of them.

In summary, these Coursera Collections sound like they are a much-needed solution to this problem that I'm sure others have also experienced. Of course, recommended follow-on courses would be much more helpful if they were presented as "Where to next?"s at the end of each course. Coursera Collections would be less useful if relevant collections are not presented in situ right there in the course material.
Userlevel 7
Badge +13
A few years ago, I completed Andrew Ng's Machine Learning course. That was a real learning experience, one that was not easy, covered a broad range of topics in a fairly intensive timeline, but seemed so practical and relevant to actual work I expected I would do in a job in this area, seeming to be just academic and theoretical enough to give you confidence that you actually had learned something of the fundamentals in algorithms and math (and not just, for example, having learned how to plug some figures into some high-level library) and would be able to build on that knowledge with further study -- if only I could find the ideal next course to progress on to... I never found that course. I started several other machine learning, statistical learning, algorithms, optimization, etc types of courses but they always just required me to start from scratch again many of the same topics I had already covered, in a different language, with different tools, at varying levels of assumed prior knowledge and experience, and so on. The alternate to finding an ideal follow-on course is to enrol in a specialization, which are several courses selected to work together. These require much bigger commitments and there are not many of them.

In summary, these Coursera Collections sound like they are a much-needed solution to this problem that I'm sure others have also experienced. Of course, recommended follow-on courses would be much more helpful if they were presented as "Where to next?"s at the end of each course. Coursera Collections would be less useful if relevant collections are not presented in situ right there in the course material.


Thank you for your feedback and suggestions, @shahmatwu! It's always very helpful to hear from people using Coursera. If you're interested, you can make this suggestion in our Coursera Ideas & Suggestions forum. There, other community members can vote for your idea. This post explains how the forum works: Best Practices When Making a Feature Request.

Reply