Programming Languages, Part A

share ›
‹ links

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

Offered by University of Washington. This course is an introduction to the basic concepts of programming languages, with a strong emphasis ... Enroll for free.

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

4 posts • 145 mentions • top 48 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/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/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/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/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/AskComputerScience • comment
2 points • dragonprevost

For starters, I love the narrative of this post. A lot of people go through the same conflict but have trouble acknowledging it, and reaching out to others. This post will most likely impact a number of people!

It sounds to me, that you might be overwhelmed with school, classes, working from home, etc... Keep in mind that these factors greatly impact our moods and outlooks. You spoke a bit about freezing up in a practice exam, which can happen if you're burnt out, stressed, or overwhelmed. My initial advice is to give yourself a bit of a break! Don't overload yourself with work over the holidays. With covid, it is harder than ever to maintain a healthy work-life balance, so do yourself a favor and put down the books and give yourself a minute to breathe. :) This might not have been the answer you are looking for, but it may help you a lot.

Now I will give you a little personal opinion that I have about programming and passion. I see programming as a tool to apply your (creative) ideas to real problems affecting the world. Sure, computer science could be your passion, but I feel that any good engineer's passion should be to solve serious problems in the world. You don't see Elon saying "my passion is writing code, or designing rockets, etc...", but you do hear him saying "my passion to make humans interplanetary...". Programming should be a tool to solve more fulfilling problems, like space travel for example. Some people's main passion might be programming, but for most people, it has to be something bigger, deeper, more important. You don't have to be obsessed with programming to a good software engineer.

Now for some technical advice... despite my last rant on not needing to be passionate about programming, to be a good software engineer, you do have to learn to program well and continuously refine your skills. It's up to us to constantly improve the infrastructure that society operates on. Luckily, becoming a strong programmer is something that develops with time and practice. After you give yourself a break, you can try different approaches to learning different programming skills. There is an amazing free course on programming languages offered through Coursera. Maybe check that out if you take a term off school or something.

Best of luck with your exams! Take it easy, smell the roses, enjoy yourself!

r/Egypt • comment
2 points • wegwerfen_vereinigte

As many others pointed out, it doesn't matter what language you learn in University. Programming concepts and principles matter. The particular language you are taught doesn't matter much.

I would even go further and advise you to actually avoid learning in summer the language taught at your Uni. It is not a race and you don't need a head start. You might actually get bored if you know the syntax of the language already and miss on the key principles that the lecturer wants to convey. Instead I recommend that you learn a language or more that would not be taught at your Uni at all.

I highly highly recommend Coursera's Programming Languages courses by Dan Grossman. You'll learn programming concepts that you will probably never learn in the University yet will make you a much better programmer. These concepts are from less-known languages but are making their way into mainstream languages. For example functional programming principles are all the rage these days and appearing in popular languages like Python, Javascript, C# and more.

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/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/learnprogramming • comment
1 points • CodeCamping

I didn't see a clear free option.

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/ProgrammingLanguages • comment
1 points • knoam

The well regarded programming languages course by Dan Grossman at UW chooses * Standard ML to represent statically typed functional languages, * Racket for dynamic functional Lisps, and * Ruby for dynamically typed OO. The course kind of assumes you know Java or C++ to cover statically typed OO. You can probably look up the rationale he used. I think it gives pretty good coverage of the breadth of concepts.

I suspect most resources on Standard ML will be in the form of college courses, so if you're going self taught then Haskell, Ocaml, Scala or F# will have more resources since they're used more in the real world.

Clojure is a Lisp that's more used in the real world. Scheme + SICP is a good alternative.

SmallTalk is the iconic "really" OOP language. I think Ruby was chosen as a more pragmatic choice inspired by SmallTalk.

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/csMajors • comment
1 points • hg2107

You should really learn a functional language like SML for recursion to just.... click! I took the course Programming Langauges (PART A) on coursera (its great, and free too!), just the first two weeks made me understand recursion, really understand what it is, at another level. Try it, Im sure you`re gonna like it.

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/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/learnpython • comment
2 points • xtiansimon

First, I'm not a computer scientist and do not have a degree in computer science. I'm self-taught. Discount my opinions as you see fit.

Second, Steven Wolfram is a controversial figure, so again YMMV. Wolfram talks about the Principle of Computational Equivalence and I like to think of this when I was choosing to learn Python over the variety of other languages out there. In a nutshell the idea is a programming language which reaches a certain level of complexity is essentially equivalent to all other languages in so far as they can all accomplish the same tasks. Then, the devil is in the details: How easy is it to write? How developed is the ecosystem of supporting packages? How big is the user community? How supportive is the user community? What is the learning curve? How suited is the language for the task you wish to accomplish? Which is to say, as others here have noted, it depends...

Third, if you're not compelled by school, work, or your friends to choose one language over another, then by all means you should try several. On Coursera Professor Dan Grossman of the University of Washington has an excellent course to do just that, Programming Languages. In the course he explains basic computing principles while comparing three languages: SML, Racket, and RUBY. If this class does nothing else, it will open your eyes to the Principle of Computational Equivalence I mentioned above.

Finally, community is essential. If you're completely new then you have quite an adventure ahead of you. It's so much easier when you meet awesome, excellent and helpful people on your journey.

Good luck

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/nus • comment
2 points • chuabingquan

For introductory functional programming as taught in CS1101S, the following two MOOCs (which you can audit for free) would cover the same syllabus (with some additional concepts but lesser practice as compared to CS1101S):

  1. Programming Languages, Part A
  2. Programming Languages, Part B

The two courses are really well taught and emphasise greatly on designing good abstractions and communicating computational process through clear and concise code. As such, I think it conveys the ideas from CS1101S really well while complementing CS2030S by training you to be more thoughtful about the way you reason about and design your abstractions.

While the language taught in Part A is mainly used in formal verification and compiler related use cases, you can easily segue to something like OCaml which is a lot more general purpose. If you want to dive deeper into FP or topics tangent to FP, you might want to look at Haskell (it also further generalises the idea of a functor and monad that you picked up in CS2030).

With respect to CS2100, I think it's fine for you to take it right away; as far as the programming aspect is concerned, you'll be dealing with trivial C or assembly programs. CS2100 is mostly hard work and due diligence; pay attention to lectures and do all your tutorials and practices conscientiously. Be well prepared for the exams too (especially if it's still online) with tools and programs to optimise on the time spent, the paper is generally not completable (that's the sentiment for my batch if I'm not wrong).

Hope it helps and all the best for school!

r/haskellquestions • comment
1 points • crlsh

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

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/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/ocaml • comment
1 points • gbikal

Although not ocaml per se, if you like to get a feel of functional programming, a good free course is . It uses the SML programming language - a predecessor to OCaml.

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/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
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/dataengineering • comment
1 points • dream-fiesty

I'd highly recommend using courses instead of books. You want to be writing a lot of code and preferably getting some feedback on it, not just reading. Some suggestions (in recommended order of progression):

r/learnprogramming • comment
1 points • cristianobaptista

Definitely possible. Going to highjack my own comment from another thread:

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

Before you start trying to get a job 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.

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:

r/cryptography • comment
1 points • ZeoChill

No worries, young one. Have an awesome weekend.😉

In case Haskell is a bit too solid to chew the first time around, you can begin with Scheme or Racket to get into FP.

It should be noted that while Functional Programming (FP) makes applying cryptography or thinking about cryptography problems relatively much easier...

Writing the primitives like implementing AES for example is better done in a low-level language like C or even assembly.

Your Cryptographic work can end up preventing things like this:

From your questions, I surmised that your preference is not thinking through the beautifully deep, abstract, and seemingly esoteric aspects of Mathematical Cryptography, but doing cool, awesome, practical stuff with it.

Both are equally important since one gives birth to the other, but you can choose to devote yourself to one or the other or both. So to recap, on your journey to mastery of the application of Cryptography, remember to:

  • Enjoy yourself
  • Learn Functional Programming
  • Learn C, Assembler and/or Cryptol, etc.

Last but not least.

^(Ps. I am a Trekkie 😉)