Insights from My First Year Studying Computer Science in 2024


Introduction

Hi, I’m Folk, a second-year Computer Science student based in Melbourne, Australia. I created this blog to document my journey through the world of Computer Science, share my experiences, and provide insights into the tech industry.

I’ve been interested in gadgets and technology since I was young. It’s fascinating how these innovations change our ways of living, working, and even saving lives. However, I never thought of getting into the tech field because I always viewed it from a consumer perspective.

In 2022, I decided to take a Certificate IV in Web Development. During this course, I realised that I enjoy the process of production as well. This revelation led me to begin my journey toward a Bachelor of Computer Science, majoring in Software Development.

Through this blog, I aim to share my learnings, challenges, and successes in hopes of inspiring and helping others who are on a similar path. I’ll do my best to discuss everything from programming languages and software development to personal growth and career tips in the tech industry as I go through my journey.

I’m excited to share my story with you and hope you’ll join me as I navigate the ever-evolving landscape of technology. Feel free to leave comments, ask questions, or share your own experiences. Let’s learn and grow together!


First Step into Computer Science World

Semester 1

  • Network and Switching : Networking Protocols, VLANs, IPv4, IPv6, Subnetting, Ethernet, STP, Inter-VLAN Routing

  • Group Project - PHP Website, MySQL database

  • Introduction to Programming - Procedural Programming concept using Ruby

  • Computer System - Data and number systems (Binary, Hex, Decimal), Logic Gates, Flip Flop, Stacks, Encoders, Memory, Assembly Programming (ARM-Lite)

When I first saw the names of these units, I was excited because I knew I would learn so much just from this semester alone. And I was right. This semester opened up my perspective and changed my way of looking at how programming works. As you can see from the list above, I’ve got to learn core concepts of computer science such as networking and switching, binary operations, memory management, and procedural programming.

From a freshman's perspective, it was challenging to wrap my head around these concepts, especially those in the Computer Systems unit. In this unit, I learned about binary concepts, logic gates using Logisim-Evolution software, and assembly programming using ARM-Lite. The more I learned about how computers think and work, the more I agreed with what my professor said: "A computer is dumb; you must precisely tell it what to do." I had always thought computers were so smart—they can do many cool things and continue to evolve every day. However, it isn’t the computer that’s smart; it’s the person behind the screen, writing code and telling the computer what to do.

Introduction to Programming was the unit that helped me improve my programming thinking through languages like "Ruby" and 2D game libraries like GOSU. I learned about procedural programming styles, which helped me understand how to organise my code for readability and maintainability. This laid a very good foundation for programming and coding, which I think is crucial for my career.

Network and Switching, as the name suggests, focused on concepts of networking and communication between devices we use in our daily lives, such as mobile phones, tablets, and computers. This was facilitated through resources like the CISCO Networking Academy. Additionally, the practical part of this unit involved configuring switches in small network scenarios using physical CISCO Switches and Packet Tracer software. I learned concepts like network design and infrastructure, the OSI Model, LANs and VLANs, wireless communication, and IPv4 and IPv6 Subnetting. This helped me gain a better understanding of how networks function in real-world scenarios, such as networking in small companies.

The First Group Project wasn't much different from what I learned in Certificate IV in Web Development. We built a website using technologies like PHP, MySQL, HTML, and CSS. However, this project emphasised the importance of responsive web design. I found that my CSS skills need much more improvement to keep up with current standards.


Cloud and OOP are Big things.

Semester 2

  • Cloud Computing Architecture - AWS, Network Services, Compute Services, Storage Services, Database Services, Security, High Availability, Autoscaling

  • Object Oriented Programming - OOP concept using C# and N-Unit Testing

  • 2 Units of Group Projects

Cloud Computing Architecture was the unit where I got hands-on experience working with Amazon Web Services (AWS). In this unit, I learned how cloud computing helps save costs while providing scalability for both small businesses and large companies. Additionally, I learned to implement a cloud architecture for websites to achieve high availability and scalability. The services I used included Amazon EC2, S3 bucket, RDS, IAM, VPC, and Lambda. I also gained insights into concepts and their usage in other services like CloudFormation, CloudWatch, Trusted Advisor, and more. With further study in these areas, I feel confident about passing the AWS Certified Cloud Practitioner exam. I believe cloud computing is crucial for businesses of all sizes today and will continue to trend in the future.

Object-Oriented Programming is another method of writing code that offers many benefits such as modularity, reusability, scalability, and maintainability. I learned the theory of OOP, including Abstraction, Encapsulation, Inheritance, and Polymorphism, and applied this knowledge by building simple programs like a Console-Based Clock program, Shape Drawing program, and Console-Based Adventure Game using the C# programming language. Additionally, I learned to write NUnit tests for all these programs to ensure they behaved as expected. OOP is another essential concept to master for anyone pursuing a career in the tech industry, as it is used in real-world projects for both small and large companies. Although learning these concepts can be challenging, I believe it is worthwhile to master them as soon as possible.

Other Units of Group Work Projects were focused on collaboration and teamwork. I learned to use collaboration tools like Confluence and Jira to communicate, plan, and document project processes. While these units did not teach me new technical skills, they underscored the importance of soft skills in the workplace. As someone who preferred to work alone on projects, believing it would be easier to manage time and resources, these projects showed me the benefits of teamwork. We were able to accomplish tasks much faster with the help of teammates who specialized in different areas. The final product was more refined because we selected the best solutions from our collective ideas and discussions. Not everything went as planned; I encountered a teammate who was not contributing, and I had to address this issue with the team and the facilitator. Despite this challenge, we managed to complete our project on time. I learned firsthand how important soft skills like time management, project planning, communication, and people management are, and I am committed to further developing these skills to improve my effectiveness in group-based projects.


Growth Mindset : What will I do to keep getting better?

With all the experiences and knowledge I gained from my first year in computer science, it feels like I learned a lot in just one year. However, I am still driven to learn more to advance my knowledge and skills further. During the break, I researched various job titles such as Full Stack Developer, Mobile Developer, Android Developer, and iOS Developer, and the skills needed for those roles. I learned and tried out some of these skills, such as the React.js library, and I am currently learning the Swift programming language for iOS development.

I spend my free time learning and exploring topics I am passionate about to see if they are right for me. Additionally, I plan my learning journey and set deadlines to complete tasks without much stress. While I prioritise rest, I also want my skills to reach a level where I can build projects for my portfolio as soon as possible.

" The expert in anything was once a beginner. " – Helen Hayes

Useful Resources and Tips

  • Practice Front End Web Development skills with Front End Mentor

  • Ask AI a lot, it's our superpower tool to boost our learning progress

  • Read Documents and Learn from it

  • Be Curious, Dive Deep into topics you passionate about

  • Plans your study

  • Don't forget to take a rest!


Acquired Skills and Knowledge

Concept and Theory

  • Computer Science core concept; Binary, Memory and Encoder

  • Networking; Subnetting, Network Protocols, Routing and Wireless Communication

  • Object Oriented Programming; Abstraction, Encapsulation, Inheritance and Polymorphism

Programming Language

  • Ruby

  • C#

Tools and Services

  • Amazon Web Services (AWS)

  • Confluence

  • Jira

During Free Time

  • React.js

  • Javascript (ES6)

Let's see how much knowledge I will acquire next year

0
Subscribe to my newsletter

Read articles from Pattarapol Tantechasa directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Pattarapol Tantechasa
Pattarapol Tantechasa

Hi, I'm Folk, a second-year Computer Science student in Melbourne, Australia. I'm majoring in Software Development and I'm passionate about the tech industry. I started this blog to share my journey, knowledge, and interests in technology. Join me as I explore the world of computer science and software development.