Amirul Asyraf

Semester 2 Computer Science in a nutshell


I've already written about my experience during semester 1 if you want to take a look. A series where I share what I've learned about computer science with others.

It has been a nice semester, however, we have to switch to online learning since COVID-19 cases are fairly high. The University has been working on improving their organization as they learn what works and what does not work for online learning. Semester 1 is kind of an experiment for online learning, so it is kinda chaotic.

I can tell my grandchild, "You know kid, I learn bubble sort from the old beard professor on the computer with other people who I can recognize the first and second word of their name only(AM, LW, SD)"

As for that, below I summarize what I've learned in semester 2.

Disclaimer: All of this is just my opinion and thought. Don't take it too seriously. It is just what I've experienced. You are reading my history :p.


TL;DR

  1. Fundamental of Artificial Intelligence
  2. Operating Systems
  3. Network Technology Foundation
  4. Computer System Architecture
  5. Appreciations of Ethics & Civilization
  6. Mastering English

Some other stuff 😊


Fundamental of Artificial Intelligence

Don't expect too high in this subject. You're not gonna build Sophia, chatbot, image recognition, autonomous car, and yada yada. As the title of the subject said, it is just an introduction to the fundamental field in AI.

I'm not like others who just want to score an A for this subject. I have already thought of a side project or business idea to use AI on them, which is quite cool. For example, copywriting tools, actor face recognition on Netflix, Humming-based search to find a song(Spotify is sucked), writing tools, lofi generator, and much more.

I learned these;

  1. Intro to AI
  2. Intelligent Agent
  3. Uninformed Searching technique
  4. Informed Searching technique
  5. Cognitive Science
  6. Image Processing
  7. Natural Language Processing
  8. Expert System
  9. Machine Learning
  10. Neural Network & Deep Learning
  11. Robotics

All of that is just an introductory level. If you wanna go deep, go to YouTube.

Intelligent Agent is where I learned how humans learn, be a learning agent and the concept of Rational and perfection;

Rationale is different from being perfect. Rationality maximizes the expected outcome while perfection maximizes the actual outcome.

We also have a task to propose an AI solution based on the topic that is given to us. My group gets Spotify and Netflix. Our team proposes two improvements. Both of the ideas are high in demand from our respondents.

Disclaimer : I do all this wireframe 🀘

humming

humming-based search on Spotify

actor-face-recognition

Actor-face recognition on Netflix

Cool right 😎

Operating Systems

Haha, I'm sorry to tell you, but this course is boring πŸ˜†(unless you're using Linux or Windows). I don't know if it because of online learning or the professor or the course management. Though, we have an online lecture every week plus a lab session a day after the lecture. Following the lecture, there must have a lab task we need to do.

For example, First-in-First-Out page replacement algorithm, Round Robin CPU Scheduling Algorithm, Banker's algorithm for Deadlock management technique, First-Come-First-Serve disk scheduling algorithms, the Dining Philosopher Problem, and hierarchical file organization technique. All of these using any kind of programming language you know.

At first, I want to use Ruby. But, I found a GitHub repository containing all the answers for all these labs, so why not, right πŸ˜†?? The bad news is it is written in Java, which personally not my taste. But yeah, for the sake of learning, I get that stuff done βœ….

Personally, I just go straight to YouTube or online courses like Coursera and ClassCentral to learn this subject which is more fascinating and detailed :p.

However, if you want detail of what I've learned, here is for you;

  1. Intro to Operating System
  2. Early Memory Management System
  3. Memory Management includes Virtual Memory
  4. Processor Management
  5. Process Synchronization
  6. Concurrent Process
  7. Device Management
  8. File Management
  9. Network Organization Concept

Nevertheless, this is a fundamental thing that I want to grasp. I will keep learning it.

Network Technology Foundation

Ok, this is my favorite course in semester 2. The combination of an enthusiastic professor and my own curiosity makes the learning enjoyable. The outcome of this course; I can troubleshoot my own home router, build a small network, get to know AWS better, "what the heck is the Internet", setup my own web server, get to know "what the heck is Namecheap and Cloudflare doing", and much more.

Hosting infrastructure (for any language/framework) requires a β€œstack” of software to facilitate responses to inbound HTTP requests. Web hosting stacks consist of 3 elements (or β€œtiers” as they’re often called):

And the best thing is I get to know better on Ruby on Rails Deployment 🀘(even Heroku already does all of that, I just curious to know the process behind it).

A Rails hosting stack requires:

  1. πŸ”§ Server πŸ”§
  2. πŸ“­ Domains πŸ“­
  3. πŸ”‹ OS πŸ”‹
  4. 🚧 Install Dependencies / Build Tools 🚧
  5. πŸ’Ž Install Ruby (rbenv) πŸ’Ž
  6. πŸ“‹ Install Rails & Bundler (gems) πŸ“‹
  7. πŸ’» Install Web Server (Apache + Passenger or Puma) πŸ’»
  8. πŸ”’ Create Database πŸ”’
  9. πŸ“’ Create Git Repositories On Server πŸ“’
  10. πŸ“‘ Initial Push πŸ“‘
  11. βœ”οΈ Bundle & Asset Precompilation βœ”οΈ
  12. ⛔️ Restart ⛔️
  13. ⚠️ Test ⚠️

Great Scott !!! So damm cool.

I also want to try out render.com. It seems cool.

These are what I've learned;

  1. Network Communication
  2. Network Protocols and Network Operating Systems
  3. Network Access and Ethernet
  4. Network and Transport Layer
  5. IPv4
  6. IPv6
  7. Application Layer
  8. Switching Concept
  9. VLANs and Inter-VLAN Communication
  10. DHCP
  11. Routing
  12. Wireless LAN
  13. Build and Secure Small Network

These are some of the Network Topology that I've learned;

Screenshot 2021-04-14 at 13.29.41.png

This is easy. Just setup the IP Configuration (IPv4 & IPv6) and subnetwork.

Screenshot 2021-06-20 at 07.11.20.png

This is quite tough. I need to setup the DHCP server, DNS server, Web & Email server, Default, and Static routing, both IPv4 & IPv6 configuration, VLAN & inter-VLAN configuration, Port Security, and configure SSH. Tons of things :P

But yeah, I recommend you to read a book, Being Digital by Nicholas Negroponte. It is such a great book explaining all these kinds of networks, from atom to bits.

In conclusion, the Network is very important for us to live in this digital life. As the WIFI router said :

β€œYou can’t survive without me. Watch what happens when I turn off the WIFI” - WIFI router πŸ˜‚

Computer System Architecture

Muahahaha, I sleep in this class πŸ˜†. I think, if I want to utilize 100% of the learning from this course, I need to build my own PC, setup from scratch, playing with Raspberry Pi, or do some cool electronic stuff.

Yeah, the big problem is it is theory-based learning(that's why I get bored easily, I'm a hands-on learner). Even if you want to do first-principle thinking, you need to have a big "why" on "why you are learning it". Like Elon Musk, he learned from scratch about spaceships and rockets to build a reusable rocket and make humanity multi-planetary, SpaceX.

This is what I've learned ;

  1. Intro to Computer System Architecture
  2. CPU Performance
  3. CPU and Bus System
  4. Cache
  5. Internal Memory
  6. External Memory
  7. Input Output
  8. Instruction Set Architecture
  9. Pipelining
  10. RISC & CISC
  11. Parallel Processing

I will still be learning it whenever I wanted it soon.

Appreciations of Ethics & Civilization

Nothing to say :P.

  1. Introduction to the Appreciation of Ethics and Civilization in Malaysian Model
  2. Concepts of Ethics and Civilization
  3. Ethics and Civilization in a Diverse Society
  4. Strengthening Malaysia's National Unity
  5. Construction of Plural Civilization in Malaysia
  6. Federal Constitution as an Integration Site
  7. The Influence of ICT on National Integration
  8. The Role of Ethics and Civilization in Supporting Social Responsibility
  9. Challenges of Ethical Sustainability and Civilization

Mastering English

Fuhh, this course is dope. Thanks to madam Ain for teaching me how to be a good writer. Write a concise word and sentence, use words that you and your reader understand, and write in your own style.

All the writing in this world starts with a draft, and the first draft is always shitty. Don't be sad, it's ok. Let the idea evolve in originality. Then, start to revise & rewrite the writing.

The most important thing being a writer is to write every day consistently. Seth Godin writes every day(I love his blog!!!). James Clear writes his newsletter consistently on Thursday every week.


Some Other Stuff 😊

The real education begins when I keep learning the knowledge given to me instead of stopping just on each semester like my other friends.

Probably, I want to dig more on Network and AI subject. Because I have experience using AWS, Heroku, Web Server, Email Client & Server, the more I use them, the more I want to dig more the concept behind them.

And probably the AI stuff. Tons of cool ideas I can build with it.

University encourages the student to have integrity. Means that don't cheat in an exam, and yada yada.

But but, as long as I've been a programmer, Google is my second brain. I can walk happily without worrying about things that I need to memorize. As long as I practice what I'm learning, the things will come to my mind through the hand. Even if I forgot how to do that thing, I still can google it.

I don't care if the university will call me a student that doesn't have integrity, I will and still active learning what I've learned during university. I don't wanna stop there like my friends.

For this 3 month of semester break, I want to get hands-on experience as earlier as possible in real-world software. So, I apply for an internship at various companies(This is not a university internship, just my initiative). I apply to CoinGecko, Fave, and Joyfolk. Glad I get most of them. But I choose CoinGecko because I've ever wanted to explore the crypto world!!! (Still doing the internship assessment :p, try my luck)

update: I do not join the company for an internship because I feel so lazy and want to rest a bit from online meeting fatigue.

And I want to spend this holiday playing guitar as I get a new Stratocaster guitar :P, Pockverb Reverb & Delay pedal.

The End


Follow me on Blue Bird || RSS

#comp sci #university