Course Review: Introduction to Computer Networking - Self Paced (Stanford)
- Url: https://lagunita.stanford.edu/courses/Engineering/Networking-SP/SelfPaced/about
- Author: Philip Levis and Nick McKeown, Stanford University
- Cost: FREE
- Time to complete: 8-10 weeks @10hr/week
- Prerequisites: At least a year or so of programming under your belt.
- Topics: Data Structures and Algorithms
- Programming Language: Java
- How grading works: There are a very small number of in-video quizzes that are multiple choice and not required. Then you have 5 programming assignments that are graded on correctness, memory usage, and time complexity. Your grade in the class is entirely derived from these 5 programming assignments. There are also some optional “interview questions” which are not graded.
- Note: This is part 1 of a 2 part algorithms series; part 2 can be found here: https://www.coursera.org/learn/algorithms-part2
I took this course to gain a better understanding of data structures and algorithms and also to learn some more about the Java language. In that regard, this class hit the nail on the head, and I would absolutely recommend this to anyone else looking to learn the same things.
In my opinion, the most valuable aspect of this course was Sedgewick’s attention to visually presenting each algorithm and data structure that he teaches. Every single lesson has an associated drawing and an animation which really shows you how the algorithms process data. As a visual learner, this is absolutely indispensable to me.
I came into this course not knowing much Java - there was a bit of a learning curve at the beginning of this course for me which I attribute to this lack of Java knowledge, but it was hardly insurmountable. For that reason I recommend that anyone without any prior programming experience should spend at least a year or two building programs before jumping right into this course. However, I don’t believe you need any Java experience to take this course, Sedgewick’s lectures seem to be written for the early Java student and many of the assignments walk you through the basics of the language anyway.
As far as grading goes, there are only 5 assignments that get checked. At the end of weeks 1, 2, 3, 4 and 5 (it’s a 6 week course, mind you), you are given a programming assignment that forces you to implement a specific algorithm to solve some application problem. The assignments are challenging and very fun.
However, I wish there was more graded work in this class. In other courses I’ve taken online there were smaller assignments that built up to the weekly challenges, and I believe this course would benefit from that sort of strategy. I did feel like half of my week was watching videos where the other half was coding up the challenge assignment, and there was really nothing in between. I do note in the course description that Coursera is porting this course from one platform to another, so perhaps those sort of smaller, graded, assignments were originally included and have since been dropped while this transition takes place.
Overall, this was a great course and I highly recommend it to anyone who wants to learn more about data structures, algorithms, and the Java language.
Every couple of weeks I'll write about my experiences from a career in software engineering, sign up and get my next article emailed directly to you!