Alabhya Jindal

Preparation

The start date of my MSc in Computer Science at the University of Bath is less than a month away!

The current curriculum includes the following units:

Semester 1

Semester 2

Optional Units

I’m most excited about Foundations of computation and Functional programming. I would have also loved to have a class on Compilers.

My goal before the program is to develop a general understanding of all these subjects. I will be focused on two subjects: Mathematics and Functional Programming.

Mathematics

I made progress here by reading Maths: A Student’s Survival Guide by Jenny Olive. Unfortunately, I got stuck and lost interest while working through Chapter 2: Graphs and equations.

I have also enjoyed the first-half Professor Richard Southwell’s lectures on the Modern Foundations of Mathematics.

I felt very distracted juggling materials and reached out to the Department of Computer Science at the University of Bath for suggestions. Dr Fabio Nemetz, a Senior Lecturer in the department, sent me a list of suggested reading for the program. His suggestions included the excellent Helping Engineers Learn Mathematics (HELM) workbooks.

I have starting working through the first workbook on Basic Algebra and I will to complete it in the next 5 days.

I will complete Workbooks 1-3 before my program.

Functional Programming

Functional Programming is very intriguing. It’s at the intersection of computer science and mathematics.

Functional Programming and Purely Functional Languages are two different things. I love using the ideas that originated in FP land in imperative languages such as immutability and higher order functions. But I haven’t reached the stage where I can appreciate the limits imposed by pure FP languages. A for loop seems like such a crucial part of programming.

I started reading the 1st Edition of Introduction to Functional Programming by Richard Bird and Philip Wadler. It’s highly recommended by Professor Graham Hutton and Erik Meijer. Professor Hutton also has an excellent course on YouTube based on his teachings at the University of Nottingham.

I jumped into OCaml and Haskell after reading Chapter 1: Fundamental Concepts. But I feel I’ll get more from reading the book as it focuses on the essence of functional programming without focusing too much on the syntax of a particular language.

I will read Chapters 1-3 before my program.

Programming Languages

I am interested in Programming Languages and their implementations. I wrote a toy parser a few months back. Now I want to study how a more sophisticated language would be implemented.

Crafting Interpreters is a high quality resource. I want to go through it by translating the Java code to Python. This would be a great way to reinforce my learning.

I love this topic. I will determine how much time to spend here after a week of studying the other two subjects.

Da Plan

I suspect I’ll spend about 4 hours a day studying these.