Introduction to Discrete Mathematics for Computer Science Specialisation

Provides an introduction to important concepts that are commonly applied across Computer Science disciplines. Importantly, this specialisation teaches the mathematical ‘language’ used in the scientific field of computing.

  • Institute: UC San Diego & HSE University
  • Prerequisites: CS50
  • Duration: 6 months
  • Effort: 5 hours per week

Algorithms Specialisation

Covers elementary data structures and basic algorithms used to solve ‘classical’ Computer Science problems across four courses. Teaches the larger context in which the algorithms and data structures exist, while providing low-level visibility into the mathematics and implementation.

  • Institute: Stanford
  • Prerequisites: Introduction to Discrete Mathematics for Computer Science Specialisation & Python for Everybody Specialisation
  • Duration: 4 months
  • Effort: 4-6 hours per week

Cryptography I

Cryptography is used across computer science to keep information protected; from sending messages across the internet to storing data securely. This course has some overlap with the Algorithms Specialisation, but focuses on existing real-world applications and some of their mistakes.

  • Institute: Stanford
  • Prerequisites: Introduction to Discrete Mathematics for Computer Science Specialisation
  • Duration: 6 weeks
  • Effort: 3-5 hours per week

Machine Learning

The quintessential course on Machine Learning, covering different kinds of learning and the theory behind them, as well as some best practices. Students learn to implement ML techniques through case studies and practical exercises.

  • Institute: Stanford
  • Prerequisites: Introduction to Discrete Mathematics for Computer Science Specialisation
  • Duration: 10 weeks
  • Effort: 6-8 hours per week

Practice Your Coding Skills

Like any other skill, programming requires practice in order to improve. We recommend you spend a small amount of time every day practicing in your preferred language. The linked website (HackerRank) is a popular platform, but many others are available.

The format of coding practice platforms closely resembles the one of technical interviews at most large tech companies. Being comfortable solving these problems will be crucial for students looking to get a job in the industry.

Join a Community

There are endless online communities focused on different topics, such as: learning programming, working on open‐source projects, or building a startup. Finding a community that shares your objectives is a great way to stay motivated and make your studies more enjoyable.

The linked website, Indie Hackers, is for people building small but profitable projects. However, there are many other resources available depending on your goals; Reddit is usually a good place to start.

Learn New Technologies

Computer Scientists are always learning new things as the industry evolves and new technologies are developed. If you are interested in learning a specific technology (e.g. Deno) or a more general skill (e.g. Deep Learning), the linked resource—hackr.io—allows engineers to list and vote on their favourite resources to learn different topics.

Prepare for Coding Interviews

Technical interviews are difficult. The only way to stand out is to be thoroughly prepared. There are many resources available that break down how to approach these interviews. We have linked one such article, but we highly recommend you spend some time researching and learning about other people’s experiences.

Dive into Web and Mobile Development

Modern full‐stack application development leverages several advanced frameworks and languages, such as React and TypeScript. These technologies help build more complex projects, and are used by some of the largest companies in the world.

The linked course (Full Stack Open) covers the most popular web technologies, relying almost exclusively on JavaScript. This is a good option for students looking to develop their own full‐stack projects.

Learn to Deploy to the Cloud

Managing your own servers used to be a major part of deploying your projects. Nowadays, engineers can use Cloud services such as AWS and Azure to deploy and manage their code.

The linked course focuses on AWS, which is a great option for larger projects or when you want fine‐grain control over your servers (and its costs). Other companies offer services that are easier to set up, such as Heroku or Digital Ocean, but don’t offer as much flexibility.

Specialise in Game Design and Development

The gaming industry is a common destination for Computer Scientists. The linked specialisation teaches the necessary skills to build your own games using Unity. This is a great option for anyone that loves games and is looking to launch a career in the industry.

Become a Data Scientist

Data Science is a popular alternative to Software Engineering. To become a Data Scientist, student will need a more extensive knowledge of statistics than the one offered in this curriculum. The linked specialisation is a good option to bridge the gap, however more statistical education is recommended.

Kaggle is one of the most important communities for aspiring Data Scientists and students looking to learn more about Machine Learning. We recommend joining some of their competitions to get practical experience (and maybe get noticed by an employer or two).