Computer Science Core Curriculum

Computer Science Core Curriculum


Welcome back to Computer Science in 5 minutes
series. In the previous video, we talked about math
classes in a typical computer science curriculum. In this video, we’ll talk about the core computer
science and engineering classes. Let’s start with a very basic class in every
CS curriculum: Introduction to programming. Back in my time, it was more common to start
programming with C and C++, but today many colleges offer this class in Python. Python is pretty intuitive, has a clean syntax,
and is easy to learn, whereas C++ helps you better understand how things work at a level
closer to the hardware. Eventually, you’ll probably learn them both. So, no need to worry whether your program
teaches Python or C++ or some other language first. Another programming class you might have is
object-oriented programming which is almost always taught in Java. Let’s move on to one of the most fundamental
courses in any CS degree: data structures and algorithms, a.k.a. how to pass coding
interviews 101. Many tech companies, especially the big ones
in the San Francisco Bay area, have an obsession with data structures and algorithms at an
unhealthy level. I won’t discuss whether this is the best way
to hire or not but that’s the reality today, so better be prepared. Some universities offer data structures and
algorithms in two separate classes, some call it just algorithms but the contents are more
or less the same. They teach you about data structures, such
as lists, stacks, queues, trees, and graphs. They also cover algorithms to manipulate those
data structures, such as searching and sorting algorithms. One thing that is particularly important is
the algorithm complexity. Make sure to pay extra attention to the big
O notation, which is usually used to measure algorithm complexity and express how fast
a function is growing in terms of execution time. Given the skyrocketing salaries that companies
pay software engineers, you probably wonder what they teach in a Software Engineering
class. It’s probably not what you think it is. It’s not even a coding-heavy class. If your school offers a class named software
engineering, it’ll probably cover useful strategies for software design and project management. You’ll get to know about software life cycle
models, such as waterfall and agile. I don’t think the waterfall model is still
being used though. Everybody nowadays uses agile techniques such
as Scrum. You might also get a bit of object-oriented
programming as a part of a software design project. Let’s talk a bit about hardware classes: circuit
theory, electronics, and digital logic design. Honestly, I don’t remember much about these
classes. Circuit theory was more of a physics class
than computer science. I remember computing the current and voltage
at a particular junction in a circuit. Electronics and logic design was more interesting. We learned about using logic gates such as
AND, OR, and XOR, and to implement certain functions on a physical breadboard, such as
an adder that adds two numbers. I don’t know if it’s still a part of the core
curriculum but computer architecture was also an interesting class. I remember when I took this class I had an
epiphany and came to realize how computers actually work. Before that, I was like, ok, there’s this
code I write and there are circuits and stuff in the computer and somehow it magically runs
when I click compile and run. Computer architecture class demystified all
of that and closed the gap between the hardware and software in my head. If you have a theory-heavy program, you might
also have automata theory in your curriculum. All I remember about automata theory is that
anything that runs on your computer can theoretically run on a Turing machine, given an infinite
amount of tape and patience. Yes, theoretically even GTA5 would run on
a Turing machine but it would be incredibly hard to implement and would take forever even
just to render a single frame. Different schools might have different names
for these classes or lump some of them together in one class or split them into two, but the
topics that are covered are more or less the same. For example concepts like process scheduling,
storage and file organization, network abstractions, data communication protocols, and distributed
and parallel computing can all be taught as a part of classes like Operating Systems,
Database Systems, Computer Networks, Data Communication, and Systems Design. Alright, that’s all for today. In the next video, we will talk about the
electives and which ones you might want to pick before you finish your degree or learn
by yourself. If you liked this video, please subscribe
for more videos. And as always, thanks for watching, stay tuned,
and see you next time.

3 thoughts to “Computer Science Core Curriculum”

Leave a Reply

Your email address will not be published. Required fields are marked *