Karush Logo

Online Learning

Computer Science and Online Learning

I just finished a university course on Data Structures and Algorithms. Prior to COVID, I decided I wanted to take some additional university level computer science courses in order to help maintain perspective on software engineering and to be able to collaborate with others who are interested in computer science. With COVID, things haven't gone exactly as planned but my ongoing experience has still had value.

Online Learning

I have always believed that online learning offers less value than in person learning, and my recent experiences have furthered that belief. I took Java 1 in the spring of 2020. This was an in person class until the end when it went online (actually "remote") for the last few weeks. I really enjoyed the class. I enjoyed discussions with the instructor. I most enjoy the lab component of the class where I had the opportunity to work with other students on small projects and lab assignments.

I took Java 2 during the summer of 2020. This class was scheduled to be "remote" (live instruction via Zoom) but it was changed to "online" (recorded class content only) at the last minute. This was my first ever online course. I've done quite a bit of online training using Pluralsight, and I do recommend that for learning the fundamentals of a topic or at least getting exposure to a new IT skill, but coursework is different. The difference is in the ability to have ready access to a mentor for questions. The online course did have access to an instructor, but the problem was the delay in the feedback loop. You could email a question, or post it to the class via the online tool. But then you had to wait. And then you would often get back an incomplete or incorrect answer. So then you would post a clarification. And then you would wait... and then repeat or give up... A huge value and differentiator in a good university class is having ready access - time after class or in person office hours - with an instructor where you can engage in a real-time dialog about a given question. Fortunately I had a strong programming background so the Java 2 course was interesting and engaging but not difficult, however I felt bad for the other students.

Modern courses, even those that are in person, are facilitated via an online tools such as "Canvas". One interesting aspect of these tools is that you get to see aggregate statistics about the class (average test score, min/max test score, where your score sits on the scale). I could see that many students were struggling with the class. How frustrating! I love programming and I want others to love programming! Programming should be fun and engaging, but many of the students struggled (based on exam and assignment grades, and questions being posted via the online tools). In many cases they struggled with the mechanics of the class - compiling and submitting code via the online system - things that could be easily solved by real-time dialog with an instructor.

In an employment environment that is in need of passionate, qualified IT workers, how many computer science students give up because their early programming experiences are wrought with frustration about the mechanics of programming (just getting the basics to work) and about lack of engaging instruction?

The class I just completed was Data Structures and Algorithms. It was an interesting class for a couple of reasons. I had heard somewhere along the way that this was a "filter class", as in some students decide not to continue on in computer science because of this class. Again, how disappointing that any class would be taught in way or cover material that is so out of scope that it discourages students from want to continue with a degree in computer science. I think part of the problem is the idea of "computer science" itself. This degree track at this university is "computer science", not "software engineering", so there appears to be a focus on the fundamentals of programming for simple purpose of "computer science". I felt this class was more of a history class than a modern computer science class, and maybe it is intended to be so, but should it be? Possibly if you are going on to computer science research there is value in learning "Big O" notation, graph theory, and related concepts, they have little relevance to modern day computer programming work for business.

I would propose the focus of any undergraduate computer science or software engineering program should focus on getting students excited about working with current concepts in modern programming. They focus should be on creating and problem solving using software. I feel that the industry will be missing out on many great programmer until this becomes the norm.

Programming Languages

One positive note that I saw in this most recent course was an openness to other programming languages. When I first started taking classes, my advisor stated that I must take Java and that all university coursework would be taught using Java. However this semester they allowed us to program in "any language of our choice". This was great considering I do all my daily work in C#. The instructor presented most of his examples in either Java, Python, or just pseudocode. I'm not sure if just the way the university is trying to transition from Java to Python, or if they will indeed remain language agnostic. I certainly hope they remain agnostic as I feel academia is really missing out on not embracing the the "new Microsoft" with C#, .Net Core (.Net 5), the ability to run on Linux, tools like WSL, and the benefits of an IDE like Visual Studio.

Conclusion

I am happy to see the local universities will be returning to in person learning this fall. My oldest son just finished his freshman year at the University of Nebraska - Lincoln. I think UNL did the best job it could it given the circumstances however based on conversations I've had with Jack, I think he had an incomplete experience this past year and while adequate, and in person classroom experience would have been far more engaging.

Computer Programming/Software Engineering is a great career choice. I hope degree programs continue to evolve their focus and provide in-person learning opportunities to keep students interested in pursuing degrees in this area.