My First Academic Year in the UK

Sam Abdullaev
6 min readDec 8, 2023

--

Intro

In this article, I am going to share my first year experience as an international Computer Science Student at one of the universities in the UK.

The aim of this article is to give an idea to you about how the life of a typical international Computer Science student would be and how you can take actions so as to make the journey more productive towards achieving your goals.

Education System in UK Universities

Let’s take a brief look at the education system in UK universities:

  1. Duration: Undergraduate courses are typically 3 years (or 4 years, including a Foundation year if you don't qualify for the bachelor's degree).
  2. Start Date: Universities usually commence their academic year after 20 September.
  3. First semester: The first semester (Semester A) usually begins after 20 September and lasts until mid-January. This differs from university to university, but there is a Christmas vacation in between, usually lasting 3 weeks.
  4. Second semester: The second semester (Semester B) usually starts after mid-January and lasts until mid-May. This includes the exam period and a usual 2-week Easter vacation.
  5. Referred/deferred Exams: Unless you fail any of your courses, you will be free after mid-May. Otherwise, there will be examinations from mid-June to the last days of June for referred/deferred assessments from Semesters A and B.
  6. Grading System: UK universities use Honours classifications instead of GPAs. The classifications are as follows:
  • First-Class Honours (First or 1st) (70% and above)
  • Upper Second-Class Honours (2:1, 2.i) (60–70%)
  • Lower Second-Class Honours (2:2, 2.ii) (50–60%)
  • Third-Class Honours (Third or 3rd) (40–50%)

For me personally, the first 3 months of university were difficult because I was in a completely new environment, and I had never learned any programming languages before that time. I had no idea about databases, data structures, or anything else.

If you’re curious about the online learning platforms that have played a pivotal role in my coding journey, I’ve detailed them in a separate article: My Coding Journey: Online Learning Platforms That I Use.

First-year Modules for CS Students

As a first-year Computer Science student, you will be exposed to a wide range of modules that will help you lay the foundation for your future studies. Below is a list of the modules I studied in my first year:

1. Introduction to Programming and Discrete Structures

What we learned: In this module, we learned the basics of programming using a high-level programming language — Python. Additionally, we were introduced to discrete mathematics and its application in computer science. This module consisted of two strands:

  1. Discrete Structures (mathematics): We learned about sets, tuples, matrices, number theory, propositional logic, logical equivalence, and other topics.
  2. Programming: This covered the basics of programming, including functions, loops, program development concepts, structured data, testing, and debugging.

Where I struggled: Understanding abstract concepts in discrete mathematics, like propositional logic and logical equivalence, was tough for me in the beginning.

How I overcame: I like to write things down on a paper in a way that is easy for me to understand. The process of writing (structured writing to be precise) helped me understand the topics more as it made me dive deeper into the topics. In addition to university materials, I actively sought additional resources for discrete mathematics and engaged with online tutorials. The main sources I used to learn were: Udemy, W3Schools, Programiz, GeeksforGeeks, and Tutorialspoint.

2. From Silicon to C

What we learned: We gained a deeper understanding of computing devices, including the workings of computer hardware components. We became familiar with fundamental features and syntax of the C programming language, which is widely used for system-level programming.

Where I struggled: Circuits, 1-bit adders, decoders, multiplexers, Level 0/1/2 platforms - those were all new terms for me when I started this module. The other topics I struggled to understand in the beginning were the assembly language programming and C programming language.

How I overcame: As the topics were already broken down into smaller, more manageable parts, I looked for more online materials for each part (from YouTube & online tutorials) on top of the materials given by the professor. We also had small projects during the course to practice the new topics we learned in an assembly language programming and I can say that those mini projects we completed helped me a lot to understand the topics.

3. Data Modeling for Databases

What we learned: In this module, we learned about data modeling and how to represent real-world entities and relationships as structured data. We also learned about relational algebra, querying a database, practical E-R modeling, normalization and physical modeling using SQL, DDL and DML.

Where I struggled: Understanding how to organize data, use relational algebra, and work with SQL was pretty challenging in the beginning. It meant figuring out how to represent real-world things and connections in a structured way, and wrapping my head around concepts like normalization and practical E-R modeling required a big shift in how I think and analyze things.

How I overcame: Collaborating with classmates in group projects facilitated the exchange of diverse perspectives and problem-solving strategies. Using online resources (e.g. W3Schools to learn the SQL syntax) also provided additional support in understanding the concepts taught in the classes. Regular practice sessions with the instructors also played a crucial role in solidifying my understanding of data modeling and databases.

4. Computational Problem Solving

What we learned: Since this module was a continuation of the ‘Introduction to Programming and Discrete Structures’ module from the first semester, its structure was similar, with the only difference being that the topics became more complex. The main focus of this module was on understanding and reasoning about mathematical and logical structures that are relevant to programmers. This module also had two strands:

  1. Discrete Structures (mathematics): We learned about matrices, graphs, descriptive statistics, proof, finite state machines, and regular expressions.
  2. Programming: We became familiar with the basic principles of data structures. The goal was to learn solving specific problems, including choosing data structures and implementing Python algorithms.

Where I struggled: Understanding the relationship between math and logic, especially in areas like graphs, proof and regular expressions, was tough in this module. On top of that, figuring out how to use these abstract ideas in programming, like picking the right data structures and writing Python code for problem-solving, added an extra layer of difficulty.

How I overcame: By this time, I knew some useful resources to learn the syntax of the programming language I wanted (online tutorials) and find detailed explanations of the complex topics. On top of the university lecture presentations, professors also provided us with the useful resources (videos, problems, tutorials) to learn the more complex topics, which I spent my time on as they included detailed explanations and were easier to understand.

5. Team Software Project

What we learned: In this module, we gained hands-on experience working in a team to develop a software project from start to finish. We learned about project management methodologies, teamwork, academic writing, presentation skills, collaboration tools, and developed our communication skills.

Where I struggled: Getting used to working in a team was tough in this module. This is because I was used to doing things on my own in the first semester, and adapting to working with others brought challenges in coordinating tasks and making decisions together.

How I overcame: The first thing I did to solve most of my problems was seeking guidance from professors during dedicated study sessions. They provided valuable tips on how to solve the issues I had with my teammates and where I could find extra materials to study and learn more about the topics I didn’t understand. After their suggestions, my team and I scheduled regular meetings to discuss project progress, address concerns, and share ideas. Additionally, asking for help from the people who were experienced in the topics I was interested in definitely helped me to contribute effectively to the successful completion of our software project.

You can check out our website that we were able to create to help children learn mathematics - AllMaths.

Conclusion

In conclusion, to overcome challenges and have a successful academic journey, I learned to employ diverse strategies, including structured note-taking, using additional online resources, engaging in projects, collaborating with classmates, participating in practice sessions, and seeking guidance from professors.

Good luck with your studies!

I look forward to sharing my journey in the next posts, where I will let you guys know where I am going next, so stay tuned! Feel free to browse my personal webpage and connect on LinkedIn to know what I have been up to.

--

--

Sam Abdullaev
Sam Abdullaev

Written by Sam Abdullaev

I share my experiences of studying abroad, self-improvement, and technology

No responses yet