Tuesday, June 13, 2017

Reflections on a Minor Equivalent in Computer Science

The summer of freedom has begun! I hope that this post can serve as some kind of explanation to all of my friends who have been snubbed over the last 9 months. My bad guys. =( I blame my overactive Dreams, but also the University of Maryland Global Campus for letting me follow through on those Dreams. When I initially determined my goals, I realized that if I were to undertake advanced education then the pre-requisites are also going to include education in some fashion, be that community college or online courses. So rather than exploit free resources for the love of self-learning as I have a tendency to do, I researched graduate schools and analyzed the commonalities in educational history that they were looking for, settling on 8 courses that would fulfill their requirements. In other words, the goal was to build a core competency for computer science on par with other prospective master's degree students who already have a CS degree.

My Strategy

I chose UMGC for its online convenience and fast-pace calendar, and carefully planned each semester so that it would logically fulfill the requirements of the following semesters until all 8 courses were completed:

2016 Fall Online Session 1 (8/22-10/16)
  1. MATH 140: Calculus I (4 credits)
    1. Pre-reqs: MATH 108 or MATH 115
    2. aka Pre Calc (passed AP exam in high school)
  2. CMIS 310: Computer Systems and Architecture (3)
    1. Pre-reqsCMIS 115, CMIS 125, or CMIS 141
    2. aka Java proficiency
2016 Fall Online Session 4 (10/24-12/18)
2017 Spring Online Session 1 (01/09-03/05)
  1. MATH 141: Calculus II (4)
    1. Pre-req: MATH 140
  2. CMSC 350: Data Structures and Analysis (3)
    1. Pre-reqs: CMSC 150 and CMIS 242
    2. aka Java proficiency
2017 Spring Online Session 4 (03/13-05/07)
  1. CMSC 330: Advanced Programming Languages (3)
    1. Pre-req: CMSC 230 or CMSC 350
  2. CMSC 451: Design and Analysis of Computer Algorithms (3)
    1. Pre-reqs: CMSC 150 and CMSC 350 (or 230)

Between August 22nd, 2016 and May 7th, 2017 I spent $8,073 in tuition (+$50 application fee) and god knows how many hours on STUDYING (bleh) math and computer science. You may wonder why I didn't just get another degree. In fact, the CS minor at UMGC (most likely removed since this writing) can be obtained by taking CMIS 141: Introductory Programming and CMIS 242: Intermediate Programming (I tested out of both) and 9 credits at the 300-level (count 'em). I decided at the outset not to waste energy on a minor if my ultimate goal is a master's. Turns out that getting a minor is only possible if I were to go back for another bachelor's degree anyway; thus, I'll be placing "Minor Equivalent in Computer Science" on my resume, thank you very much.

In order to test out of Introductory Programming for a 300-level computer science course right off the bat, I squeezed in about 44 hours during my IT certification phase to learn some Java and prove to the program chair for the computer science department that I was worthy. I also gave some thought as to how I would handle such radically new material, and came up with a method to best learn and commit to memory: Step 1: Understand (simplify), Step 2: Apply (projects), Step 3: Memorize (SRS/Anki). I was looking forward to a semester of growth, convinced that while working full-time, starting school again, fulfilling obligations as a husband, and being an adult, I would also find the time to look for a new job... and practice a little extra programming on the side, of course.

Well comrades, suffice to say I am not a wizard, 'arry. As it happens, taking two courses simultaneously at UMGC for 8-week mini-semesters makes me a full-time student, and the workload shows. Since my wife was working on her MBA through UMGC full-time as well, this amounted to a stressful household and "obligations" started getting shaved. One of the first things to go was my full learning method, though I managed to more or less follow Step 1: Understand (simplify) by focusing on interesting material and expanding with my own research where necessary, taking plenty of learning-based notes by hand in my composition book and brainstorming projects on my white board. I ultimately came up with the following schedule to keep myself sane:

  • Monday-Wednesday: Textbook readings, videos, PowerPoints, etc.
  • Thursday: Weekly discussion posts and participation
  • Friday: Off
  • Saturday: Homework at the library or Starbucks
  • Sunday: Study and prep
  • Throughout: Projects when applicable


Course Impressions

As the semesters progressed, I took plenty of notes on course feedback that I eventually posted on course surveys and, of course, Rate My Professors. My overall impression can be summed up as, "online courses for the motivated self-learner, but lacking quality control in teaching and student interaction." I was surprised to find that almost none of the learning comes directly from the professor, such as with video lectures (one course had a couple of short videos, but were of very poor quality). The material originated almost entirely from textbook pdfs, videos from other websites, and PowerPoints created by some unknown professor of years past. While the textbooks were all free, I still feel entitled to complain that the vast majority were either outdated, downright boring, or both. I soon realized the value of StackOverflow, YouTube, and Khan Academy to provide more concise, interesting instruction.

I never had group projects (thank god), but the online courses utilized discussion posts to encourage student interaction and to provide another avenue for grading. I think you can imagine that this did not always entail enlightening conversations and left only a superficial connection between students for mutual learning opportunities. The vast majority of the grading and learning came from homework and projects, and I enjoyed most of the programming topics that were assigned. In particular, the courses in bold above were the best in teaching me how to program. What I didn't enjoy so much was focusing time on... papers?! THREE of them! I mean, come on, I can write a decent paper, but when it comes to math and computer science I thought we were focusing on new skills.

The most glaring issue with UMGC's online courses were the professors. The turn-key structure was such that all sections of a given course, regardless of semester or instructor, were prepared with the exact same syllabus. This would be fine, except that it felt like you had a substitute professor for the entire semester. They fell into 3 categories: hands-on, hands-off confusing, and hands-off easy. The hands-on professors could be very good; they are very active in participating in the discussion posts and take the time to offer insights and constructive criticism to students who are learning new concepts. By contrast, the hands-off professors offer a bare-minimum level of interaction in discussions and are sometimes even unresponsive through email, which is a HUGE problem when you're already not meeting face-to-face. This can result in disastrous consequences with hands-off confusing professors who issue directions with copious spelling and grammatical errors that could be interpreted in multiple ways. On one occasion, a professor emailed me after submitting the final exam saying that I hadn't turned in half of the assignment; I scrambled to confirm that my uploaded pdf included all of the questions, re-uploaded it, and attached it to a reply email... that the professor never bothered to respond to. And then with the hands-off easy professors you can literally get 100% on every assignment, even though you know for a fact that some of those homework answers were wrong or partially incomplete. Not helpful. Save yourself the stress and if you have a choice between professors (especially when registering early), always read their Rate My Professors page.

Regrets (?!)

All in all, I don't regret the courses that I chose, and I'm glad I went with the online option in order to tackle them as quickly as possible. Sure, I wish I had other affordable online schools to choose from, but I did get exposed to a lot of material and threw myself into it. Having said that, there are two things I would have done differently.

  1. Keep schedule expectations low. As I mentioned above, it's not easy to work and school full-time. Let me tell you, your first 30-hour weekend homework blitz will kill all expectations. So from the beginning I would have cut down on "obligations" and ideally completed job search preparations before the semester began, saving applications for when or if I was caught up on schoolwork.
  2. Properly prepare for courses. I maintain that the Java I learned last summer was great practice for my first two/four sessions. Computer Systems and Architecture was a good transition from IT, and the math courses more or less followed logically from Calculus I, to Linear Algebra and Discrete Structures, to Calculus II. Problems arose when I got to Data Structures and Analysis in the third session. One of the pre-requisites was Intermediate Programming, but rather than spend another 44 hours reviewing concepts and creating a new project, I convinced the program chair to let me into the course by saying, "I feel comfortable enough with introductory and intermediate Java to demonstrate those skills." Yes, I am a master of deceit. Then I spent an afternoon with my brother going through the Intermediate Programming syllabus to get an idea of what I was expected to know. The result? Projects in Data Structures were hard as hell, and I had to ask my brother a LOT of questions throughout the semester to get back on my feet. I bought the book Head First Java, but by then it was too late. The programming in the final session went very smoothly, though if I had to do it over again I would have spent more time learning Java up front. Honestly, I'm not sure I could have fit any more time into my schedule from the end of May, so I would have needed to start earlier and either gone and taken those two Programming courses or started learning Java then so I had time to read Head First over the summer. I've since finished the book and can say it absolutely would have helped.
I guess I can't stress too much. In the end, I did Ace all 8 classes and got into graduate school. So, there's that. If you want to replicate my results, take heed and god speed. =) In the meantime, I'll be spending the summer reviewing what I've learned and creating SRS cards to memorize the interesting stuff. Oh, and maybe living life a little bit. If I get around to it.


No comments:

Post a Comment