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 creditsSemester 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 creditsSemester 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 creditsYear 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 creditsSemester 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 creditsYear 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 creditsSemester 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 creditsFull 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