Introduction

Just bad at programming? Or, am I doing it wrong?

Frustrated? Does programming seem impossibly difficult? Do you feel like others are having an easier time in your programming courses? Or maybe you just feel a bit shakey and want to have more confidence as a software developer.

Does this sound like you?

You're not alone, and you might just be going about it the wrong way. A lot of students approach learning to program using the techniques and approaches that worked for them in grade school — but find that those techniques don't work so well when learning to program.

My goal is to fix that.

This course is all about the approach—about how we learn to program. I share advice, techniques, exercises, and examples from over 25 years of experience as a developer and from teaching thousands of students, to help you become a capable, confident programmer. 

Rather than focus on technical details, this course will help you start building your foundation, honing your skills, and mastering your craft.

I believe that anybody can become a strong programmer. Come help me prove it.

Take the first step to becoming a more competent, confident programmer, today!

Is it for me?

You should take this course if...

  • You are a beginning programmer looking to build your confidence and programming mastery.

  • You feel like you watch a lot, listen a lot, and read a lot, but aren't getting better at programming.

  • You are looking for strategies for learning more quickly and effectively.

  • You are serious about improving your skills and aren't afraid of a little work.

This course is not for everyone.

Is it for absolute beginners? Absolute beginners are welcome, but you will probably get more out of it if you have a little programming under your belt. 

Is it for experienced programmers? Not really. If you're a confident professional developer or a rockstar student always at the top of your class, you might be bored, and you probably don't need this class. Don't take this one unless you want a review. Don't worry, I'm planning to make more courses in the future.

This is not an embedded systems course. Some of you were hoping it would be, but it's not. I do hope to release an embedded course, at some point, in the future. 

This is not a get-a-job-at-google-in-3-weeks scheme. This course focuses on fundamentals—core strategies and tools aimed at helping you better understand how computers work and make you more confident at any level of the computing stack. But, I'm not going to lie to you. Getting good at developing software takes time and work. And, in this course, I will show you how to work efficiently to maximize your results.

This course is asynchronous. This course contains videos, quizzes, and text lessons, but no live content. This allows me to make it more affordable, and it means you can work through the material at the pace and schedule that works best for you. We do provide a Discord server to facilitate discussion and provide feedback.

Please let me know if you have questions or concerns. 

 

Instructor(s)

Jacob Sorber

Computer science professor, YouTuber, and goofy dad. I specialize in embedded systems, mobile computing, sensor networks, and helping students become better software and hardware developers by getting under the hood.

FAQ

  • What will be taught in the course?

    This course will give you strategies to become a more capable, confident software developer, including what to learn first to accelerate your mastery, how to avoid common student mistakes, and how to ensure that you can easily pivot in the future. We'll also provide you with training examples and programming activities to help you see how you can put these strategies into practice in your own training. The course will focus on fundamentals, not frills or frameworks, with an emphasis on building portable mastery that will serve you as well in embedded systems as it will in web application and game development.

  • What kind of equipment/software will I need for the course?

    At a minimum, you will need a computer and an Internet connection. To keep things simple, I'm going to use Linux as my reference computing platform. If you don't have Linux on your machine, you can set up a Linux virtual machine. I will also show you how to use Vagrant to set one up, in case your computer is struggling to run the full VM.

  • What language will we be using?

    I want to focus on strategy, not on language features. So, I mostly stick with C. Maybe some C++. You will also see a little ruby, python, and bash.

  • How much prior knowledge and experience do I need to have for this course?

    The course focuses on our approach to learning, not language mechanics. My examples will assume that you are familiar with the basics of C — functions, variables, statements, loops. It's ok if you are still a bit shaky in spots. The focus is on how to learn, not on what you know.

  • How much time is expected per per week in order to gain success and mastery in this course?

    That really depends on you. I recommend that new programmers spend at least 1 hour per day. More time and strategic practice will probably produce quicker results.

  • Can I get a refund if I change my mind?

    No. Refunds cause too much work and too many headaches. If you're unsure about taking the course, please watch my free videos on YouTube or ask me for clarification.