1,685 karma · joined May 1, 2022
These courses [0] [1] are on EdX and are taught by UBC Professor Gregor Kiczales. The explanations are so lucid it made recursion click for me. You can audit these courses without paying a single dime. They are based on the book How to Design Programs [2] which has much more stuff than the courses.This book is used in UBC, UWaterloo, NorthEastern and many other places.
Along the same lines there is another book for beginners called A Data-Centric Introduction to Computing [3]. It is used in Brown for their introductory courses.
[0] https://www.edx.org/course/how-to-code-simple-data
How to Code: Complex Data [1]
These two part course rearranged my brain about what really programming is about. It is about working with data and the way the data is arranged determines how most of the program/functionality (pun intended) is written.
Programming is not a series of instructions to be executed by the computer. That was when assembly language programming was the main stay of programming computers. Not now.
Introduction to Algorithms: A Creative Approach by Udi Manber
I hope the authors extend this someday to imperative programming too and compare and contrast.
Also there is a youtube series by Andrej Karpathy that goes into much more detail and builds a library from scratch.
I find many instructors in upper level courses do this. But for introductory courses, most materials are locked in. I don't understand why? Only MIT seems to do this consistently (they have huge amounts of money, it seems).
Another such course is : https://cs3110.github.io/textbook/cover.html. Still upper level.
A set of lower level core courses like intro to programming, intro to low level programming, discrete math, algorithm design, etc. will totally change the game. More and more people would be interested in upper level courses then and we would get more researchers and practitioners in the field to march forward.
Functions are actions/verbs.
The only positive point I see in this book is that it is less formal (or set-theoritic as the authors call it) than How to Design Programs and uses a typed language Pyret and an online IDE.
Now moving on from here, do you have any resource recommendation where I can dive deeper into machine learning and deep learning theory? And also any resources to become a much much better programmer?
I am currently working in as an assistant in a research lab. My coding skills are not that great.