Top

CSC258H: Computer Organization

Thank you to Prof. Steve Engels for providing this information!

So, what exactly IS CSC258H1??

CSC 258 is about teaching computer hardware, understanding the actual machine that programs run on. Without being able to understand the machine, so many of the behaviors of your programs, or of computers in general, just seem mystical. What this course does is show how you would build a machine, from electrical properties, to making gates, and then devices. And then how to use those to build an actual microprocessor. It provides the basis for all of our systems courses.

Keys to Success!

  • KEEP UP! Every layer builds upon the layer before, so if you take a moment to focus on another course at the expense of this one, it's almost punishing to come back to it.

  • Everything is going to be new, so you have to ask for help. Saying, I worked on this for six hours, is not a measure of how difficult a task was but a measure of your approach.

  • CSC258 teaches that the trial-and-error approach is not going to work for you. Go to office hours! You have to speak to your professor who can help explain the material.

  • Students say: “I would say to succeed, you really have to understand the output from ModelSim on your Verilog code. Since you cannot ‘execute' your code directly on the machine, knowing how to read the ModelSim output to debug your code is crucial.”

How is CSC258H1 going to help me?

  • This is supposed to be the course that helps OTHER courses make sense. So, start with a clean slate and be incredibly open about everything that you're learning.

  • With computers, there is this almost a fascination with this box that had seemed inscrutable, a magical device. But with CSC258H1 suddenly everything becomes clear, and you understand what's going on. Use this as inspiration for going into a career in systems.

  • Students say: “[It’s great to learn] a little about the hardware side of things. After learning so much about the software and code, it's amazing to get a new perspective and learn a little about the hardware. I have definitely been able to broaden my perspective after taking this.”

  • Students say: “CSC258H1 is interesting because its connections to other CSC courses is not as obvious as the other CSC 200-level courses. However, I think that the knowledge of how a bunch of logic gates can form complex programs (to the point where we made Atari Breakout) using Verilog can allow for a better appreciation of computing.”

How will CSC258H assignments help me learn?

Because we're talking about machines, this is very different from any other course so it’s important for students to stop trying to use what they've learned before in order to understand the material. While it's tempting for most people to try to connect new concepts to old ones, that doesn't work here because we are teaching something completely new.

We show how programming languages behave in certain specific ways. While in first- and second-year courses students learn what the rules are, in this course they understand WHY they behave that way. The reasons why you program in a particular way are based off the underlying hardware and this connection is made clearer.

Because of the nature of computer hardware, it is layers of knowledge. You learn about electricity in order to build the gates and then you learn about the gates to build the devices, etc. We start off with basic ideas and then each layer is a different bit of technology that shows up in the lab until we get to the top level where, for e.g., we're just going to give you a full circuit. We're going to teach you how to control it, so that you send signals to be able to operate it like a puppet to make it do the things you program it to do.

A few last words from the instructor:

  • CSC258H1 really breaks some preconceived notions of what computer science is. Whereas other courses will help further students’ first-year knowledge, this course introduces something completely out of left field. Some students absolutely love it because it's fascinating.

  • Students say this course is non-stop and it's true. It needs your attention in order to make sure you don't fall behind. And yes, it’s so easy to fall behind.

  • At the end of the course, I get to say, in 12 weeks we learned everything from how electricity works to how to program your own microprocessor. Helping students understand the tangible nature of how to make things work, that feeling of satisfaction, is why I like doing this.

CSC258H is a prerequisite for...

  • CSC367H1 — Parallel Programming

  • CSC369H1 — Operating Systems

  • CSC385H1 — Microprocessor Systems

  • CSC458H1 — Computer Networking Systems

  • CSC488H1 — Compilers and Interpreters