Coming to the University of Edinburgh was a complete shock to me at first but in the end, it was a lot of fun and I made many new friends. I met people from all around the world, including from countries I never heard of before at that time. Given that Edinburgh is ranked highly globally, it's no wonder I met many students who were high achievers in their high school. From making new friends, staying on top of things, competing in Hackathons and working on personal projects were the main ways I was spending most of my time after I was finishing off my studies.
This blog is not going to be about my best tips on surviving your first year as a Computer Science student at Edinburgh, but also about how I experienced my first year, my pitfalls, my lessons, and my advice to someone who is just starting, well... going to start their studies in the upcoming academic year.
First thing first, I arrived with my father, who wanted to explore Edinburgh with me during freshers week for a few days. We took the train from Kent and travelled all the way up to Edinburgh. That was the first time I would experience living on my own, so I had to learn the essentials, such as cooking, shopping, time and money management, etc. Luckily, I had 3 great Scottish flatmates who were very supportive, despite my limited English language skills. I remember various flat parties going on in the kitchens with lots of alcohol. Everyone was shocked when I told them that "I don't drink" and "I don't go to clubs". Yup, I was that kind of person. The one you would most likely find in the corner of the party talking with another Computer Science student. Luckily, there were quite a few computer science students in my accommodation who I easily befriended with.
During the freshers week, I met my Personal Tutor (that system has changed now to Student Advisors), where I confirmed my matriculation as a student. Each student was assigned with one Personal Tutor who would be the main contact regarding Academic concerns, choosing courses and any other general advice a student may have. That was the time where I got the chance to explore most of the student societies around the campus as well as the building, called Appleton Tower, where I would be attending all my courses. The good news in Edinburgh is that all undergraduate and master computer science students have one building solely dedicated to computer science students. This meant that we didn't need to travel around Edinburgh or to other buildings to attend our courses, as the 9-floor building hosts all the courses in one place!
All computer science students are part of the School of Informatics, one of the 21 schools under the Edinburgh University umbrella. There are 2 terms per year for all students, each lasting for 10 weeks.
Each year, every student must complete 120 credits and courses were mostly split into 10 and 20 credits. Of course, 20 credit courses were more challenging and required a greater in-depth understanding of the topics to do well in these courses. If you take only Computer Science or Artificial Intelligence, you will have 40 credits worth of courses. I chose Proofs and Problem Solving, the toughest Math course for 1st and 2nd year math students, and Computer Simulations from the School of Physics. I personally chose 80 credits worth of workload during my second semester and 40 during my first semester. I found this to work perfectly, given the second semester is slightly longer than the first semester and this gave me more time to adjust to the new educational environment.
Luckily, there was a lot of support dedicated to first-year students, including InfPals and MathPals. Both services were run by students who had already taken the courses. These were weekly tutorial-like sessions where we would ask the tutors questions about the courses. These sessions were of tremendous help and were recommended by the professors to enhance our learning.
Various societies and clubs such as CompSoc and Programming Club were tailored to curious students who wanted to expand their programming skills. CompSoc is a student lead society which offers various talks, events and workshops for students to learn and explore new topics. The annual Hack The Burgh, organised by CompSoc is the largest Hackathon in the whole school, were students from within and outside of the school participate.
In the first year, only the math-related courses were 20 credits which required the most focus. Exams take place in December, usually giving students one or two weeks to revise. Given that I have taken Computer Science at A levels, I found the computer science-related courses to be average, but I found the math modules tougher. The courses below are mandatory for all Computer Science students.
Introduction to Linear Algebra (ILA) (20 credits): Matrices Operations, Gaussian elimination, Linear Independence, Vectors, Eigenvalues and Eigenvectors, Gram-Schmidt, Vector Spaces. That was my very first lecture as a university student! I remember Prof Christopher Sangwin, who is still teaching the course to this day who taught us a topic in Linear Algebra using an Arduino board. I believe it had to do with linear independence. After class, I spoke to him as I was very interested in learning more about Arduino and how to use electronic components to create small projects. I remember I joined the Robotics Society after that and spent hours working with Arduino trying to implement what Prof Sangwin showed us in class. ILA was a challenging course, but very manageable. I was lucky enough to meet an exchange student who came from Texas for a semester and we spent hours studying together and going through past papers together to prepare for the exam. The weekly assignments weren't very difficult and anyone could score 10/10 by having a solid understanding of the topics, as the questions were adequate to test your knowledge. All weekly assignments were graded. I found the final exam to be of above-average difficulty, but it was an open book, so I could use the book during the exam to find some definitions I couldn't remember.
Functional Programming (10 credits): This course was entirely based on Haskell. Functions, Lists, Recursion, Data Types, Data Abstractions, Type Classes, IO and Monads etc. The course was taught by Prof, Don Sannella, who was my favourite! His phrase "whooosh!" still catches my mind to this date! His "whooosh!" expression was used to tell us that in Haskell, operations were happening on the entire data structure, while in procedural, operations were happening once at a time per loop iteration. Functional Programming was more lenient, but challenging in its own way. We had to complete several questions per week based on Haskell. I remember getting stuck on a few questions for hours before coming up with an answer. Each week, we presented our answers during the weekly tutorial. The tutorials were mandatory, but our work didn't count towards our final grade. That was the only course which had a mid-term test and I remember many of us who got 99%. At the end of the semester, we had a mock exam, which was a good practice to see what we didn't know. Overall, the course was very fun and Prof Sannella was organising a small competition with the goal of producing "something cool" using Haskell. I enjoyed the course and of course, Prof Sannella was and is still my favourite academic to this day!
Computational Logic (10 credits): Finite State Machines, deterministic, non-deterinistic automata, Boolean Algebra, Correctness, Truth Tables, Karnaugh Maps etc. I found this course to be very simple and challenging. The tutorials of this course contained simple questions, but hard to answer and most of the time I had to invest hours in understanding some of the topics. The course was taught by Prof Michael Fourman who is now retired. The course was more theoretical and many of my friends disliked the course. I enjoyed the course given that I found it challenging from a different perspective. Luckily, the exam wasn't too difficult in the end.
The second semester was longer than the first semester and that's due to Easter Holidays in March. All students in all schools of the University of Edinburgh will have one week off during February, called "Flexible Learning Week", which allows students to explore career opportunities and prepare for internship interviews. We had a lot of time during the end of March and the whole of April to revise our courses for the final exams in May.
Calculus and its Applications (CAP) (20 credits): Another challenging math course. Functions, Limits, L'Hopital rule, Differentiation, Chain Rule, Integrals (integration by parts, trigonometric substitution), 1st order differential equations, Series (Power, Taylor), Polar Coordinates, etc. Some of these topics are covered in the A-level calculus curriculum, however, the weekly readings were quite long, often 10 pages of the "Essential Calculus" book. We had weekly assignments to complete during the course which were about the same difficulty as the ILA course in the first semester. The assignments were part of the final grade of this course, meaning that I was often spending extra time making sure my writing was good enough. The course was fun, and I got the chance to apply multiple mathematical concepts by solving problems which I enjoyed. Overall, the course was less challenging than ILA.
Proofs and Problem Solving (PPS) (20 credits): Number theory (irrational, rational, real numbers), Complex numbers, Fundamental Theory of Algebra, Polar Coordinates, Euclidean Algorithm, Counting, Binomial Theorem, Set Theory, Permutations, Congruence. That course was the hardest course I have taken by combining all the courses I took during my first three years at university. The weekly assignments were very challenging, requiring long hours of constant thinking. While this course was very challenging, it allowed me to develop a new way of learning "If I can't do it, I didn't understand the theory", so I often went back to the book, or used external resources to help my understanding of the topics. The problems given to us were very unfamiliar and one could always find me in the weekly labs where the professor would help us get back in the right direction with a problem we were struggling with. I remember a great analogy the professor used "Imagine you are doing the bench press. Our goal is to be your spotter and help you finish your lift". Since then, I learnt how Edinburgh University is trying to help us learn. The goal was for us to work through challenging problems and struggle, while the professors and tutors helped us to get back in the right direction. Phew... That was really tough. I remember how proud I felt after finishing the course and felt improvement and more confidence in my problem-solving skills.
Computer Simulations (20 credits): This course was mainly focused on Object Oriented Programming (OOP) using Python. While a physics course, we didn't have to learn any concepts in Physics to take this course. The weekly classes were mostly about learning Python and OOP features, such as Functions, Loops, Lists, Classes, Inheritance, Polymorphism etc. This was a small class and most of us had prior experience with Python. The course was split into two parts: 5 programming assignments to develop our Python skills and a big project on creating a solar system simulation by launching a satellite probe and calculating its orbit. We had a lot of support and lots of contact hours where the instructors would assist us to complete the project. We also had to write a report explaining the methodologies used in the project. Very interesting course which helped me improve my Python skills.
Object Oriented Programming (OOP) (10 credits): Based on Java, that course is an introduction to OOP and Procedural Programming overall. Topics covered being with the basics of Java, including data types and then if statements, arrays, functions and classes. Given that I come from a programming background, I found the course a breeze, but that was a perfect opportunity to learn Java and improve my OOP skills. The course was slow-paced at the beginning to help all students catch up but sped up during the last few weeks. Weekly assignments were not graded but were perfect to practice my Java skills. The most important part of the course was learning to read and understand documentation. During the exam, there was a small part to which we were expected to learn how to use specific functions from a given documentation. I found this a very interesting way to simulate a realistic scenario as a coder in the industry.
Data and Analysis (10 credits): This course offers the fundamentals of Data Science, by learning how to work with structured, semi-structured, and unstructured data. Topics include relational models, relational algebra, SQL, XML, Statistics (mean, median, Pearson correlation coefficient, chi-squared), cosine similarity, Information Retrieval (precision, recall, F1 score), and Statistical Analysis. That course contained multiple topics and the lectures were made very interesting, thanks to our Prof Ian Stark. I remember that Prof Stark showed us a real example of data relations using Facebook. Nonetheless, was a fun course, however, the exam was pretty challenging during that year.
Life in Edinburgh was indeed very fun. Back then, I was more introverted, meaning that I preferred to stay at home and work on my personal projects than going out with my friends. I remember my friends were often knocking on my door to hang out with them and I was often reluctant as I was working on a personal project. I spent most of my time learning about web, app and game development. I found myself spending hours working on several personal projects including creating a first-person shooter game. I remember that I never finished my projects, as I would find something else more interesting to work on. When I wasn't staring at my screen, I did set time aside to do some interesting activities, such as participating in various events hosted by CompSoc, competing in Hackathons, participating in sports societies such as Athletics and Weightlifting and various programming workshops.
During my first semester, I participated in a workshop from the Robotics Society where I met a master's student who presented us with a project idea of creating cheap upper limb prosthetics using 3D printing. This was an excellent opportunity for me to expand my hardware and electronics skills. I remember that I worked with various concepts using the Arduino microcontroller to learn how it works and how we could use it for creating a prototype of an upper limb. The idea was to use Muscle Sensors to detect the movement of the muscle on the limb and use that to control the fingers by using servo motors to move the fingers. A PhD student joined the team who possessed a lot of knowledge of hardware and Arduino, helping me understand advanced concepts. This project was fun and exposed me to many unfamiliar topics.
During Christmas, I spent most of my time learning and exploring Arduino. A gift my parents bought me during the holidays. I spent countless hours wiring and experimenting with sensors by creating small projects such as light detection, an alarming system using ultrasonic sensors and a simple GPS tracker. The Christmas break lasted for 4 weeks, which was enough time to spend with my family.
The workload of the second semester was more than that of the first semester, so I spent less time working on my personal projects, but some interesting activities included my participation in my first Hackathon, which happened to be the first hardware Hackathon ever hosted in Scotland. On top of that, I kept working with the Augment Bionics team where we made a prototype of an amputated arm using Arduino. We presented our prototype to various students, where I got the chance to present the product in front of multiple students, improving my public speaking skills.
During summer, I decided to take a small break by spending more time with my family. Some students were good enough to land in an internship after their first year of studies. While unheard of, that would have been a great experience, but sadly I didn't. Instead, I spent more time learning various web development frameworks such as Laravel and Symphony in PhP with the goal of developing an advanced blogging website from scratch with an article recommendation system. When I was away from my computer, I did some travelling around my home country, Greece, including the island of Rhodes. It was indeed a fun experience and a way to reflect on all the hard work I did during the first year of my studies.
It was a great year as a first-year student at the University of Edinburgh! I felt I had learnt much more than in my last two years of high school and you will too! Thanks to all the opportunities the School of Informatics has to offer, every student can benefit and do something... great!
If you are still reading my post (well... most likely yes), I would like to leave some tips I would give to everyone who is about to attend this unique institution!