Discovering (Re-discovering) Computer Science: Part II

Hi and welcome back everyone! In this post, I will be discussing my experience learning how to program at Oregon State, what helped me improve my programming abilities, and what helped me overcome (mostly) imposter syndrome.

CS @ OSU

Oregon State EECS Building from EECS Website

Before diving in, I want to give you all the structure that I will be using. I will be briefly mentioning some of the early courses and giving out some pros and cons to them. 

CS 161

This introductory Computer Science class seemed pretty slow paced until about the 9th or 10th week. I thought the instructor Tim Alcon did a great job breaking down assignments and giving us clear instructions. I also have to thank some of my peers for being so persistent in trying to find edge cases to every assignment. However, I was not prepared at all for the size of the last project and felt that with working 50-60 hours per week, it was nearly impossible for me to finish at the time. In retrospect, I really enjoyed this course and would make the difficulty ramp up earlier in the quarter so the students can get adjusted. 

CS 162

This was another introductory course also taught by Tim Alcon. This course felt a bit harder, but still well structured with clear assignment descriptions (a gem in this program really). The last assignment was a large OOP assignment that really kicked my butt. Again I think it would be wise to do bigger and more difficult assignments that lead up to that one but I digress. 

CS 271

This was a Computer Assembly and Architecture class. The class that took away my 4.0 GPA. I think the first two weeks are very intense if you really want to understand what the relationship between different parts on a motherboard are. I recommend taking the first few weeks seriously because this class builds on top of what you learn in those weeks while the rest are separate. I enjoyed the material and felt like I was starting to actually understand how a computer works, however I did not think the ramp up was going to be so short. I would say evening out material over the weeks would make this class better. 

CS 290

This class was a web development class. This was the first class that I felt ahead on most things, but that’s largely due to the fact that I had taken a web development bootcamp MOOC course on Udemy. Had I not taken it, I doubt I would’ve done well. My peer’s reviews of this class are on the dot: messy, unstructured, old material, useless trivia quizzes and final. The pros I can find are that you learn a foundation that if followed on upon can lead to marketable skills. We learned Javascript, HTML, CSS which can lead to React, Angular, Vue, etc. I also really enjoyed web dev overall as I could see the changes I was making in real time, which is something you don’t get to do with other classes really. Also, this course has changed a lot since I took it and I have heard great things about the restructure. This review is definitely outdated and only my experience.

CS 261

This was the Data Structures class. I really enjoyed this class as it had a slow pace and really allowed you to dive into the data structure to understand it better. The assignments were within the difficulty level you’d expect and the TAs + instructors were always on top of the questions being asked. I wish the term had been longer so that we would’ve been able to learn more advanced data structures like AVL trees, Red/Black trees, etc. Overall, there is nothing surprising and the ramp up is quite nice. I actually found myself talking about this class during an interview for a FinTech startup. The interviewer was surprised I had said my favorite class so far had been data structures! 

From these five classes, you can infer that my experience with learning how to program at Oregon State varied between classes and instructors. I think for the most part, classes like 161, 162, 271, and 261 do a great job at giving clear instructions and being open to discuss any issues that may arrive. I also think that these four classes do a great job of setting up objective grading criteria and the staff does a good job at taking a second look if something is off due to a typo. However, all of my learning did not come from these classes and I actually had to use external resources to really be able to hone down some of the material we were learning. I will be going over those in the next section. 

How I Improved my Coding Abilities

Youtube from Amazon.com

Prior to starting Oregon State, I looked at resources online to learn what programming even was and had started doing Project Euler problems. Unfortunately, these types of problems don’t translate to Object Oriented Programming well. While everyone seemed to struggle with Discrete Math, I actually had a hard time wrapping my head around the interaction between objects. I searched how to learn OOP online but really learned while watching Corey Shafer’s channel on YouTube and Traversy Media’s channel on YouTube. They did a great job breaking down interactions between objects and showing different examples of the four pillars of OOP. 

MIT OpenCourseware Logo from al-farnarmedia

As for Computer Architecture, I also went to YouTube and found MIT OpenCourseware courses. However, this class already has great information provided to students so the extra lectures are not necessary. What did help me was doing mini projects apart from the homework assignments given. I felt getting more comfortable with the more I did these small side projects. 

Colt Steele Udemy Course from Jana Bergant (orig. Colt Steele)

For Web Development, I completed a MOOC course on coursera: Colt Steele’s Web Development Bootcamp. This course went over what the class goes over and at a $15 price tag. I really enjoy how Colt breaks every concept down and then goes over examples while also giving out mini assignments for you to do. Highly recommend it! 

Lastly, we have data structures. I actually think that the class does a great job of going over all the concepts but I also used CS Dojo’s Youtube channel and AlgoExpert (costs like $100 but I used a friend’s account). For me, it was more about learning how each data structure differed from the other like a stack vs queue vs list vs array vs double ended queue. I also did every assignment slowly while taking a look at the debugger a bunch. 

Overcoming Imposter Syndrome

The title of this section is a bit misleading. I believe that imposter syndrome comes in waves. I felt it while doing CS 271 and realized that the only way to not feel it for me was to crank out side projects and get comfortable with the language I was using. This again happened later on in my OSU journey while taking Operating Systems in C. I had never coded in C yet there were students from the C++ intro course cohort in the class and I felt like I didn’t deserve to be in the same class. What helped me was taking a MOOC course for C programming and really trying to understand how C was different from Python (POINTERS and MEMORY MANAGEMENT 🙂 ). I actually ended up really enjoying that class and C. Actually while interviewing for different internship roles the following quarter, I thought about doing low-level programming and moving more into embedded, but that’s a story for another day. 

I also felt imposter syndrome during my internship this past summer. Many of the other interns came from prestigious universities and seemed to know so much more about CS and Software Engineering in general. I reminded myself of all the other times I felt this way and again went the route I did in the past: auxiliary learning. There are many more facets to imposter syndrome like how it can cause anxiety, depressive thoughts, and an overall feeling of uselessness, but I will not be going into that here. All I can say is that, for me, working on my skills outside of the requirements given really helped me put my thoughts at ease and I hope this is also the case for any of the readers reading this section. It’s tough to overcome, even if momentarily. Just remember, we were all once beginners. 

Conclusion

And, this wraps up my two part series on my background and my OSU experience. I hope you all enjoyed it. I will be writing more on different topics in the future and hope you all can learn from/enjoy reading my blog!

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *