ossu / computer-science

🎓 Path to a free self-taught education in Computer Science!
MIT License
169.91k stars 21.46k forks source link

Alternative to Introduction to Computer Networking on Langunita #520

Closed ceik closed 5 years ago

ceik commented 5 years ago

I started the course a little while ago and found it to be very tough to get through. There are zero assignments or practical exercises and the only feedback is via in-video questions, which are pretty basic. I ended up writing notes, so the stuff sticks a bit better, but this course essentially became my chore of the day, where I had to force myself to do at least one video a day. I stopped at the end of week 2.

I don't want to skip this topic however so I was looking for alternatives and only found the following two:

Has anyone done the second course I listed above or knows of any other alternatives?

joshmhanson commented 5 years ago

I am also interested to hear more about the second course mentioned above. If it provides more exercises and feedback while covering the same content as the Stanford course, it might be a viable replacement.

ceik commented 5 years ago

Ok, I just started some other courses, but will most likely give the second course mentioned above a try after finishing my current ones. Will leave feedback here in that case.

a1h05 commented 5 years ago

https://www.edx.org/course/computer-networks-internet-kironx-fhlcnx

The main disadvantage of current networking course is lack of programming assignments. We could supplement Lagunita course with url to assigments from Princeton University COS 461 https://www.cs.princeton.edu/courses/archive/spring18/cos461/ (or directly to github https://github.com/PrincetonUniversity/COS461-Public). (Have not tried them myself)

szaitseff commented 5 years ago

I've just completed the "Intro to CompNetworking" by Stanford on Lagunita this month. It was a rather comprehensive intro course with a steep learning curve in my case. I don't know a good alternative as it's free, it has lots of quizzes to test understanding (and not all of them are 'basic'). The mid-term and final exams are challenging. The course is already rather time consuming, and I think adding programming assignment would make it over-tiresome. Just do it through! The Kurose and Ross textbook with free Wireshark labs is a good complementary reference for those who wants more practice.

fractalbach commented 5 years ago

Tldr:


In addition to the Wireshark labs from the Kurose textbook, there is also a Socket Programming exercise in python (Kurose edition 6, chapter 2.7)

I found that this course was extremely beneficial. For me, learning how to program clients/servers/etc. in a "practical way" was much easier after taking the course.

If there's another course that works well for a lot of people, it should be added as an alternative.

But don't replace/remove this course of the list entirely. I found it highly valuable, educational, and worthwhile, and I'm sure there are others who will appreciate it as well.

On a side note...

For those who left the class earlier because they found it tedious, go back and watch some the videos from week 8 (security)

Those are great! (Especially the demos) =)

aryzach commented 5 years ago

I agree. I found this class both inefficient at teaching what it does (no homework), and that it covers kinda the wrong material. I think that at points it gets lost in the weeds. I think a class that took out the 'lost in the weeds' portion and substituted practical application demonstrations would be super helpful. Ex. tutorials/assignments with Wireshark and Mininet, and other net/sec tools. Something that combines an intro to networking ideas, with practical sys admin tools

kathgironpe commented 5 years ago

@ceik I'm done with CS 6250 at Georgia Tech. It's alright, but even on its own, insufficient. They link the Stanford course for those who want to understand fundamentals.

waciumawanjohi commented 5 years ago

It appears that most people are satisfied with the topics covered by the Stanford course and are interested in finding assignments that augment the material. As @kathgironpe points out, the largest online CS masters program recommends this course as a pre-req. I certainly found the lectures appropriate to prepare me for graduate work.

Some courses that we might expect to be high quality alternatives also use simple quizzes for assessments. See for example Google's intro to networking on Coursera. Cisco has courses with labs that require use of network tools. But my impression is that these courses are more professional development courses for network administrators rather than CS courses on network principles. (I welcome discussion on this)

I have seen 3 sets of Computer Network course assignments that we can assume are high quality (one recommend by @szaitseff, another by @a1h05)

Some notes on these:

To determine what work students need to undertake, we should look at the expectations for undergraduate computer science students. Our curriculum guidelines include the Curriculum Guidelines for Undergraduate Degree Programs in Computer Science from The Joint Task Force on Computing Curricula Association for Computing Machinery (ACM) IEEE Computer Society. Page 130 describes the Computer Networking learning expectations for undergrads.

One thing to note is how many of the networking topics students are meant to understand at a level of "Familiarity".

Familiarity: The student understands what a concept is or what it means. This level of mastery concerns a basic awareness of a concept as opposed to expecting real facility with its application. It provides an answer to the question “What do you know about this?”

By this standard, for most networking topics we can assume that quizzes in the place of labs are acceptable. There are 4 learning outcomes that go beyond familiarity. Below I match these goals with assignments available online.

Based on the above, I propose that we retain the Stanford Lagunita course as the lectures for Computer Networking. In addition, I propose we specify the 4 above assignments for students.

I will leave this issue open for 1 month for discussion of this proposal. Suggestions of alternative lecture series, alternative assignments, even alternative curricula guidelines are welcome and encouraged. Helpful recommendations will include in depth analysis of the strengths and weaknesses of the materials and/or of the fit of the material to the learning goals.

kathgironpe commented 5 years ago

I know a lot of you checking this repo are not graduate school students like myself, and that's even better because you're likely not doing this to get an A. Might as well give you some hints on what it feels like to go through it. It's a top 6 global CS University, and even with that fact, education is really just something you can only give to yourself. I am suggesting that I could have learned a lot more by creating my own curriculum. But I don't regret going through graduate school.

For those who feel insufficient in terms of skills because they're not doing any projects, I don't think you are missing a lot for that reason. You are missing more because there aren't a lot of papers linked to courses like Stanford's Introduction to Computer Networking.

Over 3 months, I have read over 37 Computer Network books, and more than 40 research papers on Computer Networks. It feels like a lot, but actually, it's NOT. What's worse: when it comes to the actual exam, it's my lack of CS fundamentals and formal education on Distributed Computing that made me scratch my head. I can't believe how seemingly simple some questions were to those with background, but I didn't know what they meant. I leaped from a top 200+ University to a top 6 in CS, and knew something like this could happen. I just get shocked about the terminology that I never encountered on the transcripts.

It must be fun to just create your own curriculum. What is a sufficient introduction to Computer Networking?

I would still list the Stanford Introduction to Computer Networking as a number one resource. And probably add:

CS 6250 at GT CMU's Computer Networks' Syllabus

For real world work, you definitely need a lot more than this and CompTIA courses. AWS certificate courses help.

If you're doing this for interview preparation, I can assure you that Computer Networking questions are common. You might not expect companies like AirBnB to ask you to convert an I.P range to CIDR but they do. If you hated these kind of questions in school, you might get them when you apply for work.

ooraini commented 5 years ago

14-740

Graduate level with lots of reading, it seems not too different from the Stanford course in terms of content.

waciumawanjohi commented 5 years ago

There is a pull request which addresses this issue. Accepting comments on the PR for the next week.

https://github.com/ossu/computer-science/pull/590