Sunday, September 18, 2016

Back to the Undergrad

NOTE: This post is a direct successor to Get Your Pre-Master's DIY Degree in CS, where I analyzed what top local graduate programs in CS look for in potential applicants and compiled a list of 8 pre-requisite courses. If you're going to read this, I suggest you take a look at that post first.

As of this writing I am 4 weeks into my first 8 week semester, which means I'm well on my way to completing Sub-Goal 2 (I will prepare for applying to graduate school)!

Here are the conclusions that I drew from the data in the last post:
  1. The 8 courses that are highlighted in yellow, orange, or red are the only ones I will take.
  2. I will take all courses through UMUC, which is not only convenient due to being online but can be done quickly since they offer multiple sessions per semester.
  3. By taking 2 courses at a time, according to UMUC's undergraduate schedule I can complete all 8 courses by May 2017 for around $7668 $8372 (or $2093 per semester).
  4. My projected start date for a master's program is now Fall 2017.
  5. I already have 2 schools I can eliminate: UMBC which asks me to take more than 8 courses (that would require more semesters), and UMD which asks me to apply for Fall 2017 by December 2016 (before I would have completed my pre-reqs).
  6. The 3 schools I will apply to are: Johns Hopkins, Towson, and Georgia Tech.
Following these conclusions, I enrolled in UMUC and began taking courses as of last month, in order to be eligible to begin any graduate program by Fall 2017. To stay on track, I carefully planned each semester so that it would logically fulfill the requirements of the following semesters until all 8 courses were fulfilled. I also made sure to look up each course in the schedule of classes to verify that it was offered during a given semester, and sure enough some courses are only offered during Fall OR Spring. Here is my projected schedule:

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-reqs: CMIS 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)

Java Challenge

You may have noticed that I listed "Java proficiency" under a couple of courses in addition to the pre-req(s). In other words, I don't have the pre-reqs for those pre-reqs (lol), such as CMIS 141 (Introductory Programming) for CMIS 310 in my first semester. I reached out to the head of the Computer Science department at UMUC, and was told "you are welcome to test out of, or provide sufficient evidence of detailed programming skills you possess in Java for entry into these courses... The best way to demonstrate Java skills is to show provide programs you have specifically written. They don't have to be very complex- just something you wrote yourself and are comfortable with discussing." In so many words I told him, "no sweat, I know Java, and I'll write you a program to prove it." Then I realized what I'd done and went, oh shit I gotta (re-)learn Java!

Full disclosure: I have a passing familiarity with Java programming, having taken it 11+ years ago in high school. But my memory is terrible and I never kept up with it, so when I checked a Computer Science AP practice test from the same time period the only thing I recognized was the existence of "If, Else" statements. Not how to do them, just that they exist... this was going to be rough. I started by checking the schedule of classes and finding the syllabus for CMIS 141 (the only difference between syllabi is the professor's contact info at the top). Then I compiled a list of Java concepts that the course covered:
- Standard I/O
- Selection Statements
- Loops
- Nested Loops
- Methods
- Objects
- Arrays
- ArrayLists
- Classes
- Class Methods and Variables
- Strings
- StringBuffers
- Command Line Arguments
- File I/O

Before you start programming in Java, you will need the Java SE Development Kit (JDK) and Eclipse IDE for Java Developers running on your computer. If you need assistance, Windows 10 users can check this video, and Mac users... try your best; my brother had to redirect the Java directory in Terminal, but maybe you'll have better luck. With my tools and list of concepts to learn, I went to my list of free resources and made my way through the Java courses on CodecademySoloLearn, and Udacity (though the last one required more time than I was willing to commit).

Once I programmed my Hello World and tested each of the above concepts, I was ready to write a complete project that would encompass all of them. My (very simple) project was for a fictional gym called Ideal Fitness LLC (since I was looking for a new gym at the time) - managing memberships as well as different gym locations and the available equipment at each. I figured this wouldn't be a program that the typical computer scientist would think to write. :p My brother was an incredible resource for writing this program, and he helped me to think through the structure of a programming project and how to fit it all together. He also patiently explained any concepts I was having trouble grasping, and showed me how to implement them.

Keep in mind that this was all happening while studying for the IT certifications, and I ultimately prepared to submit the project with enough time to register for classes. After approximately 44 hours of preparation in learning Java basics and writing the project code, I sent it in to the CS department chair on 7/22 ("see, told you I know Java") and was informed that it was "more than sufficient for entry into CMIS 310." Wahoo!! Now I just need to do it one more time with CMIS 242 to get into CMSC 350: Data Structures and Analysis in January (so I'll probably aim to submit it in late November).

Current Classes

Fast forward to now. I'm currently taking Calculus I and Computer Systems and Architecture, and these first 4 weeks have been... an adjustment period. It's been 11 years since my last dose of math and CS courses, and 7 years since any courses at all. Week 1: woke up at 9am on Saturday and worked until 5am that night, completely ruining my social plans; week 2: finally finished and submitted homework 30 minutes before it was due on Sunday night; week 3: officially the most boring person during our family weekend at the beach. Finally, in week 4, I think I've started to get the hang of these classes with Monday-Sunday weekly assignments:
-Monday-Wednesday: Readings and videos
-Thursday: Discussion posts
-Saturday morning: Homework
-Sunday: Study and prep

To all my friends who feel like I've been blowing them off lately, this is why. Sorry guys! I'm hoping to have Fridays and Saturday nights available to hang out in weeks and months to come.

After these classes are complete in May 2017, I will have earned the equivalent of a minor in Computer Science. Unfortunately, I've been told that unless I go back for another Bachelor's degree I cannot actually get said minor, but damn it I'll be putting "Minor equivalent in CS" on my resume. And then, graduate school applications here I come!

Now if you'll excuse me, these job applications won't send themselves.

UPDATE: I've finished my classes, and here are my reflections!

Saturday, September 17, 2016

Certified IT Pro Seeks Employment


I'm so close to reaching Sub-Goal 1 (I will work in IT) that I can almost taste it. Mmm, dat sweet victory. UNFORTUNATELY, I'm also so entrenched in the plan that just keeping afloat with house chores, personal health, and marital duties, not to mention recording the journey, has all but fallen to the wayside. Gomen! On this rare occasion that I have a bit of extra time, I better write as much as I can.

On August 15th I passed my second exam and became a dual-wielding, certified IT professional. CompTIA recognizes my A+ and Security+ as equivalent to two years of hands-on experience, and the certs qualify me for entry-level IT positions. So as a celebration of sorts, I took a vacation a couple days later to see what my future could hold.

Another coast, warm weather with a cool breeze and no hint of humidity, and the birthplace of the technical revolution - I found myself in Silicon Valley and the greater Bay area around San Francisco for Jasmin's friend's wedding. Though my time was limited, I managed to visit the Googleplex campus, 1 Infinite Loop at Apple headquarters, and the Computer History Museum, drive through beautiful and legendary Palo Alto, and pass by Facebook and numerous tech giants who call Silicon Valley home. The energy there is unbelievable, and somehow it's fused with that laid-back California attitude; while driving around in SF, I once witnessed a line of cars waiting at a light, without honking, while the car in front took 30 seconds to realize that it had turned green.


Wherever I find myself at the end of this journey, I want to contribute to the exponential revolution that promises to push forward every facet of the human experience. I don't know exactly what I'd like to focus on, and for me that's part of the fun. Study the terrain before carving the path, so to speak. I'm interested in analyzing human psychology, in improving health, and in all kinds of mobile tech. I'm not naive enough to believe that the game will be the same when I enter that world in four years, though if I can learn as much as I can about the fundamentals perhaps my contribution will still be relevant.

All this talk about contribution to a field I've barely stepped foot in. Right now I want to build up a solid resume of education and experience. The education part is coming in another post, but as far as experience goes...

I'm looking for a job.

A programming job? I wish. But I'm not that slick yet. Which brings us back to the IT certifications: as I've explained previously, I want to get my foot in the door in the tech world as quickly as possible, increase my networking with like-minded individuals, and possibly set the stage for a backup career in IT (specifically cybersecurity). My job search hasn't been prioritized as much as I'd hoped, given classes and everything else, so ignore that deadline for now. I'd prefer not to get into the search details quite yet until I can confidently say, "this is how I got the job." How about some cert jutsu in preparation for this step?

In my last post almost two months ago, I described how I got the CompTIA A+ and my plan for getting the CompTIA Security+. You can also refer to this post for information on planning for entry-level IT. Sure enough, I was able to go from start to finish with Security+ in three weeks:
Wk1: 15.5
Wk2: 28.5
Wk3: 5
Total: 49 hours

The second week was a little high, twice as many hours as my prior high score when studying for A+, and requiring consecutive 5 hour days. Why would I do that to myself? I was on a tight schedule and needed to prove a point! In other words, yes it's possible but I'd recommend spreading out your studying if you can afford the extra time. To keep track of my time, I broke it up into 30 min. sessions like this:
-30*4 (8:14pm)
-Left: 2
-Total: 6
From the bottom up, 6 is the number of 30 min. sessions you plan to complete that day; 2 is the number of sessions left to reach your goal; and 4 is the number of sessions you've done so far as of 8:14pm. If you're diligent, TestOut should be more than sufficient in preparing you to pass the CompTIA certification exams. It took me a grand total of 124.75 hours and 954 SRS flashcards to accomplish this feat. And here is the completed goal calendar (in Japanese) for proof:


For those of you interested in the final price breakdown:
2016-05-29 : CompTIA A+ : 398.00 - 39.80 (discount code) = 358.20
2016-06-05 : TestOut A+ : 79.00
2016-07-05 : TestOut A+ : 79.00
2016-07-26 : CompTIA Security+ : 311.00 - 31.10 (discount code) = 279.90
2016-08-05 : TestOut A+ : 79.00
TOTAL : $875.10

Wish me luck on the job front, guys! And if you have any leads, you know where to pass them on to. ;) Here's my updated Profit Plan:
  1. Earn IT certifications.
    1. CompTIA A+ Training Birthline: Sunday, May 29
    2. CompTIA A+ Training Deadline: Thursday, July 21
    3. CompTIA A+ 220-901 Certification Exam: Friday, July 22
    4. CompTIA A+ 220-902 Certification Exam: Friday, July 22
    5. CompTIA Security+ Training Birthline: Monday, July 25
    6. CompTIA Security+ Training Deadline: Sunday, August 14
    7. CompTIA Security+ SYO-401 Certification Exam: Monday, August 15
  2. Find an entry-level IT job (ideally with exposure to programming).
    1. Job Search Birthline: Monday, August 22
    2. Job Search Deadline: Monday, September 19
  3. Take pre-requisite courses online while learning programming on the side.
    1. Pre-req Birthline: Monday, August 22
    2. Pre-req Deadline: Sunday, May 07, 2017
  4. Apply to grad school.
    1. Application Birthline: Wednesday, March 15, 2017
    2. Application Deadline: Monday, May 1, 2017
    3. Program Birthline: Fall 2017
  5. Increase professional programming experience.
    1. Fall 2017
  6. By graduation, I'll have both education and experience.
    1. Program Deadline: 2019-2020???
  7. Profit.
    1. 2020???