# Discrete Structures (CS 225)

I recently finished taking Discrete Structures, my second course in Oregon State University’s post-baccalaureate computer science program. This is a math course, what most universities would call discrete math. There was no programming involved, although the textbook and lectures occasionally explained how topics related to computing.

## Course structure

Topics covered were:

- Logic
- Proofs: direct, contrapositive, contradiction, induction
- Set theory
- Sequences and summations
- Counting rules, permutations, and combinations
- Graphs and the shortest path problem

Each week consisted of two lessons, and each lesson would have some assigned reading, some video lectures, and an assignment. Both lessons were due Sunday night each week. There would be a short quiz on the previous week’s material due Monday. For example, week 1’s quiz was due the day after week 2’s assignments were. There were two proctored exams: a final and a midterm.

I think the class was organized well, the workload was manageable, and the assessments were fair. Expectations were made clear. The amount of reading was what I would expect for a 4-credit course. The homework assignments were short, which I appreciated. The textbook has many more problems than what were assigned for homework, so it’s easy to find extra practice if you need more than the assigned homework. The exams are graded leniently in that if you solve the problem using the right approach, but make an algebra error, the graders give you most of the points. However, you won’t get a good grade if you don’t understand the concepts.

The only thing I would criticize is that the course materials could be more polished. The lecturer in the videos makes some mistakes that aren’t edited out, and their handwriting can be hard to read. Sometimes they gloss over steps when doing complicated algebra, making it tricky to follow along. And in the tests and quizzes we were sometimes required to translate English sentences into formal logic notation, but some of these sentences were awkwardly phrased enough than I found it hard to understand what the intended meaning was. These could be improved with professional copyediting.

## My experience

Before the course started, I wasn’t exactly excited about taking a math class that would involve zero coding, but I was interested. I like math in general, and the name ‘Discrete Structures’ had an air of mystery to me.

In the end the class turned out to be a bit of a drag. I can’t criticize the teaching; the subject was simply not my thing. Unlike coding, which is intrinsically rewarding to me, I did not find the sorts of problems we had to answer rewarding to solve. When the material was easy, I was bored, and when it was difficult, I slogged through it.

Looking back on the semester, though, I’d say it was a pretty good one. I indulged in a lot of productive procrastination: I started learning Elixir, wrote blog posts about Elixir and Git, gave a lightning talk about Jekyll, and did a lot of technical work on my blog. I even read a book that’s not related to computing in any way.

Another plus was that I learned a bit about LaTex. This is a markup language that allows you to format math expressions attractively. I used this to type the homework assignments about summations. It was fun at first, though tedious when I had to do a lot of the same type of problem over and over. I’m glad I’ve been exposed to it. I even used KaTeX, a JavaScript library for rendering LaTeX on web pages, in a recent project at work.

## My advice to students

Make sure your algebra skills are fresh going into the course. Practice with Khan Academy or ALEKS if you need to. Important skills include order of operations, factoring polynomial expressions, and manipulating exponents and factorials.

Other than that, just do the assignments and you will be successful. Do the reading and watch the videos. Ideally, do all the blue problems in the textbook for extra practice. The questions in the exams are similar to the ones in the homework.

Homework assignments are allowed to be typed or handwritten and scanned, but you have to type on the exams. It can be tricky because there are a lot of special symbols involved. I followed the advice of other students and typed all of my assignments so that I would be used to it when the time came for the exams. This is good advice.

Consider doing quizzes at the last minute so as to maximize the effect of spaced repetition. 😉

## What’s next for me

If you read my last post about OSU, I said that I was going to be taking Web Development alongside Discrete Structures. I did register, but I ended up dropping it in the first week. My thinking was that while I could manage both courses, I would enjoy Discrete Structures a lot more if I wasn’t taking another class at the same time. Even though I ended up not enjoying the class very much anyway, this was the right decision. I’m really glad I had time for plenty of self-directed learning this quarter. So going forward, I plan to only do one class as a time.

The Spring quarter starts Monday, and I’m taking Computer Architecture and Assembly Language. I’m really excited about this one! Students say it’s a great course. I enjoyed learning C++ a lot because it helped me understand how computers work on a lower lever compared to the Ruby development I normally do, so assembly language should be a real treat.