Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

The latter. In my experience, the fundamentals that this list covers are 'the hard parts' in terms of a certain kind of understanding and sort of intellectual challenge: most things more 'applied' beyond this point are taught poorly if at all in CS, and learned more readily in the 'real world.'



I don't know, at Northwestern you can't pass the Intro to Networking class without writing TCP, software implementations of link state and vector routing, and sockets implementation.

Those are just the project sections, there are of course formal exams for the other fundamentals of networking.


Why? That sounds like a complete waste of time to me.

PS: I have a CS degree and I have written a fair amount of low level networking code, but I have no idea how that helps someone understand networking on either a practical or theoretical level. But, if you feel it was in anyway useful I am all ears.


If you can implement it yourself, you understand it at a much deeper level than if you just read about it. This is why CS students still implement their own basic data structures (linked lists, hash tables, trees) in the freshmen and sophomore level classes.


In CS how something behaves is far more important than how it's built.

For example one of the most surprising things to me was the fact that all programs built on top of TCP/IP still need their own messaging format because a packet can be split in transport. The header information says almost nothing about the original message sent, just enough information to send a reply up the chain and rebuild the message.

As to linked lists, the speed that fragment virtual/physical memory is in no way obvious from their source code. Build one in C vs Java and they behave vary differently even if the code looks similar.

PS: I really prefer CS projects that require some thought. Quickly sort this 50GB file requires a different mindset than simply, build a linked list library. IMO, build a linked list library is really a lesson in using pointers and tells you vary little about data structures.


I don't disagree with anything you said, but most people need the "implement this data structure" project first so they can understand what they're doing. Then you can give them a more open-ended project.


Well, I did, but I helped to write a kernel networking stack. Not really common development. Still, I think it's a fundamental thing everyone should understand. Most people never really have a use for writing a kernel memory allocator but it's still important knowledge to have (especially in systems development).




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: