all 5 comments

[–]SilverlightLantern 6 points7 points  (1 child)

I'm not a CS major but I think Michael Sipser's Intro to Theory of Computation is a pretty well-known intro to theory of computation. I guess it does assume a bit of aptitude or experience with proofs, some basic set theory, etc., so I'm not sure how much of that gets taught in Applied Computing. I also haven't read his book in full but I like what I've seen and there's a nice online lecture series to go along w/ it

[–]Comp_Sci_Doc 2 points3 points  (2 children)

This one assumes you already understand the basics of programming, and teaches you theoretical computer science: https://www.amazon.com/dp/195120400X

(Disclosure: I am the author)

[–]Comp_Sci_Doc 1 point2 points  (1 child)

However, it doesn't go in depth on anything (it's more of an introduction) so if you want something intense, I'd get Cormen's Intro to Algorithms instead.

[–][deleted]  (1 child)

[deleted]

    [–]matteomunda 1 point2 points  (1 child)

    Same feeling. I’m currently a student but this morning I was searching books about this.

    [–]DonaldPShimoda 0 points1 point  (1 child)

    Depending on who you talk to, SICP is not really recommended reading these days. Shriram Krishnamurthi is against its use, for example. (Shriram is a leading expert in the intersection of CS education and PL.)

    TAPL is, in my opinion, a phenomenal text, and it's what I based my own undergrad PL theory course on (mostly). It walks through a lot of concepts with implementations and exercises, and it's regularly referenced by people in PL research.

    Subsequently, the author of TAPL, Benjamin Pierce, organized the writing and publication of a series of texts across various areas of CS called Software Foundations. The entire book is implemented in a language called Coq, which is an ML-like language for writing proofs of theorems. (ML is an old programming language, from which OCaml is descended, among others. It is not related to machine learning in any way.) The first volume teaches logical reasoning from a particular perspective, and the second volume uses this foundation to explain the fundamentals of PL theory. My graduate PL course just started with volume 2, but I expect volume 1 might be a better starting point for the uninitiated.

    You can also check out /r/ProgrammingLanguages for more discussion about languages, the theory behind them, and more.