I just finished my last assignment for my first course in Oregon State’s online computer science program. It was essentially an introduction to computer science and C++.
Topics
- Basic overview of computer architecture
- Expressions and interactivity
- Conditionals
- Loops
- Functions
- Classes and Objects
- Arrays
- Pointers
Assignments
Each week was dedicated to one of the topics above, and each week finished with an assignment in which we applied the programming skills we’d learned. Here are some of the projects I completed as assignments:
- A program which identifies the smallest and largest numbers out of a group input by a user
- A number guessing game
- A hailstone sequencing program
- A program which models the properties and behaviors of a bank account (balance, deposits, withdrawals, etc.)
- A program with multiple classes which calculates the slope and distance of lines
- A tic-tac-toe game
- A multi-class program which models transactions with classes for a store, products, and customers
Side Projects
I also completed a few side-projects over the course of the class, like a program that checks whether a three by three array of integers is a magic square.
Exams
There were two exams. Each one was proctored online through a service called ProctorU, which means that someone in the Philippines watched me take my exam using the webcam on my laptop. I was able to take the exams from the comfort of my living room, which was a dramatic improvement from previous proctored tests I’ve taken in Qatar which meant paying a hundred bucks, taking a day off work, and driving across town to a testing center. ProctorU involved none of that and only cost about twenty bucks.
Study Strategy
My studying strategy went like this: The first thing I’d do each week is the assigned reading. I’d just pick up the textbook, sit out on the couch, and read it through. I wouldn’t take any notes, nor would I type in any code. If there were checkpoint questions I could answer without my computer I’d answer those. Next I’d read the supplementary material on the course website. There are videos, too, but I never felt the need to watch them. Then I’d reread the chapter, this time with my notebook open to take detailed notes. I’d wrap up each week by completing a few of the more challenging exercises at the end of the chapter (focusing mostly on topics that I found difficult) and then the assignment for the week.
Capstone
I’d like to be able to show the code I wrote for the class, but we’re not allowed to post our assignment solutions online. Instead, I decided to assign myself a kind of capstone project. I settled on coding a simplified version of the game Quirkle. I’m not finished yet, but you can see the code on Github.
Difficulty
I found this class pretty easy. Most of it was reviewing material that I’d already covered when I first started programming in Python and Java. Java in particular has a lot in common with C++ (derived from C, strongly typed, similar syntax, etc.). The most difficult part was pointers, which I’d never been exposed to.