Programming Languages, Part A

share ›
‹ links

Below are the top discussions from Reddit that mention this online Coursera course from University of Washington.

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming.

Recursion Higher-Order Function Pattern Matching Functional Programming

Reddsera may receive an affiliate commission if you enroll in a paid course after using these buttons to visit Coursera. Thank you for using these buttons to support Reddsera.

Taught by
Dan Grossman
and 8 more instructors

Offered by
University of Washington

Reddit Posts and Comments

7 posts • 147 mentions • top 45 shown below

r/learnprogramming • post
756 points • castleguar
If you are interested in learning Functional Programming, Recursion, Pattern Matching, Higher Order Functions, this is the course.

One happy customer here, I'm not finished the course yet, but so far its really blowing my mind, it's hard, but I'm enjoying it.

The language used is SML ( r/sml ) which is not the most popular language, but it's very similar to Ocaml, and shares a lot with F# and Haskell and seems to be a great spot to jump in. I found the course from Hacker News, a number of people there highly recommended it.

r/programming • post
26 points • jsyeo
Programming Languages MOOC Taught by Dan Grossman
r/emacs • post
52 points • _compunaut_
Great course to get into Functional Programming and Emacs/Elisp

Just wanted to let you know that the mooc/course which introduced me to Emacs and Functional Programming is starting again. Although the course is not about Emacs it is required in the first part of the course and can be used throughout.

The second part will teach you programming concepts in Racket. Since Racket is a Scheme it can serve as an introduction to Emacs Lisp as well. I can wholeheartedly recommend this course for anyone who learns Emacs Lisp on his own without any functional programming background. I did not complete the course the last time but it really got me started to get behind the Introduction to Emacs Lisp level. Besides that it is the best online course I have ever taken.

If anyone is interested, I participate in the current course again and it would be great to find some others from this channel to form some kind of Emacs/Elisp interested people kind of learning group.

The course already started but registration is still open:


Because there is some interest I have created a subreddit for the study group. You can find it here:

Join us now :)

Even if we are only a handful of people I hope we can build a place for Emacs enthusiasts with fruitful discussions around course topics and help each other to learn more about Functional Programming.

r/functionalprogramming • post
16 points • Hufe
Highly recommend this free course from the University of Washington for people who want to begin functional programming
r/linuxadmin • comment
13 points • dpflug

End of the day, it comes down to preference. Some people try Lisp and love it. Some try it and it never "clicks". On the whole, most programmers who have learned it value it, so there's a good chance it would be good for you.

It absolutely changed the way I program, but it also wasn't my first language. I think it could be a good first language. I also think it may take you longer to realize what makes it special if it's your start (which isn't necissarily a bad thing).

If you have a half an idea of what a variable is and how to write a function (in any language), my typical recommendation is to go through this Programming Languages course. It takes you through type systems, functional programming, and object oriented programming using ML (a Haskell ancestor), Racket (a Scheme/Lisp), and Ruby. It's a great overview of the craft, IMO.

To answer the question you've asked a couple times: You probably won't use it day-to-day. You will, however, learn strategies from it that you'll use the rest of your career.

r/compsci • post
66 points • daredevildas
Coursera - Programming Languages by University of Washington

Would you consider the 3 part Programming Languages course on Coursera(linked below) a prerequisite or a building block for studies in Programming Language Theory?

r/france • post
32 points • GekWacoctilchugwogdy
[Besoin d'Aide] 39 ans trop vieux pour les métiers du numérique ?

Après quelques années de travail précaire, je suis actuellement une prestation pôle emploi pour mettre en place un nouveau projet professionnel.

J'ai 39 ans et l'idée pour moi est de m'orienter vers les métiers en tension. Mon soucis est que j'ai un profil avec une grosse dominante investigateur et que lors de l'exploration des métiers en concordance avec ce profil ceux qui ressortent sont notamment les métiers du numérique et du développement informatique.

Pour information, j'ai une formation initiale universitaire (Bac+5) qui ne m'a servi à rien (trop générale/ universitaire) suivi d'un BTS en IG (oui il date aussi) et une expérience décevante en support niveau 1 (mauvais choix, je n'y étais pas à ma place).

Mon souci est que je suis du genre à prendre plaisir à suivre des MOOCs comme Programming languages ou à bricoler des trucs sur github/gitlab pour moi ou balancer des PR quand j'ai une besoin d'une fonctionnalité ou si je peux fixer un truc qui ne va pas.

J'avais fait une croix sur les métiers du développement vu mon âge, mais je voudrais quand même poser la question à des gens qui y travaillent. Est ce que le fait que ces métiers soient en tension pourrait, malgré mon âge "avancé", me permettre d'envisager d'y travailler.

PS. Si vous avez des idées de métiers pour des profils à dominante Investigateur, ou l'âge ne serait pas un facteur déterminant, je suis preneur.


le profil investigateur est un des 6 profils de la classification RIASSEC (merci @yumyum2 pour le lien) issue de la typologie de Holland

r/learnprogramming • post
9 points • bigiyai
I can highly recommend the this series of courses on programming languages

This is the first part of a free 3 part course on programming languages. I've just completed it and learned so much, and the instructor is a great teacher.

It's an intermediate level course, so you should have some familiarity with at least one mainstream language first, but it does take a fairly ground up approach.

r/functionalprogramming • comment
7 points • yawaramin

From your description, it sounds like Professor Dan Grossman’s free online course, Programming Languages, will be a perfect fit for you. It teaches FP using SML (a mostly academic but clean and elegant language), including concepts like currying, recursion, type inference, parametric polymorphism, and modules and modular programming. Worth a look:

r/lisp • comment
6 points • AnAirMagic

Not the original poster, but it's common for many universities to have a "Programming Languages" course. The goal of such courses is to study a number of programming languages, and use that comparison to try and understand a number of important concepts about programming languages in general.

For example, some of the things I learned include:

  • static vs dynamic typing (or type-checking)
  • strong vs weak typing (my professor hated this terminology, but you will only understand why after you understand type-checking in general)
  • Functional vs object-oriented programming (including covariance, contra-variance)
  • Immutable vs mutable state
  • Recursion vs iteration

And really, it's just really nice to try out a whole bunch of languages and understand some common techniques from, say, functional programming, that can also be useful (but possibly not obvious) in object-oriented programming languages. For example, now that Java has added streams and C# is adding pattern matching, they feel very natural to me because I spent a little bit of time learning SML.

Shoutout to Dan Grossman for his great course!

r/learnprogramming • post
13 points • belikerber7
This was the hardest course I've ever taken in my entire Life!

Programming Languages, Part A from Coursera. This is definitely one of the best courses available on Coursera. Very challenging and time consuming (not for beginners), but it will without doubt make you a better programmer.

This course opened my mind to many of the different paradigms of programming and did so with comprehensive lectures, an incredible instructor, and useful/highly-illustrative assignments.

The course uses SML, Racket an Ruby to teach you about concepts that can be applied to any programming languages. So, even if you don't know these 3 languages, the knowledge you acquire can easily be applied to any of your favorite languages.

Dan is an amazing teacher. If you're a serious programmer, you MUST take this course!

r/OMSCS • comment
5 points • tinduck

Yes. The lack of programming experience would make the easy assignments hard, and the hard assignments impossible in the majority of the classes in this program.

If you are the type of programmer who knows how to pick up new languages or tools quickly, you should be fine.

You don't need to be an expert in any language. I wasn't much of C programmer before I took GIOS. I had a one or two basic classes that used C, but nothing really complicated. I did fine in IOS after doing a quick tutorial on Lynda.

But I worked professionally as a C# developer for three years before I entered the program. I had taken a programming languages class before. Computer Engineering was my major as an undergraduate.

You should know were you are at. It sounds to me like you aren't ready. I would recommend that you try to take the Programming Languages course on Coursera by the University of Washington. [1]

If you struggle with the assignments in that course, you will probably struggle in the OMSCS. While this MOOC is a lot easier than the courses in the OMSCS, I think is simulates the task of learning a new tool or language in by an arbitrarily tight deadline quite well. That's a critical skill that you need to be successful in this program.

[1] -

r/rust • comment
4 points • matklad

I don’t know about resources for variance specifically, but this coursera course does a grear job explaining this and other concepts of programming languages: I highly recommend it!

r/bioinformatics • comment
3 points • VirtualCell

I agree with Linooney, but wanted to add some in case it’s helpful:

If you have the time, I highly recommend taking an intro CS course or some theory. I had a hard time learning languages until I took an intro series.

Dan Grossman over at University of Washington is a well-known educator, and he has some really nontrivial introductory material in Coursera’s Programming Languagea, Part A, if you want:

Or if you have less time and want to get programming more quickly, just buzz through an intro to programming with python course.

Really I think the key things to get are:

  1. Data types and structures, along with typed vs untyped languages. For example, Python is really lax about what data types you use, but the types include things like int, string, etc. Perl is also lax, but has basically three core types: scalars, vectors, and hashes. C++ will be picky about types, and they’ll look closer to Python’s. Paying attention to those things often helps when problems come up.

  2. Common coding practices. Abstaction, for example. Beginner programmers will often write lots of functions/methods that have some common function. It takes practice to notice that repetition and write more general functions accordingly b

  3. Object-oriented vs functional programming styles, and some design patterns. Even in casual coding, these things can come in handy. Sometimes objects and methods are better choices than functions even for small pieces of software, and some knowledge of basic design patterns like multiple dispatch and visitors can be helpful there.

Some of the intro coursework you we online can help you practice those concepts, which can be just as important if not more than the individual language.

r/programming • post
3 points • ApoMechanesTheos
Grossman's Programming Languages course on Coursera [new session]
r/udub • comment
3 points • Cpt_Crunch152

I've heard good things from CS majors about using free classes on coursera. The one I hear about the most is the one that come from UW. I believe it should be similar to the in-major class CSE 341 (Programming Languages)

Here it is: coursera link

r/learnjavascript • comment
2 points • wonderful_wonton

The problem is that Javascript is now a rich programming language with features that don't make sense unless you learn programming languages concepts, including functional programming. You can take basic syntax & how-to classes, but at some point you need to take a programming languages course, like the one university of washington offers on coursera or some basic ideas will seem complex. This is the reason why some people think Eloquent Javascript is hard

r/rust • comment
2 points • d3adbeef123

Type system wise, I think Rust's type system is very close to ML languages (minus the lifetimes and borrow checker related aspects). In that regard, I think Prof Grossman's course on Programming Languages is really good! I would recommend you give that a shot

r/learnprogramming • comment
2 points • mad0314

As others have said, if your aim is to become a better programmer, stick with one language a while longer. Jumping around languages is like learning the basics of guitar, then moving to piano, then to trumpet, etc.

That said, I really enjoyed the 3 part Programming Languages courses on Coursera. It looks at how languages in general function and looks at 3 languages and how they work. I enjoy learning about languages, just make sure it doesn't get in the way of getting experience actually programming.

r/programming • comment
2 points • bjzaba

Would highly recommend a course like Programming Languages on Coursera once you have a language or two under your belt (R is fine!). Being able to analyze the syntax and semantics of systems is like a super power that not only makes it quick and easy to pick up new languages, but also makes it easier to master new libraries and frameworks.

r/learnprogramming • comment
1 points • NotQuaggles

Check out this course (and parts B, C) on Coursera. Fantastic, easy to understand resource that goes over a lot of functional programming. Mostly SML iirc. I think the lectures available on demand somewhere too with a little bit of searching.

r/adventofcode • comment
1 points • rabuf

SML/OCaml might be the best entry points for you. Neither (at least in introductory materials) talks about monads, and currying makes sense once you learn it. Both permit a degree of imperative programming to fall back on in a natural way when appropriate.

I took an earlier version of this course, so I can't speak to the current incarnation. However, it was a solid introduction to SML and Racket at the time (seems they added Ruby, I don't recall that from when I took it).

r/learnprogramming • comment
1 points • CodeCamping

I didn't see a clear free option.

r/computerscience • comment
1 points • -jp-

A while back I took Programming Languages, Part A offered by University of Washington. It's listed as an intermediate course so it might be a bit challenging but I'd still recommend it since it doesn't assume you know anything in particular going in and does a really good job teaching CS as an approach to problem-solving rather than a mathematical construct.

r/scheme • comment
1 points • nikofeyn

yea, it's up to you. focusing is always good, but i feel the two things cover something so similar but it different ways, it's helpful.

once you finish, definitely follow up with the programming languages course. it's really fun. i just finished it this fall.

r/programming • comment
1 points • mlk

I can recommend the course on Coursera:

it's functional programming from scratch, part A in done in SML. I've learned a lot

r/ProgrammingLanguages • comment
1 points • gilmi


r/computerscience • comment
4 points • IcebergLattice

Actual course links themselves for those who aren't into ad affiliate links:

Part A

Part B

Part C

r/C_Programming • comment
5 points • TheAwdacityOfSoap

What do you want to do? Knowing what you want to do with the language would help to narrow the choices down. If you're just interested in learning a language for its own sake, you could try:

  • Taking a course online that covers multiple languages, such as Programming Languages on Coursera: Part A (ML), Part B (Racket), Part C (Ruby).
  • Scheme (a lisp). I've heard great things about SICP, but I haven't read it, regretfully.
  • Python, as others have suggested, is very different from C and also very practical. It's a top language right now in industry, especially in data science and machine learning. I think it's still a major contender in server development as well.
  • Java. Lots of people hate it for some reason. I love Java. It's got its quirks, sure, but I get the warm and fuzzies every time I use it, and it's one of the top languages in use today. Lots of practical stuff you can do with Java. Write servers. Program robots. Create a Minecraft plugin or write your own game.
  • Rust. A very exciting up and coming languages. Has a lot of really nice features like compile time memory/thread safety guarantees, traits and an official package manager. It's a tough nut to crack at first (I'm still working on it myself), but it's really nice.
  • JavaScript. Say what you will, but JavaScript is one of the top languages in use today. Learning JavaScript opens up frontend web development as an option for you. If you want to make a website that doesn't just sit there looking pretty, you'll have to go down this road eventually. Like Java, JavaScript has its quirks too, but is overall an enjoyable experience to use if you ignore some features (like double equals, unless you really know what you're doing). Paired with TypeScript, it's actually a joy.

If you're feeling analysis paralysis, I'd go with Java if you want something practical, or Scheme if you want your mind blown.

r/learnprogramming • comment
2 points • pmpforever

One of the best classes in my degree was one on programming languages, a formal exposure to declarative programming will change how you write code.

I'd recommend as the class I took was based on this course.

r/cscareerquestions • comment
2 points • juniordevv


this is a languages course, but focuses on using ML to teach FP fundamentals. i'm only 3 weeks in, but coming from an OOP background I think I'm learning a lot.

r/cscareerquestions • comment
2 points • TeslaRealm

Coursera has a three course programming languages module. Each course is taught in a different language to steer away from particular language paradigms and focus on concepts. I think the order is Racket, ML, then Ruby. Here is the link.

There's some good reading resources as well. Programming Languages: Application and Interpretation is what I used in my Uni programming languages class.

The course is specific to programming language design and might be more than you're looking for. You can also look for books about Scala, Racket, etc.

r/AskComputerScience • comment
2 points • not-just-yeti

Writing an interpreter is actually not a bad exercise, if approached correctly. You can implement expressions including conditionals, defining functions, and calling functions all pretty easily (as a regular 1-2week homework in a college class). For example:


  • (I forget if it's the "part a" or "part b" of this course that implements a language for one of its homeworks)

Those two sources use, I think, ML and a racket-dialect (respectively). But you really need very few language features; here's a similar, basic interpreter written in Java: (and adding "../.." to that URL brings you to the hw assignments which add on to that initial start).

r/haskellquestions • comment
1 points • crlsh

Maybe, try Standart ML first. is a good intro to compare paradigms

r/croatia • comment
1 points • grizwako

Programiram gotovo 15 godina..

Kreni s Pythonom, nije bitan prvi jezik koji naučiš, bitno je da pohvataš neke osnovne koncepte/logiku/način razmišljanja koji su potrebni za rad u bilo kojem jeziku.

S Pythonom ćeš kao početnik imati puno manje problema, C++ je beštija od jezika za početnike koju treba ukrotiti.

Ove savjete "ovisi čim se želiš baviti", ignoriraj. Dobronamjerni su, no generalno nisu relevantni.Kad skontaš što je programiranje i kako se to zapravo radi, onda možeš učiti druge jezike koji su bliži onome što stvarno želiš raditi.

Kad skontaš što je programiranje i kako se to zapravo radi, onda možeš učiti druge jezike koji su bliži onome što stvarno želiš raditi.


Kad budeš procijenio da si spreman za idući korak, prođi neke materijale o operativnim sustavima i o tome kako kompjuter zapravo radi. Imaš na edx "Computation Structures" u tri dijela. Ne moraš to znati detaljno, samo da odgledaš sva tri dijela i da ugrubo imaš neke ideje kako sve to funkcionira će ti puno pomoći dugoročno.
I na udacity imaš "intro to operating systems", to bi bilo bolje da malo konkretnije savladaš.

Poanta je u tome što taj dio "odispod" nije nikakva magija, i tebi relevantan dio je prilično jednostavan. Naravno, ima nekih edge-caseva, no ako nećeš programirat kompajlere, ne zamaraš se s time.

NAKON TOGA (nemoj kretati s ovim jezicima, prvo se igraj s Python-om), moja preporuka je: jer to te provede kroz gotovo sve bitne koncepte samih jezika. I onda nakon toga, ideš na rust-lang (možeš i C, ali nemoj C++) da povežeš malo konkretnije sve koncepte sa computer architecture. Preporučam Rust naspram C-a, compiler greške su user friendly.


Generalni takeaway: ima puno toga, sve je zanimljivo. Dok probijaš trenutni item s "TODO-liste" idi u širinu sa znanjem.

Eh, i još tri stvari.
Prva: Ako nisi nikada koristio linux, nemoj niti pokušavati dok ne dođeš do OS dijela. (vjerojatno bi bilo dobro da odgledaš makar onaj udacity course prije). Kad-tad bi trebao i to savladati, no dok se boriš sa programskim konceptima to će ti biti još jedan problem.

Druga: Koristi PyCharm kao IDE i nauči što prije koristiti debugger. To ti omogućava da izvršavaš kod liniju po liniju i pratiš stanje programa/varijabli, pa skužiš lagano zašto nešto ne radi kako treba.

Treća: Iako sam već spomenuo, ima stvarno jako puno toga. Naići ćeš na puno problema gdje nećeš imati pojma kako dalje, no potrudi se i nemoj odustati. Najviše ćeš se namučiti u početku, no uz malo sreće brzo ćeš se istrenirat na dopamin-rush koji slijedi kad riješiš problem.

Četvrta: gotovo sigurno će greške biti u tvome kodu, postavkama, načinu na koji nešto pokrećeš a ne u interpreteru/kompajleru/operativnom sustavu/hardveru.

r/ocaml • comment
1 points • declarative is another great resource, although the course (Part A of the course, to be more specific) is taught in SML, which is a dialect of OCaml. You can audit the course for free!

Part B and Part C of the course use Racket and Ruby respectively, and I'd recommend those, too.

r/lisp • comment
1 points • AlexKosh

maybe not quite SICP, but a good preparation for it and a lot of useful things can be found in

(there are 3 parts). It has some material from SICP, but of course in smaller doses :) awesome course. And the tutor uses 3 languages instead of just lisp. He uses SML, Racket, and Ruby. I would start with it.

r/compsci • comment
1 points • drBearhands

Not sure how good these are, but I just finished System Validation: Automata and behavioural equivalences on Coursera, with it's follow-ups as well as Programming Languages, Part A (which is rated pretty highly) still on the menu. The certificates seem nice to have.

r/learnprogramming • comment
11 points • Lesabotsy

Here is mine, might get your interest. Note that my plan is to learn programming in general and not just web dev thing or one specific language, which should suit you well, I will focus on specialization later. Main language to learn will be java and python. Most of the courses are taken from OSSU minus the hardware, physics and all ...

Part 1: Intro



Important, add some maths if you feel shaky about it -



Part 2: Corse CS

  • (the whole MicroMaster)





Part 3: Algorithms and Databases




Part 4: Specialize on whatever you want ...

r/ocaml • comment
2 points • rz2000

Do people regret the time they invested into learning OCaml after encountering issues related to syntax?

No, I don't think so. Maybe people wish there had been different design decisions, but I don't think they are show stoppers or fatal flaws.

Maybe the responses are because the people who choose OCaml have largely decided that they like it being practical and pragmatic. That is they have in some sense specifically chosen good over perfect.

There are useful libraries and systems developed by Jane Street, and utop is a nice repl. However, I might recommend something like just working through OCaml From the Very Beginning or some of the tutorials first before looking for the best libraries or alternative syntaxes. Believe it or not the exercises really are very similar to what you find in an online course that uses Standard ML or Erlang as the language to introduce functional programming.

r/MachineLearning • comment
1 points • BrownPandaBoi

I have had a similar crisis of faith in ML recently. I got into it during my final year of college and mostly rode the deep learning hype train into this field. However, due to a lack of sufficient maths (and even CS) knowledge, I often thought I was shooting in the dark too. And I was always worried about publishing to get into a 'good' Ph.D. program. Recently, I had a revelation that this 'rat race' approach to learning something I am genuinely interested in is not sustainable. So I've tried switching into a curiosity-driven model of studying machine learning.

For me what seems to be working is I started exploring other areas I was interested in (in computer science and related fields) like:

  • Understanding game engine development (
  • Understanding the ins and outs of a computer (
  • Understanding how programming languages work (
  • Understanding how maths works (
  • Reading about the philosophy of mind

These threads may seem sort of unrelated but let me tell you I've had great joy in exploring them and they very concretely have helped me develop a better understanding of AI and ML in general.

r/nus • comment
1 points • chuabingquan

If you do want a head start for CS1101S, you can take the following Coursera courses:

They are based on the same materials taught in CS1101S, but with more rigour in their definitions, more emphasis on the benefits and trade-offs of functional programming, and also share the same goal of communicating computational process concisely as opposed to just strewing a bunch of code together and producing something that works. I took those courses during NS and CS1101S was more of a recap with more additional practices.

Do take note that the languages taught are certainly different; the Coursera courses use Standard ML and Racket while CS1101S uses Source, a subset of the better parts of JavaScript with a largely functional-style standard library. However, the language is not the key here and the goal is to establish a framework in your mind on how to reason and write programs that that communicates your ideas concisely.

There are also additional topics like Order of Growth, which you can refer to u/wild-berry-berry's fantastic reference to Abdul Bari.

If you want to clear your CS1101S requirements earlier, NUS has a programme called iBLOC; if you're an NSF, you can take CS1010X near the end of your service and transfer the credits earned in place of CS1101S when the semester starts. This way, you can fast track and take certain modules such as CS2030S as early as your first semester. Do take note however that CS1010X favours Object-Oriented Programming (OOP) much more over its functional counterpart. If you do want to dive into OOP too, you can follow up from the Coursera course mentioned earlier and attempt the next part:

Lastly, do study discrete math if you're not familiar with proving; it is the backbone of CS.

Hope it helps.

r/learnprogramming • comment
1 points • cristianobaptista

There is also the Open Source Society University, which is an self-learning guide from beginner to very advanced:

Before you start trying to get some money out of programming, I believe you should really understand some basics from these courses:


After this you should be able to start learning most programming languages with some level of confidence that you kinda know what you are doing, and my advice is that you should start learning by doing before going through more advanced topics, using any of the other resources other people have shared with you.

If you want any more advice regarding how to start, feel free to message me directly.

r/learnprogramming • post
3 points • Woadray
My plan to learn programming, looking for criticism ...

At the start of 2018 I decided to learn programming, web development especially. But the more I learned, the more I found it to be enjoyable and that it is something that I really like, too bad I'm so late, I wish I had figured it out earlier. So I decided to learn more and not just dive into specialization in web development. I want to be a "good programmer" first, not just good with JavaScript. So I did some research and found a bunch of MOOCs and guides, I took them, mixed them up and made a plan to fit my goal. Here it is then:

















On top of all of this I'll maybe add some maths if needed. I have no idea if my time estimation is accurate, but I will only know by doing so we'll see ... I do this full time by the way. Feel free to criticize, any input is valuable, beside this month every other one ca be tweaked.

Thanks for reading.

r/digitalnomad • comment
1 points • CuttlefishQuincunx

The difficulty level really ramps up after Intro to Programming. I used a lot of other resources, but probably the best I could recommend for beginning Ruby are:

Chris Pine's Learning to Program:

Ada Developer's Academy Jumpstart and Textbook curriculum:

The Odin Project:


Ada Jumpstart and the first few sections of the textbook curriculum will cover the same ground as to Intro to Programming but will give you more practice and a slightly different approach.


The Odin Project was founded by App Academy grads, and the curriculum is very similar to App Academy. It does not go into as much depth as aA. The advantages are that it has been available online for a bit longer than App Academy, so the writing is clearer in some places and the exercises are edited down to the essentials. You can also see everyone else's solutions, which is helpful if you get stuck or just want to see how other people approached a project after you finish yours.


For the SQL section, I supplemented with Jennifer Widom's Databases course on Stanford Lagunita. It is free, and awesome. I never thought I could be persuaded to find databases interesting, but the material is so well presented, it is like enjoying a fine meal prepared by a master chef:


If you haven't already, you might want to check out freeCodeCamp, as well. I went through the first few certifications, and while I didn't really retain much from the individual exercises, the projects were good. They focus on HTML, CSS and JavaScript.


Since not everyone learns the same way, I would also recommend googling around for books on the subject. There may be a copy you can look through and see if it fits your learning style.


Coursera has been really helpful in filling in the gaps. I'm not sure how much you want to invest in learning computer science, but if you have the time and interest, these two are extremely high quality: