Erin's CS stuff

CS stuff!

Hello World!

You've made it to Computer Science I which means that for some reason you want to tell computers what to do! It may be that you've never coded before, or maybe just once, or maybe all the time, but it's very likely you haven't done much coding in the C programming language. No matter what your experience level is coming into this class, my goal is that all students pass with the same foundational knowledge of core programming concepts and the skills to implement them in C. So let's start by answering that question:

Why C?

The intention of this Introduction to Computer Science course is to prepare students for success in our Computer Science degree program. This class is about more than just learning to code. It's built to introduce an array of topics:

  1. how to solve problems with computers
  2. how to write programs which implement these solutions (software)
  3. how computers work (hardware)

It turns out that the C programming language is actually ideal for teaching all 3 of these kinds of concepts, even though it's less popular nowadays than languages like Java, Python, or even JavaScript. In fact, one could argue that those languages are more popular because they're better than C at hiding how computers work. If you're coming into this class with some experience coding in languages like those listed above, prepare to step down from a higher-level language into one where you have more control over how things are done. 

From an educational standpoint, choosing a language like C allows us to go back to basics. This semester, we'll build most of our code ourselves and rely on very few outside libraries. We'll be covering concepts, such as Pointers and Pass by Address, which make it easier to understand how languages like Python and Java work. It's much easier to move "forward" from C to Java than "backward" from Java to C, so that's where we'll begin!

Why programming languages?

The debate about which programming language is "best" could go on and on! It's important to realize that a programming language is a tool, like any other. Sometimes a hammer is what you need to drive in that nail, sometimes the fat end of a screwdriver will do. But if a programming language is a tool, what is it for? 

Languages are for communicating, right? Then it would be fair to assume that programming languages are for communicating with computers, wouldn't it? Well... Yes and no.

Computers "think" in 1s and 0s or electric "on"s and "off"s, so to speak. They don't understand the keyword while any more than a novice programmer does. In fact, a whole "translation" process has to occur to transform the code written in a programming language all the way down to its corresponding 1s and 0s: a process we'll call "compiling". 

It turns out that programming languages are as much for humans as they are for computers. People think much better with "abstractions" than they do with 1s and 0s. This makes it easier for people to write code but also easier for us to read each other's code. Code is as useful for communicating with people as it is for telling computers what to do. To that end, we'll study the syntax required for the C programming language in addition to conventions and best practices that set up good habits down the road.

Next, we'll explore the "translation" process further and dig in to our Development Environment.