“Chill. I’m not a real engineer – just a software engineer”, that’s what I always tell people who give me this weird look when I say I’m heading towards the software world.
As I am typing this, I’m currently a Year1 Software Engineering student from the University of Nottingham Malaysia Campus. As a student of this course, upon graduation, I’m supposed to have gotten my head around the subtle art of mastering the process of developing software – from meeting and talking to the customers, to managing the team and schedule, to the coding, and finally, the deliverable product.
But let me go a little bit more in depth than that.
My 1st year consists of 2 semesters, around 4 months each. Each semester is comprised out of a certain number of modules, all of whom credits add up to 60 in total. For those of you who might be interested in how it’s like being a 1st-year software engineering student, read up.
Mathematics for Computer Science
Introduces you to the art of stripping down complex, foggy situations to their absolute simplest form. With that, you could clearly derive out how each variable is affecting every other variable and the results that come with it, an important foundation for the study of artificial intelligence. On the side note, with this type of math that you’ll be doing, the chances of you even encountering a numerical digit is about as slim as your chances of meeting a T-rex with purple balls.
Programming and Algorithms
The ability to write code is one thing. The ability to write efficient, clean, readable and manageable code, is another. You’ll learn how to evaluate, and compare types of code in terms of the time and space used up etc. In essence, you’ll soon be tackling the tougher part of programming – figuring out the algorithm.
Systems and Architecture
How do you get from typing a URL into the web browser, e.g. http://www.blabla.blabla, and end up in a website? What’re routers? What’s a network? These questions surface when you’re looking at the practical part of things. How do you get from something like the internet, something you can’t touch nor see, to something that you can use every day, and feels “real”?
This, imo, is probably the most important module throughout the year. Have you ever wondered, how does your act of pressing the “K” key on your keyboard lead to the alphabet “K” to appear on the screen? How does your finger cause electrons in the computer to react in such a way that certain pixels at a certain position to change colour, creating the “K” shape? Seriously. Just think about it a moment. If you were like me, somewhere along the way, you’ll just be thinking:
But it’s not bro. It’s science.
This module allows you to understand how a computer works, by you building a computer of your own. With code.
Once you’re at the other end of the tunnel, when you’ve came out from the darkness, my god. Everything clicks so well. This module is adapted from another online course. I highly recommend you to check it out even if you aren’t incredibly fascinated by what a computer is made out of. It’s always better to know what you’re dealing with.
Fundamentals of Artificial Intelligence
No, we’re not building ourselves a T-600 here. We’re just starting to have a grasp on what A.I. actually means, and what we can and cannot do with it, and more importantly, why do we need it. If you want to get more grounded feel on what it’s all about, I recommend learning this one single concept – perceptron. Let me know how it turned out.
Database and Interfaces
Most softwares are useful because they combine the searching and storing capabilities of a database with an aesthetic, user-friendly interface. For example, if you register an account on a website, you’re entering information in a form built from HTML and beautified by CSS. Your information is then entered into the database via PHP and SQL. Here, we dive head first into how all these components work together by creating a working website. You may know how to code in HTML and CSS. You might be a pro in creating programs with PHP, or dealing a with database with SQL. But their strengths shine the brightest when you combine each piece of the puzzle together, which is what you’ll be doing here.
Introduction to Software Engineering
This is an eye opener to me. Software Engineering is soooo much more than just sitting down in a dark corner with 3 computer screens, and code 24/7. Yes, there might be times for that, but it’s not the whole story. Important things such as getting requirement from a client, to translating that verbal, vague idea into a structured feasible draft, and finally the end product, are much emphasized too.
“Programming paradigm” can be equated to “a style of programming”. Just as there are many ways to solve a type of problem, there’re many styles of programming too, .e.g object-oriented programming, imperative programming, functional programming etc. Putting the heavy terminologies aside, this module gives you taste of two types of programming – object-oriented (with Java), and functional (with Haskell). Once you’ve got your feet sufficiently wet, things’ll start to make more and more sense.
As just another fellow 19-year-old first-year student, I may not be in much position to give any sort of advice to anyone who’s thinking of entering this field, or might be in it and are struggling. But if I’m going to give one advice that I’m 100% had worked in my favour, no doubt it’s going to be this:
“Practice makes perfect.”
The software field had come a long way ever since Ada Lovelace wrote her first line of code. Nowadays, there’s plenty of platforms to learn from, and practice the skill of programming, for free! If you want to know more about something, just start doing it. Period. There’s no other way to test the depth of the water other than soaking your feet into it yourself and get a grounded grasp of the idea. By doing so, you’ll not only be able to better understand the concept you’re trying to grasp, but also a better perspective in how it works in the bigger picture, enabling you to eliminate any unnecessary “fluff” that surrounds the concept.
All that being said, I’ve still got a long way ahead of me in terms of learning, practicing, and applying the skills of the field. Stick to the blog as I update weekly on my journey as a fellow Software Engineering student, and hopefully, there might be a thing or two that’ll resonate with you along the way.
– Just another dude