Machine Learning

An Introduction in Python3

Having enjoyed writing that perceptron for CS253 way back, I have always thought I needed to explore this subject more. Finally this semester, Spring 2018, Dr. Anderson set up this class and I was able to get in! We are using a new tool, Jupyter Notebooks, which are this really cool way of developing and testing experiments that others can download and run locally or view. It is a little awkward for me to code right there in the cells, but I think I am getting the hang of it and it is really growing on me quickly.

Update

This class is probably going to get a lot more of these updates than others, as I have so much more free time with only three (3) classes ... Anyhow, we have just finished our first assignment and already we are applying Linear Regression and predicting results! This stuff is so cool.

Yet again, I must say that Python is an amazing language. We are using Numpy.py and linear algebra to manipulate the data sets, and it is crazy how easy that makes things.

Update 2

I just wrote a multi-layered neural network! I will link the Jupyter Notebooks for both of these programs below, because this is honestly the coolest thing I have ever coded. Given a data set, the program will divide said data into training and testing sets, learn the data through an activation function, and accurately predict correct results on the other side. It is fascinating!

Update 3

It turns out that there are many activation functions and some are better than others. Dr. Anderson linked us to an interesting article that has been put out for review regarding one specific activation function, that the writers of the paper believe is superior to all others. There are some assumptions I do not necessarily agree with in there, and they do not provide everything I believe the should to support their claims, so I am not convinced they are correct, however it is an interesting read and is certainly worth exploring more.

Update 4

Haha so our next assignment was to code in other activation functions and subsequently test and compare them. However, Dr. Anderson removed the particular function I talked about above, so I still need to test that one independently. I'll link my Jupyter Notebook for this as well, because re-iterating my results here, when I have this awesome tool is just silly, but I definitely recommend checking them out.

Jupyter Notebooks

Linear Regression

Neural Network using a Single Activation Function

Neural Network using Multiple Activation Function

Parallel Programming

More Algorithms

This is hands down my most anticipated class and it has not let me down. Coding in parallel is cool, it is a whole new way of looking at the code, and sometimes you can do all this work only to find that you have gained very little. Then others, two lines of code and my programs execution time halved! I knew this was going to be fun!!

It has actually worked out rather nice to be in the Algorithms class (below) and this one at the same time. The course work coincides really well.

For instance, just the other day we examined the prime sieve Sieve of Eratosthenes in CS320 and the lo and behold our second programming assignment in Parallel Programming is to code just that both sequentially and parallel and compare the two.

Update

I did not update this much, as this semester really kicked my butt. I took a total of five (5) Computer Science classes and a Computer Information Systems class too, and my lowest grade was a B-. Needless to say, I was busy.

However, I did want to come back and say that this class ended up being just as great as I expected it, and I recommend it to everyone. I am now confident saying that I understand and am proficient in OpenMP, MPI, and CUDA parallelization and have begun to apply my skills to some personal projects I am working on. As with most things, the benefit is not always worth the overhead, but even just the process of exploring and discovering that is fun I rarely care.

Algorithms!

Theory and Practice in Python3

So this class is awesome! The instructor started us out by assigning a series of HackerRank tutorials, which I must say was my favorite way of introducing a language yet. I think in all she had us do like 16 introductions ranging from lists and sets to list comprehension and mutations.

I really enjoyed this, as it gave me more exposure to the site. It also allowed me to code and learn with something tangible instead of a recitation or something where they just say, "do this because people do it." Having to work through the problems forced me to actively think about what I should use and why, and when I was lost or unsure I was able to google and find examples that directly related to what I was doing.

Additionally, the GTA for the course provided us with a comprehensive introduction to python that has really come in handy. I have gone back to several times already and we are only a few weeks into the semester.

Update

We have really started getting into the algorithms and I am truly enjoying it more than I thought I would. These are the algorithms we have heard about or utilized in previous classes like Gale-Shapley and topological sort but now we are really getting into the meat of them and seeing how they tick. Especially in the lecture, we are working in groups and analyzing each. Then the programming assignment is to try and code that out in Python3.

Again I really like this. Bringing in the math and formulas and examining why these algorithms work and how they compare to similar ones is an aspect of CS that I did not really think I would enjoy, but I have to say that so far this is one of my favorite classes.

Also, I am in love with Python ... this language is so intuitive and it just makes things so simple to do!!

Update 2

It is the end of the semester and my feelings have not changed at all. This class was great fun and opened me up to a side of CS that I never would have tried, but absolutely love. Going forward, I would like to try and explore this asset further.

GitHub Repo

Update 3

It has occurred to me, in reviewing this repository, that all of the above links are to a private repo and likely do not work for anyone but me. I will try to make this public, but I need to check with the professor first to ensure I will not be accidentally supply later students with solutions or something.

Web Application Development

PHP vs .NET

Given that I had such a fun time learning SQL in the database management class, I decided to take the class that follows it, web app development. Essentially, the professor is going to walk us through development of a fully functioning web application using PHP and a SQL back-end. Then we are to take that same site and develop it in .NET and compare the two.

I am really excited to be able to see how these parts all fit together and to be able to utilize my SQL knowledge. It should be a really great experience.

Update

About half way through and my group just submitted our php version of our website!

I am not at all happy with the aesthetics of the site, we left that part of the project in the hands of one of the students in the group, and she really dropped the ball. However, that was not really the focus of the project and is really inconsequential.

The important part, the SQL database management and php functionality, on the other hand is perfect. One can login, register, send and receive (view) messages, there are admin pages and public pages, and all the changes get updates in the SQL server on the back-end.

I do feel like I have done pretty much all the coding work for my team, so I am going to try and assign roles to my team members to ensure they are helping and not just watching me code.

Update 2

Last week of the semester and I can definitely say that I prefer to use .NET over PHP. They are both great to get the job done, but the GUI and drag and drop capabilities associated with .NET make it so much easier to set things up and tie them to the database. It really speeds up development and simplifies the process. I am not a huge fan of giving Microsoft money or supporting them really at all, but I have to admit that they have done well with this environment.

Our website for the .NET portion could have admittedly been better. After assigning roles and tasks to the team, productivity and individual participation did increase, however we had one member in particular who just did not do it. Luckily, we were able to come together as a team the day before and catch up on most of the things that were not done, but there were still a few features that should be in that simply are not.

Update 3

I just received my final grade in the course, and I got a 'B', which honestly sucks. I missed it by literally a few points (story of my life). I am 100% confident that if I had just done what I did for the PHP portion, and just code the whole thing myself, I would have gotten an 'A' but I am actually ok with taking a 'B'. I know that I understand both languages efficiently and am confident developing in either. I also know that those individuals really only hurt themselves by not participating.

It does affect my GPA and it is really hard to take a 'B', but I do think that I did the right thing and am happy with my decision. I will probably go back over the summer and fix all of the broken things and clean up the sites so that I am happy showing them off to everyone.

Update 4

It seems that the Professor for this class is extremely efficient and has already cleaned up the database and removed our websites, which means that I am going to have to rebuild them on my own SQL server and host them personally. Which is fine, but means that the links I had up here are no longer valid, and until I can find the time to do this, I cannot show off these sites.

I will update this section as soon as I have a working copy of these up somewhere though.

Structured Query Language - SQL

SELECT FROM WHERE

My introduction into SQL begins this semester! I am taking Business Database Systems which, from the syllabus, seems to be pretty much entirely focused on SQL. So awesome!

I have absolutely no experience in databases, including the free SQL one dreamhost gives me with this web-site. Frankly, up until now, I have completely avoided SQL or anything to do with databases, and it is high time I stop that.

Update

This is actually really really cool! The last few weeks we have been focused on Lucid Chart and building standard diagrams using Unified Modeling Language (UML).

They are kind of like a flow model but for your database. They are also really nice because you can see the entire database in a single glance, with primary keys and foreign keys and everything.

Update 2

So we are nearing finals, and I have to say that I really enjoyed this class. I can confidently say that I am proficient in SQL and I really learned a ton from this course. Plus now I can finally start doing more with my site. I do think I would like to explore the language more, but for an introductory class, I think it really gave me a solid understanding of the language.

I definitely do think it helps to have a coding background too. A lot of my colleagues that weren't CIS or CS majors struggled with this class.

Machine Learning in C++

Hands down the coolest thing I have ever coded

Holy cow this thing is awesome! Our assignment this week was to code a single-layer perceptron that takes a histogram of images and learns to classify them. So actual machine learning in C++ working inside of a program that I wrote. That is pretty amazing.

I honestly cannot wait to see what the professor has us doing with this program in the end. I suspect that this perceptron is going to learn and then we are going to feed it new data and maybe categorize the images or something. That is where is seems like it is all going at least. Either way it is amazing that we can do this with such a simple algorithm

Update

I was right, well kinda. We did have to categorize the images and cluster them based on how similar they were, which is what I guess. However, I think the real meat of the assignments and the honest goal was to get us to utilize different clustering algorithms and really actually feel the need to encapsulation.

Ultimately, Dr. Draper gave us four different ways to examine and modify the clusters prior to utilizing the perception (still the coolest thing ever) and then had us analyze each approach. The results were nearly the same, but again I suspect the true reason for this was the inheritance and encapsulation. Someone who failed to create a parent class and inherit likely ended up writing the same code four different times, changing like twelve words.

A Fully Functioning LC3 System...Overnight?

I have done it, but only just barely

As always I waited until the absolute last possible time to start the project this week, and holy cow was that a mistake. The assignment was to code a fully functioning LC3 system, from scratch, in C. Which was not easy by any means. Especially because I gave myself less than 24 hours to do it in.

I found the code itself extremely easy to follow and once I finally got started, it all just kind of fell into place. The professor did provide us with some code for a few of the hardest sub-routines to get us going, but not many.

It was honestly a blast to do though! The process was a great learning experience too. It gave me some amazing insight into how assembly code works and what is really going on under the hood.

My only regret is that I waited so long to start the darn thing. I did not get to enjoy the coding process much at all, because I was so stressed that I was not going to get done on time. Next time, I start it the day the professor assigns it.

Motivation

The CS270 course at CSU combines C programming, hardware (gates and circuits) and LC3 assembly language. It is taught using the book A Introduction To Computing Systems by Patt and Patel. The course is taken at the sophmore level and students have two semesters experience with Java programming. Students are expected to be able to write programs with declarations, loops, conditionals, methods, etc. that are implemented in multiple files. Therefore, the C programs are designed to emphasize features they have not likely seen in Java.

Writing an LC3 simulator and/or assembler is a "larger" scale project that is appropriate for CS270. In the case of the simulator, the sophisticated Tcl GUI and gdb-like command line UI were preserved so that the student's simulator would include those features. Many assignments for CS270, including LC3 assembler and simulator, may be found here.

LC3 Documentation

Side note

This particular program does not show up in my portfolio anywhere as I am confident the professors re-use this assignment and I do not want to accidentally provide solutions

Fortress Forever Payload 2015

base_payload_2015.lua, ff_ksour_payload.bsp and ff_ksour_payload.vmf have been RELEASED

I have gone live with the payload version of ksour that I have been working on for a few weeks now. Everything has been put up on the Fortress Forever forums, and should hopefully be on servers soon.

I have not really been able to get a solid playtest, since the initial one that had TONS of problems. So, I am really excited to see people's reactions once they have gotten a chance to play through everything.

I released all of the train yard assets, as well, in hopes that some other mappers will be able to modify/create some more payload maps for Fortress Forever. I would really like to see avanti, napoli, and palermo get a payload version at the very least!!

Models update

All of the models have been updated!!

As of now, 4/12/2015, all of my models that are currently available for release have been added to the appropiate areas of the site. Here is a brief outline of each:

Cell(s)

A model of a Fortress Forever Cell, a type of ammo that is used primarily used by the engineer to build his buildables. I made this model for use in ff_alchemy to represent an "ammo bag" that only gives out cells and supplies necessary to build and NOT health, armor, or grenades. Comes in RED, BLUE, and neutral YELLOW skins.

Pallet

A model of a wooden pallet. Used for stacking things in a warehouse type setting. This model was also created for use in ff_alchemy, as a part of the map details.

Steamie RGB

A model of a steam engine. This was created for use in a payload gametype adapted to Fortress Forever. The model comes in RED, BLUE, and neutral GREEN skins.

Train Tracks

A set of train tracks created for use with the steam engine model. There are several different sizes and styles to allow for positioning in anyway needed.

ff_hellion_classic RELEASED

Finally!!

Same deal as faf, I decided to go ahead and finalize this map seeing as it has been on my computer for years and nothing has been changed or brought up. I did modify it a tiny bit as well, but again nothing game changing was done.

CHANGELOG:

ff_mulch_faf RELEASED

Finally!!

After like 6 years of carying this map around on my computer in a beta stage, I have finally decided to just box it up and release it!! I did change a few of the nagging things that remained, however, nothing game changing has been done to the map whatsoever.

CHANGELOG: