Skip to content

This is a guide book designed to provide information and help for St Andrews CS students that want to find and secure technology internships.

Notifications You must be signed in to change notification settings

st-andrews-computer-science/The-St-Andrews-CS-Bible

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 

Repository files navigation

The St Andrews CS Bible

A Bible on how to ace interviews for CS students living in the bubble

Table of Contents

Welcome

back to top

Welcome to "The St Andrews CS Bible". This is a comprehensive guide on how to ace internships/jobs interviews and a bit more, written by students for students.

If you are a student and want to intern or work in Technology, you will probably have already heard about the fact that it is a pretty specific field and, in order to get a job, you need to show a different set of skills and go through quite a different screening and interview process than someone who applies for a job in any other field.

The main goal of this guide is to help you, in particular the students of St Andrews, to discover new opportunities from your peers and St Andrews Computer Science alumni and learn how to approach and achieve the goal of getting a job in your dream company. Usually, it is all about improving your CV and practising solving problems which are typically offered in a technical interview. We will cover all of this and more in this book.

You can find the PDF version of this guide at this link.

Who is doing this?

St Andrews Computer Science students (from BSc to PhD). Contributions are more than welcome. You can contributed in the following ways:

  • write chapters/sections
  • help us improve terrible awesome English
  • add suggestions and opinions
  • add your own experience

Check the contribution guide for more info on how to do so.

We want this document to be a live and ever-growing helper created by people who can share their experience and knowledge!

Terms of Use

"The St Andrews CS Bible" is not an official book of The University of St Andrews. We do not take any responsibility and we are not liable for any damage caused through use of this guide/book/bible.

Internships

back to top

What is an internship?

An internship is usually a temporary job position which can last from just several weeks to a couple of years. Most of the internships in Computer Science are paid (unlike other areas!). Why do companies hire interns?

Internships give both companies and young professionals a chance to get to know each other better. The students get experience in a certain company before applying there for a full-time position and, therefore, they have time to learn what it is really like working in that company and in that area in general. The companies, on the other hand, get to know you better and can make a very informed decision whether you have the right skills, potential and mindset to earn a full-time position. Internships are their way to invest in future workforce, diversify the workplace, minimise training and development costs and fast-forward the recruitment process. Are there entry requirements for internship positions?

In major companies, the number of applicants per intern place is probably similar, if not higher, than the competition per full-time position. Normally, companies will have some eligibility criteria for the incoming interns. For example, some internships will be only open to current students in their penultimate year of studies and will normally happen over the summer while the others are only open to graduate students.

Why should I do an internship?

There are tons of reasons why you should do an internship. First, it provides you with an immense amount of experience which is impossible to get directly from academia. In addition to that, it drastically improves your CV which you will use to get full-time jobs after you graduate from university.

Also, an internship gives you a better insight of how the company or an industry in general operates. You get to learn about what projects they work on, technologies they use, their work culture etc. Sometimes an internship can change your opinion about a company so much that it will affect the choice of your graduate position!

Another advantage is the fact that if you perform well during your internship, the company might give you a job offer, which in some cases makes it much easier to get a job offer using an internship as a stepping stone rather than directly applying for a graduate position.

There's a company I would love to intern at. How do I get started?

Find all the info about the whole application process here.

Big companies vs Small ones

Getting an Internship

back to top

The application process

Where can I find internships?

Companies have information about open internship positions on their websites as well as platforms like:

Read your emails (expecially the ones coming from the school), the school blog and talk to people. You could find opportunities within the school or by talking to people at events.

Scotland has also a large pool of tech companies. Check the Scottich Tech Map for a good list of such companies.

How do I get started?

First: work hard on your degree and try to get good grades, possibly a first. It will a major factor when looking for a job in the future.

Even before you start applying for an internship: start practising sample interview problems, expand your knowledge, participate in competitions and hackathons.

Once you know what company to apply for: see what they want and compare it to what you can offer at the moment. You might need no learn something on your own or get more practice. Again, practice interview questions no matter what. You will need to polish up your CV or write it if you haven't written it yet.

Once you have applied, keep practising the interview questions. It is really the crucial part of the process.

When do I start?

Different companies will have different application deadlines but a good idea would be to start as early as possible. Some companies open their applications in summer while the generally the interviews will happen in autumn. Although this varies from company to company.

What to expect during the selection process?

The first stage of the application process, where the CVs are screened, is also the last one for a lot of applicants. You should put a considerable amount of effort to make your CV look special, string and convincing. To see more information about how to write your CV, go here.

How do I boost my chances of getting an interview?

First of all, you have to convince whoever you want to hire you immediately that you are good at what you're doing. Most often the first point of contact with a company is through your CV. It means that you should make it look amazing. For more advice on CV-writing, read the appropriate chapter.

Secondly, there are a lot of other ways how you can keep your online presence. The most popular is, LinkedIn. It is a good idea to have an account there and keep it up-to-date. LinkedIn profile can act as a preview to your CV.

What should I expect at a programming interview?

Read more on how to handle an interview here

I tried, and tried, and tried, but still couldn’t get anything

First, whenever you get rejected by a company, you should always ask them to give you some sort of a feedback. This won't always happen, but when it does, it can give you the valuable information about what needs improvement which you can later use.

Second, depending on the stage of the application process you were rejected at, you might want to improve either your CV, or practice more with the coding interview problems, or do more mock non-technical interviews which are also quite important.

Graduate Jobs

back to top

Read more on how to handle an interview here

Writing a CV

back to top

Examples

Bad and good examples

Resources

A list of useful books and online resources

Ace the interview

back to top

Dressing code

We are computer scientists...but that does not mean that you should dress like a bag of trash for your interview. You want to feel confortable and not too tight.

Behaviour

Technical interview

How should I prepare?

What skills are required?

How is it going to happen?

Companies do it in all sort of different ways, but generally, the schedule will be roughly the same. Your technical interview will last about an hour. You will most probably be asked to write a function, or, in some cases, more than just function. If you are doing the in-site interview, it will be on a whiteboard. If it is a Skype interview, you will be asked to do it in a text document which will be shared between you and the interviewer so they can see in live mode what you are doing.

After introducing themselves, the interviewer will describe a problem to you. The question is likely to be quite vague to encourage you to ask questions. You should do it, the interviewer is expecting them! It shows that you understand the question and a lot of your knowledge as well. If you do not understand the question at all, ask for more details. Sometimes having some examples will help you understand what is needed.

Take some ten seconds to think, but maybe it is even better if you do the thinking aloud because that gives the interviewer a lot of information about your thought process, unlike silence, which gives them nothing. And don't be afraid of thinking aloud - it is not bad if your initial thought is incorrect or naive as long as it progresses after that! Once you have an idea about how you are going to solve the problem, say it aloud to the interviewer. If it is incorrect, they will tell you that and try to help you direct your thoughts into the right direction.

Only after you have a good idea about how you are going to solve your problem should you start writing. If you are writing on a whiteboard, use your space wisely and start writing in the top left corner, but also leave some space between the lines in case you forget something.

Once you have finished writing, run through your solution for syntax errors and then run through it again with some edge case scenario to make sure it works correctly.

The interviewer might ask you questions about your solutions (e.g. the complexity of your solution) or challenge it, or build the next task on top of what you have already built.

Finally, in the end you will likely have time to ask your questions, which is also quite an important part of an interview, so you should think in advance about these questions.

How can I expand my knowledge?

This is a very good question. You may have prepared a lot for your interview by coding BFS hundreds of times, but that is not enough sometimes. Employers like to see people who are into computer science. They like it a lot.

What does it take to be into computer science? Passion, commitment and patience. First of all, you need to love what you do. It is okay to be bored, annoyed, tired sometimes, but you should like doing computer science: solving problems, doing some coding, thinking of new solutions to problems, understanding how systems work and so on. You should then be committed and have patience. There are no shortcuts, you need to study, read, listen, work hard on improving yourself.

There are different ways to learn more. Here is a short (in no particular order) list:

Feel free to copy this list or just start making your own! None would expect you to read all those blogs or listen that many podcasts. However, it is a good idea to check them from time to time. This is not just about being great for the interview, but also doing great once you are working. Computer Science evolves at a very fast pace, so make sure that you do not fall behind.

Resources

This is a list of books and online resources that may come handy when preparing for an interview.

St Andrews Resources

back to top

We have setup a coding competition platform for the school. Sign up to CodeWars.com and set your clan to "University of St Andrews" (note: no dot). Good luck!

Past Interns

back to top

Simone Ivan Conte (Adobe - Summer 2013)

Q: How did you find out about the opportunity ?
A: I found out about this internship through the School of Computer Science Blog.

Q: How did you apply ?
A: The first process involved sending a CV with a covering letter. 

Q: How were you selected ?
A: After sending the CV (see above), I got an answer by email in order to schedule a phone interview.   
After 2-3 days I was contacted for an on-site interview at their office in Edinburgh. 

The phone interview was mainly about my career plans and my computer science related interests and skills.   
I was also asked some technical questions, which did not require coding or algorithms. 

The on-site interview was split into three sub-interviews of about 40-60 minutes each.   
The main topics of the interviews were problem solving, past projects critical discussions and  
software engineering (Agile, TDD, Scrum, etc)

Q: Why were you successful?
A: Being passionate is what probably helped me to be successful the most.  
This was my first experience in industry and the the first impact was hard. What matters is not giving up. 

The good amount of work and deadlines at University has also helped me to handle the stress.

Q: What skills/ knowledge from your degree have you found particularly helpful in this role?

A: 
- Software Engineering and JH Team Project have helped me with group work.
- Data structures, algorithms, OOP (sub-hons), networks. 
- Being able to quickly switch from one programming language to another. Flexibility is a skill that I learned especially in honours years. 

Q: What have you been doing?
A: I have been working mainly on two projects. The first one involved optimising high performance general   
networking library for one of their main products.  
The second project involved prototyping a new algorithms for another one of their main products. 

I was working on both projects at the same time, giving priority to the first one since the code was actually to be pushed to production. 

I was supervised by a Senior Computer Scientist. The projects also involved working closely to different teams in the office. 

The environment at work was very friendly. Everyone was willing to help and discuss problems. 

Some social events were also organized (i.e. a night at the Fringe festival). 

Q: What are the main things you have gained from this experience?
A: Confidence, team work communication, and being able to work on a large project. 
I also improved my skills in C++ and learned Objective-C. 

Edinburgh is a wonderful place, especially during the summer.

About

This is a guide book designed to provide information and help for St Andrews CS students that want to find and secure technology internships.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published