If you’ve never programmed before I suggest you read Think Python, 2d edition. Its author was kind enough to provide it on his website free of charge. Though you can also buy a physical copy of it if you’d like. There’s also a Java version available as well though I recommend you choose the Python version. If you’ve never used a Unix(-like) system before you should read this free book called The Linux Command Line by William Shotts. It teaches you how to use the Bash shell which is used on all major Unix systems (MacOS, Linux etc.) and as a programmer you will most likely be using the Bash shell a lot so learn it. A shell is a computer program that allows you to interact with your operating system by typing in commands. You don’t even even need to have Linux installed to read this book. If you are using MacOS then you already are using Unix so you don’t have to install anything else, just open up your Terminal but make sure that you are using Bash (Not sure if you are using Bash? Read this.). If you are on Windows you can use Cygwin. Reactionary Bash Tutorial which was written and linked in the comments by fschmidt also seems nice. If your knowledge of mathematics is lacking and/or you’ve simply forgotten a lot of stuff I suggest you read Precalculus: Mathematics for Calculus by Lothar Redlin, Saleem Watson and James Stewart. Then I suggest you read Digital Design and Computer Architecture David Harris and Sarah L. Harris. There’s multiple editions of it available. I suggest you choose the RISC-V version since it’s the most recent. This book will teach you how computers really work and since you will be working with computers for a living it makes sense to also learn how they work. The only prerequisite for it is knowledge of high-school mathematics and basics of DC circuits. If your knowledge of DC circuits is lacking check out this free course on Khan academy. Learning assembly language and C programming will also help you with understanding how software and hardware work together. For that I suggest Learn to Program with Assembly by Jonathan Bartlett and Beginning C: From Beginner to Pro by German Gonzalez-Morris and Ivor Horton. Afterwards you should learn about discrete mathematics since this field is used all-throughout the field of computer science. I suggest Mathematics: A Discrete Introduction by Edward A. Scheinerman. Then you should read Introduction to Algorithms, fourth edition by by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein. This is arguably the most important book on this list. Without the knowledge of algorithms you are nothing as a programmer so make sure you learn the basics well. Next up on the list is Computer Networking: A Top-Down Approach by James Kurose and Keith Ross. As a programmer most of the programs you will be making will interact with the internet some way or another so the knowledge of computer networks is important. Modern Operating Systems by Andrew Tanenbaum is also another important read if you want to understand how operating systems work under the hood. It will also help you understand how your computer programs interact with whatever OS you run them on. And finally we come to the topic of programming languages. If you want to know how programming languages work or you even want to make your own one you should read Introduction To The Theory Of Computation by Sipser Then read Compilers: Principles, Techniques, and Tools by Alfred Aho, Jeffrey Ullman, Ravi Sethi and Monica Lam. And that’s all I wanted to say! If you’ve got any suggestions or questions please let me know!

  • harsh3466
    link
    fedilink
    arrow-up
    1
    ·
    6 months ago

    This is great. Thank you for sharing. Just a small correction. macOS default shell is zsh.

    • javajuggler@kbin.socialOP
      link
      fedilink
      arrow-up
      1
      ·
      6 months ago

      thanks for the correction. by the way i would like to invite you to join our community, register and contribute. thanks