What a computer science degree looks like in 2020

Blogging

Lots 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.

Name and link to full course description Some information about the course, including searchable terms where appropriate and the main textbook used.

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

Computation and Logic
  • Propositional and first-order logic
  • Finite state machines
  • Set theory

Textbook: Mathematical Methods in Linuguistics

10 credits
Functional Programming

Introductory 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

Introduction to Linear Algebra
  • Complex numbers
  • Vectors
  • Systems of linear equations
  • Matrices
  • Eigenvalues/eigenvectors

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

20 credits

Semester 2

Object-oriented Programming

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

Data and Analysis
  • SQL/Basic databases
  • XML
  • Text corpora
  • Textbook: Unknown. The lecturer handed out notes for this course

10 credits
Calculus and its Applications

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

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

20 credits

Full Year

Russian Studies (optional)

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

Processing Formal and Natural Languages
  • Natural language processing
  • Hidden Markov Models
  • Grammars

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

20 credits
Introduction to Computer Systems
  • 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
Introduction to Software Engineering
  • Software lifecycle
  • UML
  • Design patterns
  • Intro to testing
  • Version control

Textbook: Software Engineering, Ian Sommerville

10 credits
Discrete Mathematics and Mathematical Reasoning
  • Number systems
  • Proofs by induction
  • Counting (combinatorics)
  • Graphs
  • Trees
  • Discrete probabilities

Textbook: Discrete Mathematics and its Applications, Kenneth Rosen

20 credits

Semester 2

Algorithms, Data Structures, Learning This was actually two courses combined. Firstly the algorithms and data structures component contained:
  • 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
Probability with Applications
  • 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
Reasoning and Agents (optional)
  • 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
Signals and Communications Systems (optional)
  • 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

Professional Issues

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

Informatics Large Practical

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

Computer Design (optional) Course on digital logic and processor design.
  • 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
Introduction to Vision and Robotics (optional)
  • 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

System Design Project

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

Computer Security
  • 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
Operating Systems (optional)
  • 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

Computer Graphics (optional) This was a coursework-only course which is unusual. Most courses have at least 60% of their mark come from an exam. There were three courseworks.
  • 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
Extreme Computing (optional) Course on cloud computing and web-scale technologies.
  • Distributed file systems
  • Virtualisation
  • Fault tolerance
  • Hadoop/MapReduce

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

10 credits
Speech Processing (optional)
  • 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

Computer Communications and Networks (optional)
  • 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
Automatic Speech Recognition (optional)
  • 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
Software Testing (optional)
  • 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

Honours Project

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


Subscribe

No spam, just new posts. Choose what you receive and unsubscribe whenever.

Which posts do you want to receive?