DEV Community

Cover image for Life of a CS Student: That was NP hard
Sibusiso Dlamini
Sibusiso Dlamini

Posted on • Edited on

Life of a CS Student: That was NP hard

Though our workload has not decreased in the slightest, I feel less stress compared to the previous month. Deadlines don't motivate me the same way anymore. And I'm better off for it.

It's almost exam season. Our timetable has come out for our end year exams and it is the first time that I have ever been so satisfied with my timetable. It's looking like a downhill ride from here until the end of the year.

Where am I? πŸ—ΊοΈ

So I'm still a CS student, and that's not going to change anytime soon. I have a confession to make. I'm not as in love with my degree as I used to be. There were one or two computer science lectures that I sat through that I couldn't wait to finish. I have nothing against the content or my lecturer, both are engaging enough to hold my attention but I'm just getting tired of life right now.

I'm not struggling with the course workload or anything like that, but my life is just really moving at a slow and boring pace. I want to skip to the part where I can get my degree, find a job, buy a house and do all the things I want to do as an adult. But right now, I'm stuck in the perpetual cycle of studying for tests and chasing deadlines. I'm alive but I'm not living, you know?

The worst part of all this is that I feel as though I'm starting to feel like I'm falling out of love with my degree. I still remember how excited I was in the months leading up to my first year. If younger me could look at what I'm doing now, I don't think he would be all too fascinated with what I am capable of 2 years down the line.

For the most part, I enjoy the content of my degree but it's too academic. It feels as though they are preparing us to advance the world of computer science and revolutionise the industry. And honestly... I get my kicks from centering a div. At this point in time, if I had to decide to work after graduating or studying further, I think I would go with the former.

What am I Building? πŸ› οΈ

Nothing. Unless, you count this blog, in which case you already have the answer but the truth is, I haven't made time to build on any of the projects on my to-build list this past month. I haven't really learned something that was not for the sake of my academics.

Even if I didn't get to build anything that I wanted to there were a few assignments that I found were pretty interesting that I hope to apply in a future project. For example.

R Project - Central Limit Theorem

I take a statistics class because I've heard that machine learning is closely related to the subject so I thought, "why not?". Not my favourite class but that's not an insult given my love for Computer Science. I enjoy Statistics for the most part.

What's not so great was the monolith of a project that we had to complete. It was basically about verifying a technique that was used to estimate population parameters using sampled data. It's called the Central Limit Theorem. Statistics is mostly about calculating the probability of events and analysing the correlation between events and all that sort of stuff. So what I learned from this project is that when you gather samples for your experiment, the more samples you gather, the more accurate your inference on your population will be. The reason why this is possible is because of the Central Limit Theorem or so I think? - I'm not the best statistician. The project wasn't that fancy since they told us what to do, but we had to do the project in R and it has a neat way of displaying data. So I thought I would show and tell

16-n10-n100.png

25-n5-N1000.png

30-n100-N100.png

I won't explain what these data, but all you need to know is that R is a programming language for visualising data

What did I learn? 🧠

Vanilla Javascript

In my Information Systems class, we were taught Javascript from scratch. I was excited at first because it meant that I would actually get to learn the language properly this time but the lectures were hard to get through because I didn't find out many new things that I didn't know. What I did find interesting was the weekly practicals we had. I enjoyed the way this course approached teaching Javascript because they didn't separate the Javascript and the HTML. We wrote all our code between script tags. I prefer this teaching approach rather than simply learning the programming fundamentals of a programming language because it enforces the idea that Javascript is a tool that is used to manipulate web pages. Before this class, I had no idea that you can make prompts and alerts.

Theory Of Computing

We started Theory of Computing about 4 or 5 weeks ago. As you can imagine, this module is very "Theoretical". As much as it has a lot of practical implications, I don't see the value in it right now. Maybe it's because the course was very abstract. We discussed solving problems that didn't feel like they had many practical implications like Posts' correspondence problems.

I must say, I found automata and the Turing machines and all that intriguing. I also think that I have a much better understanding of regular expressions because of that course.

ToC is essentially about determining whether a problem can be solved and if the solution is worth implementing. I emphasize the second part because there are some problems with solutions that will take so long to solve that they are practically unsolvable in our lifetime. I mean so long that if you could convert every atom in the universe to a computer, you would still not have enough resources to solve the problem in your lifetime. That's a LOOOOONG.

Theory of Computing is very interesting but also very academic. It's not every day you hear about Turing machines and a problem being NP-complete. I was intrigued by the content of this module but not enough to do extra research on my own. I might just look into the travelling salesmen problem though. I've heard of it but never studied it.

My main takeaways were that

  • less powerful automata provide more efficient solutions to problems than more powerful ones
  • more powerful automata are unpredictable and inefficient
  • all the automata we learned about are actual devices that can perform computation. They are not just abstract.

General News πŸ“°

  • Forrest Knight, a Tech Youtuber that I have been following since 2019, is going to stop YouTubing next year so that he can focus on being a father. Happy for him, sad for me :/. I really looked up to him.
  • If you're on Twitter you know about the craze that is Web3.0. Not quite sure what the hype is all about yet. That's probably because I don't quite understand it myself but I think it's something I'll YouTube or read about this month. Feel free to share any resources in the comments.
  • I set a new personal record of 110 wpm on 10fastfingers.com πŸ₯³
  • I think my writing has improved. Grammarly told me they've noticed that I've been practising πŸ˜‚ I love being complimented by software. Whoever came up with that feature needs a raise.

Wrapping up

In this final month, we learn about Databases in both Information Systems and Computer Systems and since I have covered those topics in depth in high school as well as on my own personal projects, I predict a lot more free time in my near future. I have a good feeling for this month but I don't want to jinx it so with that being said, thanks for the read, I wish you a wonderful Hacktober πŸŽƒ, and happy Coding! πŸ’»

Top comments (0)