It's definitely a good thing to understand how the lower levels of an abstracted system works. For example, read Joel Spolsky's explanation of "Shlemiel the painter's algorithm" problem: http://www.joelonsoftware.com/articles/fog0000000319.html
Perhaps a more applicable example in web applications is the use of things like Ruby on Rails ActiveRecord. If you had no idea how ActiveRecord worked, you might end up making zillions of database queries without even realizing it. I have a feeling this is part of the reason some people have trouble scaling Rails apps...
In the case of networking and web apps, at the very least it's a good idea to know things like the difference between TCP and UDP. You probably don't need to know routing protocols and that sort of thing though.
That said, I'm not sure which to recommend. I took some of both (2 networking courses, and basic logic was covered in discrete math and 2 AI courses I took... including the one I have a final for in 7 hours...) and I've found the networking ones to be much more applicable, but it's also good to know about logic as well.
Perhaps a more applicable example in web applications is the use of things like Ruby on Rails ActiveRecord. If you had no idea how ActiveRecord worked, you might end up making zillions of database queries without even realizing it. I have a feeling this is part of the reason some people have trouble scaling Rails apps...
In the case of networking and web apps, at the very least it's a good idea to know things like the difference between TCP and UDP. You probably don't need to know routing protocols and that sort of thing though.
That said, I'm not sure which to recommend. I took some of both (2 networking courses, and basic logic was covered in discrete math and 2 AI courses I took... including the one I have a final for in 7 hours...) and I've found the networking ones to be much more applicable, but it's also good to know about logic as well.