Class Report: Discrete Structures (CS 225)


Notes. Miquelrius grid notebook and Marvy LePen pens. A page of my notes. Miquelrius grid notebook and Marvy LePen pens.

A few weeks ago I completed my third course in Oregon State’s computer science program. It was on discrete math, which has many applications in computer science.

Instructor

Samina Ehsan

Topics

  • Logical equivalence and conditionals
  • Direct proofs and proof by contraposition
  • Proof by contradiction
  • Set theory and set operations
  • Sequences and sums
  • Weak and strong induction
  • Recursion and structural induction
  • Counting rules and the pigeonhole principle
  • Permutations and combinations
  • Connectivity, graphs, and trees, and shortest path problems

Assignments

Each week of the course focused (roughly) on one of the bullet points above. Rather than being project-based, like my two previous courses in the program, the assignments for this course consisted of answering questions from the textbook.

I completed the first assignment using LaTeX (which I just learned is pronounced LAH-tek) but found that I was spending more time perfecting the formatting than learning the course material. After that I switched to writing my assignments by hand.

Exams

I found the exams for this course a little bit frustrating. I ran out of time on the midterm and was only able to write down the beginning of an answer for the last two questions, 20 percent of the entire exam. As soon as the exam was over I wrote an email to the professor, Samina Ehsan, explaining why I felt like there wasn’t enough time provided on the final exam. She never wrote back, but I soon found out that I’d received a 99 percent on the test, even being given full credit for the problems that I hadn’t answered completely. I was relieved to find that my grade wouldn’t tank because of my poor performance, but I was also a little bit frustrated at the combination of “not enough time to finish” with “easy grading.” I’d much rather have enough time to take a difficult test. I’m sure I’d learn more in the process, too.

I didn’t want to depend on easy grading for the final, too, so I studied even harder and ended up finishing all of the problems with time to spare. Still, the grading was harder and ended up earning a 95 percent, lower than my midterm score. But I had enough time to work through each problem, so I’m happy.

Study Strategy

I’m a big believer in flashcards, so when I started this course I spent a lot of time translating the reading onto little yellow pieces of paper. What’s the difference between contraposition and contradiction? Union and intersection? I soon found that almost all of the information I’d been committing to memory via flashcard was given for free on the exams, so I stopped making and studying flashcards.

No flashcards, then, but I’m still a great believer in the power of note-taking (those are my notes at the top of this post). So, my study strategy consisted of doing the assigned reading, highlighting the important parts (or at least what I thought was important) and then going back through a day or two later and copying the important parts down into my notebook.

The professor recommended completing all of the problems at the end of each chapter, but this would’ve taken hours that I didn’t have. I found that I gained a good handle on the material by doing the assigned problems. If I found an assigned problem too hard at first, I’d do a few easier problems to prepare for it.

When it came time to study for the test I reviewed old quizzes and solved problems from the textbook that I hadn’t already done. Professor Ehsan provided practice quizzes (in addition to the graded ones) that I could take as many times as I wanted. This was an invaluable resource.

Difficulty

I found the material in this course more challenging than what I’d encountered in CS 161 and CS 162, which I’d taken in the previous two terms. That said, I think the time commitment was lower (around 12 hours per week) because I wasn’t spending hours setting up my programming environment or tracking down bugs in my code.

Enjoyment

I don’t usually include a section on how much I enjoyed a class, but I feel like I should start. Even though there’s a reasonably good chance I’ll never use this material (as was pointed out by a computer science professor I happened to sit next to on a plane), I still found the material very engaging. The two parts I enjoyed the most were on logical statements (because I love hearing and breaking down arguments and logic) and graphs and trees (because of how they help me visualize abstract concepts).

Final Grade: A