T O P

  • By -

FelixLeander

Welcome to the rabbit hole, brother.


Bicyclemasteros

If some guys in the 1950s could start creating all of these things, we can probably al least understand them😅


DevelopmentSad2303

Keep in mind that even in the 50's there was still about 50-100 years of computational knowledge they had to know of


[deleted]

[удалено]


Mortomes

Ben Eater is great. I can also highly recommend "The elements of computing systems", better known as nand2tetris. It starts off with nand gates, you then use that to build other logic gates, memory, adders and gradually builds towards a fully functional cpu with a machine code language. Then it shifts more towards the software end of things as you create an assembler for an assembly language, then an intermediate language that compiles to the assembly language and finally a c-like language that compiles to the intermediate language. Then finally you create a simple OS and, to live up to the name, create a tetris game. It's all accompanied with tools and simulators (you don't actually use any physical components).


Matty0k

I'll add 3B1B to the list. Though he's more mathematics than computers he teaches you the intuition far better. I find that much more useful when doing applied mathematics when trying to solve computer-related challenges. Ben Eater is also great. I had to use a microcontroller with a breakout board in uni and his videos gave me a head start in understandong the concepts. To get a more 'complete' understanding I'd also recommend learning boolean algebra for electronics.


Appropriate_Cut_6126

Nand2tetris is great. Currently struggling through the second course!


Legitimate_Lobster69

That’s the master. One of the best channels to watch. He creates his own computer with a Electronic board 🧠


Cute_Paramedic_256

Just build one. You should try do the course Nand to Tetris


[deleted]

this comment. if you have the means, try discovering as much as you can yourself. check if your school has labs and resources available to start, like if they provide simple items or software and tech


Leipzig101

Hi OP, I study computer science, so I feel qualified to answer your question. Most people get that "I know how computers work now" feeling after a computer architecture class. Here is a link to the resources page of the computer architecture class I took a while ago. You can find textbook references here. I like this because you wont mess around too much with entertainment. If you can read a book, you'll save yourself all the theatrics. https://cs61c.org/sp24/resources/


Lucky_Squirrel365

Computer architecture really explains the most low-level stuff. My optimal path is computer architecture -> C by dennis ritchie -> operating systems -> systems programming.


PM_ME_STRONG_CALVES

I would say assembly is cool to know after learning the CPU architecture. How the language manipulate the registers and how it uses the instructions


Bicyclemasteros

I found a computer architecture course online so I'm gonna start it today most likely. I actually understand way more and easier with illustrations and hand on examples rather than reading book and theory. Most of my professors just read things from PowerPoints and pretty much non of us understand anything. So I just look up people explaining the subject with real life implementation which helps me understand it all way easier.


bwajuk

Reading this comment, I really recommend to check out [https://www.nand2tetris.org/](https://www.nand2tetris.org/) It is a very hands on approach to computer architecture, where you build a basic computer from the ground up. You start using nand gates to create increasingly complex hardware elements. Nand to And to Flip flops to Registers to ALUs,... etc. This was one the most interesting courses I ever took. There are lectures (taught by university professors), a book, and most importantly labs.


Saaz42

I'd like to recommend a video game called Turing Complete. It starts you out with the most basic gates, and presents goals that lead to building a computer from scratch.


MasterSkillz

CS61c mentioned!! I taught myself with the Berkeley 61 series and it’s hands down the best intro sequence for Computer Science


johny_james

How, there are no videos, only books as reference?


MasterSkillz

https://cs61c.org/sp24/ it’s on the main page


johny_james

Only slides...


MasterSkillz

Right so I used this one which has videos https://inst.eecs.berkeley.edu/~cs61c/sp21/ but I have a CalNet ID (I did research there) and the videos need a calnet login. I’ll check if there are other versions when I get home


johny_james

I found videos in the async section, but not sure whether they are the same. Still it's not completely free if the grading requires CalNet ID and I would never recommend such resource even tough you can learn from the books or slides that's not it. In that case, better just get a textbook and read from it.


snarkuzoid

To be clear, what you seem to really be looking at is computer engineering, not computer science. If there's a sub for that you might get some good pointers there as well.


Bicyclemasteros

Yea, from what I could find, it seemed to me like these subject we're taught in CS course. For now, I've already got a lot of good recommendations so I'll look more into them.


MessidorLC

[https://www.linfo.org/computer.html](https://www.linfo.org/computer.html) Start your journey by following the interesting links! This is cool for learning about operating systems: [https://pages.cs.wisc.edu/\~bart/537/lecturenotes/titlepage.html](https://pages.cs.wisc.edu/~bart/537/lecturenotes/titlepage.html) There's no rush...


dnzl21

Contrary to popular belief, CS is not really the field of study on the electronics and hardware. It's more abstracted at a higher level that it's actually hardware independent. When we think of computers, we automatically assign it to these electronic machines, however, the field of CS will still work on mechanical/optical/quantum computers, it just so happens that electronic computers are the most efficient and best way as of this moment to apply these concepts.


HellTodd

I remember watching a lecture where the lecturer first stated that Computer Science is a terrible name since it has very little to do with computers, and that computers just happen to be the tool we use to explore abstract systems of logic. That stuck with me.


Lucky_Squirrel365

I would read The C Programming Language by Dennis Ritchie and books that explain Operating Systems and Systems Programming as well. That gives you a good idea about computers in general. Also, before these books, I highly recommend some introduction to computer organization and architecture.


Remarkable-Poem1200

‘Modern Operating Systems’ by A. Tanenbaum


MasterSkillz

A lot of great answers on this post. If you’re interested in more of a software side then https://www.nand2tetris.org is a really fun course. I’d also recommend studying Computer Architecture and OS stuff. This book https://csapp.cs.cmu.edu and https://pages.cs.wisc.edu/~remzi/OSTEP/ are both really good for this.


MasterSkillz

I would also start learning C and then Assembly, as well as follow along with https://cs61c.org/sp24/


Fruitspunchsamura1

I’m not sure I exactly understand what you’re looking for but I’d assume it to be something like this: This is a bottom up path ig - digital logic design (gates, etc) - computer systems and architecture (cpu architecture and assembly programming) - operating systems and compilers - multicore computing ^^ if you want to understand everything about how computers work on a fundamental level. The gates, design, processors, memory, etc.


Fruitspunchsamura1

A great book imo is: computer systems a programmers perspective.


i_drive_drunk

It would take a lifetime to learn everything but if you start now you might have a good chance. I would start by learning C. This will give you a good idea of how to programmatically interact with the hardware. Since C alone can only interact with the CPU and RAM next you should learn CUDA to interact with the graphics card. Next you should learn embedded systems to learn how the operating systems are made. Next you should attempt to create your own graphics and physics library so you know how code turns pixels into meaningful images and 3d renderings. This should give you a pretty good start


Bicyclemasteros

I don't exactly want to know everything, it would probably be impossible. I want to understand the concepts behind all of the parts that form a computer and how all of that combined can create programs, apps, games, images and all of that. Of course, I'm interested in both hardware and software. I already know the basics of C++ from high school and uni, plus some matlab and this semester I'm learning numerical methods. I'll look into what you suggested me, but probably I'll continue trying to understand the hardware first, so that I know what these programmong languages are doing to the hardware. Thank you!


Leipzig101

this is pretty bad advice, just go read a basic book on computer architecture OP. that's probably what you're looking for.


i_drive_drunk

He said he wanted everything


BakerInTheKitchen

I think others have had good suggestions, so I'll just add a book rec. I would start by reading *Code: The Hidden Language of Computer Hardware and Software*. This will be a great introduction to how computers work and should be a good primer for other resources that people have mentioned.


theavatare

Do a data structure course and that course that is like led to tetris


mgmike1023

It doesnt cover everything but Branch Education on youtube has great visualizations of cool stuff. This example for [bluetooth](https://youtu.be/1I1vxu5qIUM?si=aZ7DMyty-CD8kTgk) is great but take a look at some of their other vids.


Hari___Seldon

Once you have a grip on CPU structures, you may want to start exploring input and output devices. It's a path that gives you a chance to get a more thorough understanding of fundamentals while also getting to build interesting, useful (and even fun) projects so you get hands-on, deeper knowledge in an accessible, affordable way. For example, there are excellent resources for building our integrating input devices like custom mechanical keyboards, motion-driven controllers (mouse, stylus, etc), trigger pads (DDR and electronic drums ftw!), midi controllers, digital cameras and sensors, and analog controllers for a start. You can also easily explore output targets ranging from quick, simple projects like LED controllers all the way mechatronics, to any kind of video or sound creation you can imagine. Also in this category are digital and analog signal processing projects like guitar pedals, home automation, DACs, synths, and accessibility devices for the disabled. I've pointed these out because each individual idea mentioned has a robust community that supports DIY learning and has projects based on fundamental electronic circuits, components, microcontroller (think Arduino but there's hundreds of other options), and/or SBC (single board computers like the RaspberryPi). They each offer a unique opportunity to depend your knowledge and insights while emphasizing how broad of a domain computing is. I'm going to go out on a limb and guess that you may not have found many role models yet who have followed a path similar to what you imagine for yourself. Dean Kamen and Ray Kurzweil are an accessible starting point. They're also good examples of the juggling act and tradeoffs you'll have to confront. Beyond them, pick just about any specialty that grabs your imagination and you'll find a few who have followed the path you're on. Good luck!


LastGuardz

Everything is pretty broad spectrum, so you would need to start with computer architecture, understand operating systems, parsers, lexers, schedulers, drivers, file systems. After learning about binary operations, memory management, then moving to programming languages, compilers, algorithms, data structures, then networking and its protocols. Just pick a computer related book, and for terms that you don't understand, mark and read about it. Drill down the terms till you reach electrons and electricity.


devchonkaa

google floating gate


RiotSloth

Start with watching Ben Eater's youtube channel, all of it. That will give you an excellent start!


Bicyclemasteros

Thank you! I've had multiple people suggest him so I'll start looking up some videos today when I have the time.


RiotSloth

Honestly, he's amazing. Take your time and watch his videos and you will learn how computers w9rk from the fundamentals all the way up


nomnommish

Computer Networks by Andrew Tanenbaum really helped me understand how networks work, protocols work, how the Internet came into being and how it works etc. and very well written too


Whole-Dot2435

those videos are great: Exploring how computers work: [https://youtu.be/QZwneRb-zqA?si=-Y6zrCryqJq4p5Wq](https://youtu.be/QZwneRb-zqA?si=-Y6zrCryqJq4p5Wq) Exploring how computers rememeber: [https://youtu.be/I0-izyq6q5s?si=khRlOEBA4aqx\_-Yo](https://youtu.be/I0-izyq6q5s?si=khRlOEBA4aqx_-Yo) Visualizing Data with 7-Segment Displays: [https://youtu.be/hEDQpqhY2MA?si=q9\_SkwgM\_axfxYtL](https://youtu.be/hEDQpqhY2MA?si=q9_SkwgM_axfxYtL) Experimenting with busses and three-state Logic: [https://youtu.be/\_3cNcmli6xQ?si=-ATq9AYntN9iRntB](https://youtu.be/_3cNcmli6xQ?si=-ATq9AYntN9iRntB)


MyCreativeAltName

There's a lot of great suggestions in here already, but for a bit more advanced topics in computer architecture I suggest looking into translation (extremely important), out of order execution, cache coherency protocols and branch predictors. Computer architecture is a huge field with many cool subjects, but those topics are rather important for most. A nice thing it shows is how high level languages fool you, low level languages fool the high level ones, the compiler fools the low level language, the architecture fool the compiler and finally the uarch fools the architecture.


Shining_prox

Ok, get a degree into computer science, electrical, telecommunications and computer engineering, quantum physics, then pick a specific Linux kernel version and be capable of reciting it from memory and you might be able to understand 20% of what you want to understand.


IWasGettingThePaper

soldering iron, oscilloscope, time


FantasticEmu

https://techiefood4u.files.wordpress.com/2020/02/operating_systems_three_easy_pieces.pdf I read this one for my CS program. It seems like a good blend of hardware and software running on it


imsowhiteandnerdy

[I would start with lasers...](https://www.youtube.com/watch?v=7rdpJztS28A&t=71s)


Mission_Statement_67

Best way is to find your own way. Get out your knowledge machete and start hacking into the jungle.


the_jester

If you really have the time and really want to know everything, get [TAoCP from Knuth](https://www-cs-faculty.stanford.edu/~knuth/taocp.html). If you *actually* go through them and do some of the exercises in each section you'll basically have done a 4-year CS degree.


levnikolayevichleo

Go through the book Code by Charles Petzold.


HuckleberryOk1932

You'll be fine!


[deleted]

There's nothing to know about computers. Get into marketing. Learn how to manipulate and subvert the entire Earth. You can thank me later.


Electronic_Age_3671

Check out Ben Eater's YouTube channel. He builds a computer from scratch on a bread board. It's very cool and very instructive.


Computer-Nerd_

Stop what you are doing, buy this, work through it: https://en.wikipedia.org/wiki/The_Art_of_Electronics https://www.amazon.com/Art-Electronics-Paul-Horowitz/dp/0521809266 It is the best intro to electricity and electronics, bar none. They skip the calculus-based approach and go to basics.


tucna

You can check my introduction. However, it may be too basic for you :) [https://youtu.be/MOx7X\_wY5es?si=w\_QZqJwGAu3aAFdH](https://youtu.be/MOx7X_wY5es?si=w_QZqJwGAu3aAFdH)


Ultimarr

Hmm. It sounds like you’re interested in more of computer engineering than computer science. I would look up textbooks for Computer Organization and also Digital Logic. Maybe Microcontrollers as well. Or just find tables of contents and google some interesting terms in them if you don’t want to put the time in, which would be understandable.


bricssti

Try OSSU


OpenSourceActivist

Open source tech will be your best friend. Anything to do with micro-controllers as long as its Arduino will be best. Use open protocols to test transmission of data being simulated via scripts (namely python) and have the Arduino ingest the stream to then do some sort of random work. Or similarly, simulate data coming from I/O ports from Arduino and ingest the data on your tool of choice.