Overview of a CS degree

[return]

Introduction

In this article, I will describe in general, the courses required for a 4-year computer science degree. Of course, every program has different requirements, but most share very similar classes. In the case of my alma mater, the University of Pittsburgh, the degree consisted of a five core courses, three upper level courses, around five upper level electives, three math classes, and one capstone class (usually an internship or research).

Core Courses

These courses provide an introduction to computer science. The classes include an intro to programming (usually in Python or Java). This class will cover basics of programming: datatypes, loops, conditions, functions, etc. Note: Depending on your school, you may opt out of this course if you have prior programming experience or have passed the AP Computer Science exam.

Early on you will also take a course on discrete mathematical structures and logic. This class has different names depending on your school, but it provides the essentials for studying computer science as a mathematical discipline. This course generally covers Propositional Logic, Set Theory, counting, probability, and their proofs. These topics are essential for more advanced computer science courses.

Other core courses will introduce concepts related to computer architecture and low-level systems. These classes may teach C and assembly language for the purpose of learning how processors(CPUs) work and the basics of operating systems. A class on computer organization/architecture will cover logical circuits (think Minecraft redstone), and how they are combined to do Arithmetic and Logical Evaluations. This is how the ALU (Arithmetic Logic Unit) works inside a computer's CPU (Central Processing Unit). A systems software/operating system course will describe how programs execute on the OS level. For example, one may study how a C program is compiled from a textfile and transformed to an executable that runs as machine code specific to an operating system. These classes are more important if you are studying computer or electrical engineering, but any software engineer should be aware of these topics.

The remaining courses will cover data structures and algorithms, the true core of computer science. Data structures are a way to store information in a manner that computers can process efficiently. A datastructure can be as simple as storing numbers right next to each other, or as complicated as a relational database. Algorithms are any sets of instructions a computer uses to complete a task. Ultimately Datastructures are thought of first, and algorithms are used in combination to store, search, and modify data in a given datastructure. As a result, data structures influence the design of their corresponding algorithms. Fortunately, many languages abstract data structures and algorithms away from the programmer, however you as an effective programmer need to understand how to analyze them in order to write efficient programs.

Math Courses

Depending on your CS program, a few math courses may be required for your degree. These courses include Calculus (usually 1 and 2), Statistics, and sometimes Linear Algebra. In my case, a Linear Algebra class was not required, but I highly recommend taking one, as Matrix operations are heavily used in CS, especially machine learning and 3D graphics.

Elective Courses

In addition to the core curriculum, your CS department offers elective courses on a variety of topics. These elective courses generally give you an introduction to sub-disciplines within computer science. These sub-disciplines often correlate with a specific line of work within software engineering, for example web-development or quality assurance. These topics include: Software Engineering, Quality Assurance, Cloud Computing, Game Development, Artificial Intelligence, Machine Learning, Computer Vision, Cryptography/Cybersecurity, Computer Graphics, Networking, Parallel computing, Compiler Design, Operating Systems, Web Development. These courses are good for exploring different fields of study within CS, but it is also common to take related electives as a "focus" or "concentration" within a CS degree. For example, if one is interested in AI/ML research, one would take those related courses.

Many colleges also require an internship or research course for a bachelors in CS. If you want to get a job as a software engineer, it is highly recommmended that you try to do as many internships, as you can in order to gain a competitive advantage. The same is also true if you want to be a researcher, but with undergraduate research positions.

Tags

CS