CS 2110, the bane of every CS kid’s existence… If you read my last two class reviews, you may think that I am not capable of writing a positive review, but today I prove you wrong. Although the class is time consuming, CS 2110 is possibly the most valuable class that I have taken so far.
Before I took this class, I knew that computers ran on 1′s and 0′s, but I was pretty embarrassed as a CS major because I had absolutely no idea how this was possible. Using programs like photoshop and programming in high level languages, I was utterly perplexed about how these things could ever simplify down to binary. After taking CS 2110, I could probably write programs in 1′s and 0′s. Obviously this would be miserable, but I think it’s pretty cool that I could do it if I had to.
Another great thing about this class is that towards the end of the semester we get to write Game Boy games! I enjoyed this a lot. It is rare to get the chance to do things in a college class that your 8 year-old self would also think is cool. Here are the games that I made for my homework:
This class teaches you how computers work. You start out with just transistors and build on that until you get to C. So when you finally get to C, you know how it does all of its magic… you know what pointers are because you know what its doing in assembly, you know how to smash a stack because you understand the calling convention, etc. Here’s a basic outline of the course:
- Binary/octal/hex conversions, 2′s complement numbers, floating-point numbers
- Digital Logic
- AND gates, OR gates, decoders, multiplexors, etc
- We use logisimto draw out the circuits.
- State Machines
- Memory, Karnaugh maps
- LC3 Datapath/Assembly
- IO, stacks, recursion
- This is where the class starts speeding up, so try not to get behind here.
- This is also the point in the class where Linux is required. Any distro will do. If you don’t have it yet, I suggest setting it up early so you can get used to it before you have to use it in class.
- C Programming
- Game Boy development, DMA, linked lists, stack smashing
You will have a total of 6700 points in this class. This includes:
- 8 quizzes worth 200 points
- 20 labs worth 10 points
- These are done in the lab period and are not worth much, but you should do them because it helps you learn the new material and the TA’s are there to answer questions.
- 6 timed labs worth 250 points
- Timed labs are worth a lot. You are given a project that you have to code during the lab period. People stress out about these more than quizzes, but in my experience, they are much easier. Think of it as a quiz where you can test everything to make sure it is right.
- 13 homework assignments worth 100 points (except the last one is 200 points)
- Homework is not worth that much considering how long they take. You may be tempted to skimp on the homework, but this will most likely bring your grade down in quizzes/labs as well. You learn how to program by coding stuff, not reading books, so do your homework. Plus, homework is the fun part, although it might not seem that way in the moment.
- Final exam worth 2000 points
- Start on homework early – You may have gotten through 1331 and 1332 by starting homework the night that it’s due, but you will probably have to break that habit to do well in 2110. You might be able to get by the first couple of weeks, but the homework in 2110 is not a strait forward and laid out for you as it was in 1331 and 1332. You will most likely have questions, and if you wait until the minute, it is harder to find people to answer them. Trust me, this class is so much less stressful if you don’t procrastinate.
- Talk to your TA’s – (before the day that your homework is due). The TA’s are really smart and have office hours where they can transfer some of their smartness to you. Brandon Whitehead has been a TA for this class for eons, has a photographic memory, and knows everything you could ever want to know. People think he is intimidating, and yes, he could probably pick you up and throw you through a window with little effort, but he is not going to do that. He is actually very nice and has negotiated with the professors on behalf of the students about extending due dates when necessary. So be nice to him.
- Work with people in your class – Just like the TA’s, your classmates can help you a lot. There are usually a couple people working on 2110 at any given time in the coc. Just don’t be that person that is always behind asking for help. You should know what you are doing enough of the time to help other people too.
- Go to class – class is actually really helpful, and if you take it with Bill Leahy it will be fun. From what I gather, Bill also does improv comedy. He is super funny and always comes up with the craziest stories to describe the concepts that we are learning. If you cannot get the class with Bill, I have also heard good things about Tom Conte who taught the other section.