Madison College’s Two Year Degree Curriculum

I have just realized that this blog may be read by people who are not current or former students of Madison College/MATC, so I am at this point going to give a brief overview of the curriculum to put some of my posts in perspective.

There are two Computer Programming degrees at MATC. They both fundamentally have the same curriculum, it is just more difficult to eliminate a program than it is to create one, so for all intents and purposes, there is one Computer Programming degree.

This is a four semester degree. There are some general educational classes required, like an English and a math. There is some study of databases and query languages plus an overview of web development with HTML and XML.

The part that is most pertinent to my posts are the programming language classes. Each student in their first semester takes and Introduction to Programming class. When I took this class in 2010, we were learning programming using JavaScript. This is so that students can learn about arrays and functions and conditionals before progressing to a more specialized course of study.

After this there are several languages offered and they are each three semesters long. When I began in 2010, there were three languages: Java, PHP, and VB.Net. Each of these had an introductory to that language, an advanced class in the language, and a class on some subset of the language. Java had Enterprise Java for it’s final class, VB.Net had ASP.Net.

In Fall 2012, MATC began offering a Mobile Development degree in place of one of the two programs I mentioned at the beginning of the post. MATC had offered iPhone development as a post-graduate elective and certificate, but these proved so overwhelmingly popular that they were brought in as an option for the degree program.

The first semester for the iOS class begins with “Introduction to C and Objective-C”. It then progresses to the “Intro to” and “Advanced” iOS classes. Android is also offered as an intro and an advanced after first taking the introductory Java class.

For the iOS classes we are using the Big Nerd Ranch books. For the Objective-C class we used the Big Nerd Ranch book about C and Objective-C. Right now, for this class and the advanced class, we will work through their iOS development book.

For the Introduction to Java class last semester we used Head First Java. This semester we are using the teacher’s slides and directly utilizing the Java API.

I have taken every single introductory programming class currently offered during the time I was here. I kept having issues that caused me to either drop the advanced version of a language or not progress past the intro.

This is the first semester I anticipate completing the second semester of three of at least one language. I am focusing on Advanced Java and Intro to iOS.

This is some background if I talk about what came before and what will come after. I am approximately a third of the way through my various language tracks and I am going to attempt to find employment for iOS.

Madison has a very large Java community due to organizations like American Family. It also has a large VB.Net community. I am learning Java as a back-up in case iOS does not work out.

So this is just a quick overview of the curriculum and my place on its path.

Where’s the Click?

Okay, I have pinpointed my source of confusion in completing the Rectangle project for iOS class.

If this assignment were slightly different, if instead of having the triggering event be a shake but a button click, I would be able to conceptualize this. When you create a button object, you can create a method called IBAction to do something when the button is clicked. So I would create a method that instantiates a rectangle with random parameters to be triggered when the IBAction gets called when the button is clicked.

So where is the click? I know that the phone registering that is being shaken is also an action, but as of this moment I am not aware of there being a specific method that is called when this event is triggered. I think there are a series of methods that get called, but when I look at them I feel like I don’t understand what it is that they are doing precisely.

So I have isolated the source of my confusion. Now I need to switch mental gears and work on my Java project.

Onward and upward.

The Emperor has no Code

So, as I mentioned in my first post, I attended my first professional conference this past weekend, Snow*Mobile. It was glorious! I was awake and out of the house from 5:30 in the morning to 11:00 at night on Friday seeing lots of cool things and talking to a bunch of amazing people.

But, as my mother says, when you dance you have to pay the fiddler. I spent all my time and energy doing that last week and I am behind on my homework. I did not look at the assignment that was due yesterday until about six hours before it was due.

I worked on it but I was horribly confused. The assignment is to create an iOS app that makes a random rectangle on the screen. The rectangle’s size, color, and position need to be random.

I approached this like it was a Java project. I understood the principle behind what is going on. I need to create a rectangle class that defines a rectangle which has random properties attached to its size, color, and position and then I have to instantiate an instance of this every time the device shakes.

But then I got lost. Where does this get called? I can make a class that does these things, but where does it go? Am I fundamentally not realizing some large chunk of information?

So I go to class not done, but determined to figure out what I did wrong. I am sitting in the hall waiting for Eric the teacher to come. I look around me and everyone is on their Apple laptops.

I don’t say anything because I don’t want anyone to know I didn’t figure it out. I feel miserable and stupid and contemplate my existence on this planet.

Then, suddenly, I hear a whisper down the hallway, “…Hey, did anyone get this to work?”

“No.”

“No.”

“Trying to get it working right now…”

This instantly makes me feel better. I am not abnormally dumb! Other people are having trouble too!

It turns out we all did the exact same thing wrong. We all started with an empty project and we were supposed to open a single view application. I know we could have added the view later, but we are all still starting out and it was enough of a stumbling block that we all got tripped up.

I pleaded for more time on the project because I spent all my free time at the conference. This is the only reason that will fly with Eric, so I have a reprieve.

I have until tomorrow to get this working. I supposed I should work on it instead of updating my blog…

I am rolling the problem over in my head and letting my thoughts percolate. I am not procrastinating. Not really.

…Maybe a little.

Red Queen's Race

Welcome to the Red Queen Coder

This past weekend I went to my first professional programming conference. It was Snow*Mobile 2013 in Madison, WI. I have been studying programming for the last few years, but this was my first opportunity to rub elbows with the people who will be a part of my professional community.

Besides learning about programming techniques, I also learned quite a bit about how the online community for programmers works. I learned the power of Twitter and GitHub. I also figured out I should create a blog.

I have tried doing them in the past, but I was never sure about what it would be about or why anyone would read it!

I now know that I am going to write about my learning process for becoming a programmer.

I am 31 years old. The first line of real code I ever wrote was in 2008. It was in Perl and it was the obligatory “Hello World!” program. This wasn’t the program that got me hooked on programming, it was a program that created an array and printed out each element of the array. It did not work immediately and I had to look through the code several times to figure out why it didn’t work.

When I finally got it to work I felt this awesome rush. I did it! I made it work! I tamed the beast and bent it to my will! I am a god!

I was hooked.

I am sure anyone reading this blog has had this same experience. Many of you probably had it at a younger age than I did. I was 27 when I discovered programming. I don’t know if this would still be as hard if I tried to learn it younger or if it would be this hard no matter what.

So this is a document about my journey through programming. I probably won’t provide any insight to experienced programmers about how to code, but I hope to give some insight into the types of struggles that exist for someone learning this for the first time and trying to find their place in this crazy, wonderful world.

The name of my blog comes from Alice Through the Looking Glass. The characters in this book are based on chess pieces, and the Red Queen is the non-White queen on this particular chess board. Alice sees the Red Queen running as fast as she possibly can. Alice asks where she is trying to get to by running so fast, and she says that she is simply trying to stay in one place, that if she stops running she will fall behind.

I feel this is an apt analogy for anyone trying to learn Objective-C. The language changes so fast that you have to learn as fast as you can just to keep up with the changes!

So welcome to The Red Queen Coder. Enjoy!