Notes from the course.
This summer I took two courses: Data Structures and Computer Architecture and Assembly Language. This post summarizes my experience with the latter. The material may be slightly different during the fall, winter, and spring terms since they take place over a 10 week (rather than 8 week) term.
I was pretty overwhelmed with doubling my courseload and moving and taking care of my infant daughter, so I actually petitioned to drop this course after the first week. After a few days, though, I had a change of heart and asked that my petition be ignored. The instructor generously allowed me back in the course and even extended the deadline on a quiz that I’d missed.
- Computer architecture
- Representing data
- Procedures and the system stack
- Arrays and parameters
- Floating point data and calculation
- Logic gates
A critical part of any course that introduces a new language or framework is getting everything up and running. Since MASM (Microsoft Macro Assembler) isn’t supported natively on Macs, I had to jump through a few hoops to complete the programming assignments. Namely, VMware Fusion to set up a virtual machine, Windows 10 installed on that virtual machine, and then Microsoft Visual Studio running on Windows 10. You can obtain licenses for those programs for free via Oregon State’s IT website. I also had to install the Irvine32 library. Details on that process are here.
This course was relatively light on the homework. There were five large assignments and no smaller assignments and no group assignments. The five large assignments consisted of writing programs from scratch that accomplished a variety of goals, such as using the Irvine library, validating user input, running nested loops, manipulating arrays, and calling recursive functions.
The assignment directions were very clear and I enjoyed completing them. I especially liked that we were writing programs from scratch instead of filling in someone else’s skeleton code. This goes a long way in helping me understand the material.
There were three types of tests: weekly summary exercises that could be taken twice, two quizzes that could only be taken once, and the midterm and final, which were proctored. I used ProctorU.
The summary exercises and quizzes were open book and open note, so I’d highly recommend taking advantage of those resources. That said, if you have to look up the answer to a question, make sure to make a note of that (or add it to your cheat sheet — see next paragraph) since you won’t have those same resources available on the midterm and final.
On the midterm and final we were allowed a double-sided piece of paper for notes. This was more of a study aid than a test-taking aid (since anything written on the cheat sheet has a way of sticking in my brain), but it was helpful nonetheless. In fact, maybe it would be worthwhile to create a cheat sheet to study for exams even if you weren’t allowed to use it for the exam itself.
I found the study materials to be very helpful, and the text (Irvine) was generally very clear and useful. I would generally do the reading first, and then lectures, and then the assignment and the summary exercises. I took a lot of notes, too, and then toward the end of the term I started using Anki for flashcards.
I didn’t have to look beyond the course materials very much, but when I did, I found these resources helpful:
- Summary and use of the Irvine library functions
- Stack Overflow
- Assembly code table
- Forum dedicated to MASM
Whenever searching online it’s important to not just look for information about Assembly, but about MASM specifically, since different assemblers often do things differently.
Difficulty and Time Commitment
The assignments, summary exercises, and quizzes were all straightforward. The midterm and final were a little more difficult, but largely inline with the rest of the course. I dedicated somewhere between 15 and 20 hours a week to this course.
This was a really great class. Stephen Redfield was kind and helpful and the course materials were very well organized. I wish all courses and instructors in this program would follow Stephen’s example.
The only gripe I had with the course was that we were never given an opportunity to see our midterm and final after grading. I found this frustrating for three reasons. First, knowing what I got wrong on the midterm would’ve been very helpful for studying for the final. Second, the midterm and the final make up 40 percent of our grade and grading mistakes do happen, but if you can’t see the exams you can’t check for mistakes. Finally, this practice is inconsistent with all of the other courses I’ve taken from Oregon State.
All of that said, I understand why the instructor would want to keep an exam private, and the instructor did offer to look over my exam and offer advice on how to improve. Still, I feel like there must be a better way.