# What a computer science degree looks like in 2020

Mon 25 May 2020 BloggingLots of people who are learning to code ask the question "Should I get a CS degree or do a bootcamp?", or "Is a degree necessary?". I have just finished my degree (not graduated yet), and while I can't give all the answers to these questions, I can share my experience.

In this post I will go into detail about what my degree contained. You can use this information to decide whether university is for you, make your own curriculum, or even just see how the syllabus has changed since you went.

I don't want to tell you to get a degree, and I equally don't want to tell you to not get one. It is a personal choice. However, on the whole I'm very pleased that I went to university. I learned a lot of things that I wouldn't have otherwise, but more importantly, I met lots of great people and had experiences that I couldn't have had in any other setting. The piece of paper that I will get once I graduate is important for the job I chose, but it won't be important for everyone on my course.

Below you will find a list of every module I took in the course of my degree and their content. Not every degree will look like this, I had a lot of elective modules and some universities are more practical than others, but this should give you an idea of what university can offer.

The courses are broken down by year and semester. Each course has the following structure.

Number of credits to give you an idea of how much depth each course has.

This is a Bachelor of Science (Hons) degree from the University of Edinburgh. It is under the Scottish university system, so it is four years long. Each year is composed of two semesters and you need to take 120 credits of courses across these semesters.

**Disclaimer:** This is not a comprehensive guide to the degree program at Edinburgh, if you are looking for that, go to DRPS (Degree Regulations and Programmes of Study). I have tried not to include my opinions of the courses, since it's the syllabus that's important.

With that out the way, here's the full list.

## Year 1

Year 1 had 40 credits free for optional modules. The number of free credits in first year may be higher in Scotland than elsewhere due to Scottish universities doing a four year bachelors degree.

### Semester 1

- Propositional and first-order logic
- Finite state machines
- Set theory

Textbook: Mathematical Methods in Linuguistics

10 creditsIntroductory course on Haskell. Gets as far as monads, but doesn't really address them that thoroughly.

Textbook: Learn you a Haskell for Great Good!

10 credits

- Complex numbers
- Vectors
- Systems of linear equations
- Matrices
- Eigenvalues/eigenvectors

Textbook: 'Linear Algebra, A Modern Introduction' by David Poole

20 credits### Semester 2

Honestly, I didn't really pay attention to this course. It taught introductory Java.

Textbook: 'The Java Tutorial: A Short Course on the Basics' - Raymond Gallardo et al.

10 credits

- SQL/Basic databases
- XML
- Text corpora

Textbook: Unknown. The lecturer handed out notes for this course

Introductory calculus course. It covered single variable integration, differentiation and series.

Textbook: 'Essential Calculus: Early Transcendentals' - James Stewart

20 credits

### Full Year

Russian course for beginners. One of the reasons that I went to university in Scotland was so that I could do languages alongside my degree. Scotland has more of a "liberal arts" system than the rest of the UK.

**40 credits**

## Year 2

Year 2 only had 20 credits free. Bayes Theorem was a big theme in year 2.

### Semester 1

- Natural language processing
- Hidden Markov Models
- Grammars

Textbook: Speech and Language Processing, Jurafsky, D and J. H. Martin

20 credits- Instruction sets and assembly
- C programming
- Basic processor and digital logic design

Textbook: Computer Organisation and Design, D.A. Patterson and J.L. Hennessy

10 credits- Software lifecycle
- UML
- Design patterns
- Intro to testing
- Version control

Textbook: Software Engineering, Ian Sommerville

10 credits- Number systems
- Proofs by induction
- Counting (combinatorics)
- Graphs
- Trees
- Discrete probabilities

Textbook: Discrete Mathematics and its Applications, Kenneth Rosen

20 credits### Semester 2

- Asymptotic notation and algorithms (Big O etc)
- Data structures
- Sorting algorithms
- Graphs

Textbook: Data Structures and Algorithms in Java, Goodrich, M T and Tamassia

The other half of the course was focused on machine learning.- Dimensionality in data (PCA etc)
- Naive Bayes
- Clustering algorithms
- Gaussians
- Neural networks

Textbook: A First Course in Machine Learning - second edition, Simon Rogers and Mark Girolami

20 credits- Combinatorics
- Bayes theorem
- Discrete random variable distributions
- Continuous random variable distributions
- Jointly distributed random variables
- Covariance and correlation
- Discrete Markov chains
- Birth and death processes

Textbook: A First Course in Probability, Sheldon Ross

20 credits- Intelligent agents
- Problem solving through search
- Adversarial search
- Knowledge bases and inference
- First order logic
- Planning
- Bayes Theorem
- Markov decision processes

Textbook: Artificial Intelligence: A Modern Approach, Russell R & Norvig P

20 credits- Types of signals (continuous vs discrete, periodic vs aperiodic etc)
- Power and energy
- Fourier analysis
- Convolution
- Nyquist's sampling theorem
- Modulation techniques (OOK, FSK, PSK)
- Multiplexing (FDM and TDM)
- Information theory

Textbook: Digital Signal Processing, John G. Proakis & Dimitris G. Manolakis

10 credits## Year 3

Year 3 was the first honours year, and so courses start to get more specific in comparison to the foundational courses of years 1 and 2. It had 50 free credits

### Semester 1

This course was focused on "soft" skills such as ethical, legal and financial issues for software development businesses.

Textbook: Professional Issues in Information Technology, Frank Bott

10 credits

This was a project course that required students to build an Android game. There was a specification, but some room for creativity. My code from this course is on GitHub

No textbook

20 credits

- Combinatorial logic
- Sequential logic
- Processor design
- Memory system design
- I/O controller design
- Synchronisation issues
- RISC

Textbook: 'Computer Organization', V. C. Hamacher, Z. G. Vranesic & S. G. Zaky

20 credits- Robotic actuators and sensors
- Control theory
- Image thresholding, filtering and classification
- Active vision and attention

Textbook: Russell & Norvig Chapters 24 & 25 in Artificial Intelligence: A Modern Approach

10 credits### Semester 2

This was a group project to build a lego robot with the theme of "assistive technology". My team chose to build a chess-playing robot to enable disabled players to compete in tournaments more easily. See the Deeper Blue GitHub organisation for more details.

No textbook

20 credits

- Network security
- Usable security (the human factor)
- Symmetric and asymmetric ciphers
- MACs and hash functions
- Digital signatures
- SSL/TLS
- TOR
- OS Security
- Web security

Textbook: Introduction to Computer Security, Michael Goodrich and Robert Tamassia Pearson

20 credits- Process management
- Resource allocation and deadlocks
- The Kernel
- Memory management (virtual memory, paging etc)
- Scheduling
- File management

Textbook: 'Operating Systems, Internals and Design Principles', W. Stallings

20 credits## Year 4

Year 4 really frees up with 80 credits for optional courses. Of course, most of these credits have to be spent in the area of computer science unlike years 1 and 2.

### Semester 1

- Compositing using Blender, PBRT and Gimp
- Build a raytracer
- Implement a new sampling method and material in PBRT

Textbook: 'Physically Based Rendering', Matt Pharr, Greg Humphreys & Wenzel Jakob

10 credits- Distributed file systems
- Virtualisation
- Fault tolerance
- Hadoop/MapReduce

Textbook: Data Intensive Text Processing with MapReduce, Jimmy Linn & Chris Dyer

10 credits- Speech signals (source-filter model)
- Text processing (POS tagging, expanding abbreviations etc)
- Pronunciation (letter-to-sound models, prosody prediction)
- Waveform generation in speech synthesis
- Speech recognition features
- Hidden Markov models

Textbook: Speech and Language Processing, Jurafsky, D and J. H. Martin

20 credits### Semester 2

- The Internet layer model
- UDP and TCP
- IP
- Routing algorithms
- Link layer protocols
- Software defined networking

Textbook: Computer Networking: A Top-Down Approach, J. F. Kurose and K. W. Ross

20 credits- Gaussian mixture models
- EM algorithm
- Hidden Markov models
- Speech signal analysis and features
- Context dependent modelling
- Hybrid HMM/DNN systems
- Large vocabulary ASR
- TDNN and LSTM architectures
- Speaker adaptation
- Multi-lingual speech recognition
- Speaker verification and diarization

Textbook: Speech and Language Processing, Jurafsky, D and J. H. Martin

10 credits- Unit testing
- Combinatorial testing
- Structural testing
- Coverage
- Mutation testing
- TDD
- Regression testing

Textbook: Software Testing and Analysis: Process, Principles and Techniques, Pezze and Young

10 credits### Full Year

This is the course that represents our undergraduate dissertation. At the end of third year, you have to produce a preference list of five topics from around 300 or you can propose your own. You then get assigned a topic and a supervisor and work on it through fourth year. Mine was on Kubernetes and mobile networks. You can read it here.

40 credits