Computer Networks: Top-down vs Bottom-up
- iocoder
- Member
- Posts: 208
- Joined: Sun Oct 18, 2009 5:47 pm
- Libera.chat IRC: iocoder
- Location: Alexandria, Egypt | Ottawa, Canada
- Contact:
Computer Networks: Top-down vs Bottom-up
If have a networks course to teach/study this semester, What approach would you like more: Top-down approach, or bottom-up approach? And why? And what are the areas/layers you would enjoy the most?
-
- Member
- Posts: 1146
- Joined: Sat Mar 01, 2014 2:59 pm
Re: Computer Networks: Top-down vs Bottom-up
I'm not sure what you mean by top-down and bottom-up, but the way that my teacher at college did it is certainly wrong. Don't force your students to learn the OSI model when they can look that up online; give them a solid understanding of the principles, so that they can apply them to any situation and understand the concepts, even if they need to look things up (which is not a bad thing, really).
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Re: Computer Networks: Top-down vs Bottom-up
I find that, with any new subject, going from the general to the specific is the easiest way to understand something. So I'd go for bottom up.
-
- Member
- Posts: 1146
- Joined: Sat Mar 01, 2014 2:59 pm
Re: Computer Networks: Top-down vs Bottom-up
Yes that is a good idea. Just wasn't sure what "top-down" and "bottom-up" meant, but yes starting general and then giving specific examples (as long as it's clear that those aren't the only examples) is a good idea.iansjack wrote:I find that, with any new subject, going from the general to the specific is the easiest way to understand something. So I'd go for bottom up.
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Re: Computer Networks: Top-down vs Bottom-up
Hi,
I don't think it makes any sense to attempt "network of networks" (IP, internet routing, TCP congestion, bridges, etc) until a student understands networks.
Cheers,
Brendan
I'd start with "point to point link between 2 computers", then introduce "star topology" and "bus". Next would be routing in LANs; then maybe a scenic detour through wired ethernet to introduce things like noise, error handling, packet loss, collisions, queuing theory, etc.iocoder wrote:If have a networks course to teach/study this semester, What approach would you like more: Top-down approach, or bottom-up approach? And why? And what are the areas/layers you would enjoy the most?
I don't think it makes any sense to attempt "network of networks" (IP, internet routing, TCP congestion, bridges, etc) until a student understands networks.
Cheers,
Brendan
For all things; perfection is, and will always remain, impossible to achieve in practice. However; by striving for perfection we create things that are as perfect as practically possible. Let the pursuit of perfection be our guide.
-
- Member
- Posts: 1146
- Joined: Sat Mar 01, 2014 2:59 pm
Re: Computer Networks: Top-down vs Bottom-up
True, although my teacher at college left out these things right until the end and the entire class was confused, because they were trying to relate networking to the internet and couldn't see the link. For example, they didn't understand how it was possible to use "public" IP addresses (outside the 192.168.x.x range and other similar ranges) on a local network, and when they went to set up a WAN (in a simulated environment) they thought it was the same as an internet gateway. Somehow I think that it's difficult for students to grasp the concept of a network that isn't connected to the internet unless they already know a lot about how networks work.Brendan wrote:I don't think it makes any sense to attempt "network of networks" (IP, internet routing, TCP congestion, bridges, etc) until a student understands networks.
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
- Combuster
- Member
- Posts: 9301
- Joined: Wed Oct 18, 2006 3:45 am
- Libera.chat IRC: [com]buster
- Location: On the balcony, where I can actually keep 1½m distance
- Contact:
Re: Computer Networks: Top-down vs Bottom-up
Starting from the big picture is a good idea - many people don't need to go beyond HTTP or even TCP and learn how its foundations work. Of course, in OS development that is an exception but you won't get away without knowing the basics or your VM will be too smart for you and not route your packets.iansjack wrote:I find that, with any new subject, going from the general to the specific is the easiest way to understand something. So I'd go for bottom up.
However my university book "Computer networking: a top down approach" says you mixed up your vertical directions
Re: Computer Networks: Top-down vs Bottom-up
I think you messed up in understanding my meaning of general and specific. As far as networking is concerned general is just two devices communicating. We then get more specific by specifying wires, then ethernet, then TCP/IP, then we can start to worry about HTTP and web browsers, then a particular browser.Combuster wrote:Starting from the big picture is a good idea - many people don't need to go beyond HTTP or even TCP and learn how its foundations work. Of course, in OS development that is an exception but you won't get away without knowing the basics or your VM will be too smart for you and not route your packets.iansjack wrote:I find that, with any new subject, going from the general to the specific is the easiest way to understand something. So I'd go for bottom up.
However my university book "Computer networking: a top down approach" says you mixed up your vertical directions
But that is getting very specific. So general->specific is a bottom-up approach.
-
- Member
- Posts: 1146
- Joined: Sat Mar 01, 2014 2:59 pm
Re: Computer Networks: Top-down vs Bottom-up
I was interpreting general and specific to mean generalised and exemplified. So general would be "this is the principle of what a computer network is and how it operates" or "this is what a protocol is and how it fits into the overall structure of a computer network"; specific would be "this is an ethernet network and how it operates" or "this is the TCP protocol and how it fits into an ethernet network".
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
Syntax checkup:
Wrong: OS's, IRQ's, zero'ing
Right: OSes, IRQs, zeroing
-
- Member
- Posts: 396
- Joined: Wed Nov 18, 2015 3:04 pm
- Location: San Jose San Francisco Bay Area
- Contact:
Re: Computer Networks: Top-down vs Bottom-up
first time, i heard about top to bottom and bottom up was one of my teachers while ago.
imo, new graduates tend to work bottom up, at least that is what i did: when the during debugging, i tended to dig deeper into the code without regards to whether it is an efficient way to solve the problem. My rational is being new to the industry, dig up as much code as i can to learn how it is written, get understanding of its architecture etc., I think this is bottom up approach.
Once i got more and more experience, i stopped doing this and tended to bisecting the issues, isolating, use divide-and-conquer, start from easiest approach to save time and effort. It actually work better when time and resource are tight. I think this is more like top to bottom approach.
I am not sure how i described here exactly describes the top to bottom or bottom up approach though.
While googling some time ago, one academic paper i found defined top to bottom approach as replacing the certain functionality of the SUT with known good working function and see if the problem remains or not.
i'd say for students, start with bottom up approach first.
imo, new graduates tend to work bottom up, at least that is what i did: when the during debugging, i tended to dig deeper into the code without regards to whether it is an efficient way to solve the problem. My rational is being new to the industry, dig up as much code as i can to learn how it is written, get understanding of its architecture etc., I think this is bottom up approach.
Once i got more and more experience, i stopped doing this and tended to bisecting the issues, isolating, use divide-and-conquer, start from easiest approach to save time and effort. It actually work better when time and resource are tight. I think this is more like top to bottom approach.
I am not sure how i described here exactly describes the top to bottom or bottom up approach though.
While googling some time ago, one academic paper i found defined top to bottom approach as replacing the certain functionality of the SUT with known good working function and see if the problem remains or not.
i'd say for students, start with bottom up approach first.
key takeaway after spending yrs on sw industry: big issue small because everyone jumps on it and fixes it. small issue is big since everyone ignores and it causes catastrophy later. #devilisinthedetails
- Schol-R-LEA
- Member
- Posts: 1925
- Joined: Fri Oct 27, 2006 9:42 am
- Location: Athens, GA, USA
Re: Computer Networks: Top-down vs Bottom-up
I think you'll find that, just like with large programming projects, you will need to do both in phases, and meet in the middle.
I would start by asking yourself the following questions (and please pass the answers to us as well, as we cannot give good advice without that):
I would start by asking yourself the following questions (and please pass the answers to us as well, as we cannot give good advice without that):
- What kind of student is this for: undergraduate computer science/informatics (which is what expect it is), undergrad MIS, undergrad engineering, graduate studies in any of the above, general non-technical university students, secondary technical school, general secondary school, non-degree adult education, certification prep, corporate management, professional technical support, professional programming, professional system administration?
- Are you going to cover local-area networking, wide-area networking (i.e., a single network with dispersed sub-networks), internetworking, or some combination of those?
- What facets do you intend to discuss: use of network services and applications (in which case a general overview may not even be desirable), network topology, configuration, installation, administration, programming? How much emphasis do you mean to put on each?
- What do you think most of the students will want to get out of the course? What do you want them to get out of the course?
Rev. First Speaker Schol-R-LEA;2 LCF ELF JAM POEE KoR KCO PPWMTF
Ordo OS Project
Lisp programmers tend to seem very odd to outsiders, just like anyone else who has had a religious experience they can't quite explain to others.
Ordo OS Project
Lisp programmers tend to seem very odd to outsiders, just like anyone else who has had a religious experience they can't quite explain to others.
-
- Posts: 16
- Joined: Tue Jun 28, 2016 12:16 am
Re: Computer Networks: Top-down vs Bottom-up
Top down :
Take the whole problem and split it into two or more parts.
Find solution to these parts.
If these parts turn out to be too big to be solved as a whole, split them further and find find solutions to those sub-parts.
Merge solutions according to the sub-problem hierarchy thus created after all parts have been successfully solved.
Bottom up :
Breaking the problem into smallest possible(and practical) parts.
Finding solutions to these small sub-problems.
Merging the solutions you get iteratively(again and again) till you have merged all of them to get the final solution to the "big" problem.
The main difference in approach is splitting versus merging. You either start big and split "down" as required or start with the smallest and merge your way "up" to the final solution.
Take the whole problem and split it into two or more parts.
Find solution to these parts.
If these parts turn out to be too big to be solved as a whole, split them further and find find solutions to those sub-parts.
Merge solutions according to the sub-problem hierarchy thus created after all parts have been successfully solved.
Bottom up :
Breaking the problem into smallest possible(and practical) parts.
Finding solutions to these small sub-problems.
Merging the solutions you get iteratively(again and again) till you have merged all of them to get the final solution to the "big" problem.
The main difference in approach is splitting versus merging. You either start big and split "down" as required or start with the smallest and merge your way "up" to the final solution.