Welcome to my “Stuff NSCC Demands So I Can Graduate” Portfolio Page! This is where I’ve put all
the stuff that they require that I may never integrate into the ‘real’
portfolio. However, I may did eventually integrate the extended learning
narratives for the three selected work samples (they were useful). I have to
say the skills list was interesting to produce, but in most of the things I
haven’t so much scratched the surface as softly run my finger over the
storefront window. It’s a wonderful list of lies and half-truths.
Short Term |
Long Term |
Get work experience in application development |
Become an entrepreneur |
Find a web application platform to specialize in |
Master a web application platform |
Finish the math drills on Khan
Academy |
Create an engine and framework to enable people to
easily create console-style role-playing games (eg: jRPGs) |
Learn additional programming languages |
Learn additional human languages |
Learn additional programming paradigms (eg:
functional programming) |
Train to become an instructor (“if you can’t do…”) |
Skill |
How Obtained |
HTML, |
Self-taught; WEBD 1000 |
Microsoft Office Access |
|
Basic Networking |
|
Visual Studio |
|
VB. |
PROG 1100, peer tutoring |
SQL |
|
Oracle |
|
Basic Hardware |
|
Unix-like operating systems |
|
Java-like languages |
|
Object-oriented programming |
|
UML |
|
Android development |
|
PHP |
|
MVC architecture |
|
ZEND |
|
MySQL |
|
SQL Server |
|
|
|
Gantt Charts |
|
C++ |
|
Java EE |
|
JavaServer Faces |
|
C# |
|
Fundamental data structures |
|
Fundamental searching and sorting algorithms |
|
Responsive Web Design |
|
Flash Builder |
|
Silverlight |
|
ASP. |
|
LINQ |
|
Python |
Self-taught for PROG 2200 |
Ruby on Rails |
Self-taught for |
Customer service |
Dale Carnegie books; ICOM 3550 |
Project management |
|
The following narratives have now been
integrated into their respective course pages (INET 2005 for the PHP
applications, PROG 2100 for the C++
fraction calculator). The copies here will no longer receive “maintenance”.
In this exercise, we took a database of employees and created a simple CRUD web application in the ZEND PHP framework. It was interesting because we’d previously built a similar PHP application for the same database, but without a framework.
I’ll always remember this assignment because it precipitated my first question on StackOverflow. The ZEND framework removes a lot of the drudgery associated with building forms and replaces it with the frustration of trying and failing to customize the form components to your needs.
There is a lot of boilerplate and housekeeping with ZEND – although I was able to deliver an assignment I was happy with, I don’t have any desire to use ZEND (or PHP!) again. Still, learning to use anything new eats time before it saves time.
For this project, we were required to use PHP to build a working Content Management System from scratch. It was an ambitious project, and planning and time management was critical.
There was a lot of labor involved, because making a back-end pageset to perform CRUD on an entity was almost an assignment in itself, and there were several entity types to manage, including pages, users, articles, and templates.
I built the site in manual MVC, which helped me shore up my MVC conceptions, but the controller was difficult to manage because all of the different types of requests had to pass through it. I don’t think I will try manually implementing MVC again because managing paths and scopes was a nightmare.
The following semester, I got myself learning Django, and the experience of working with MVC in PHP helped me to recognize the model, view, and controller equivalents in Django. I built a poll application following the tutorials (which, though complex, were a breath of fresh air compared to the introductory guestbook tutorial for ZEND), and I didn’t have to write a single line of SQL. You could also extend a basic Django project to become a CMS if you set up the right models and views (or install django CMS).
The intent of this assignment was to show how to overload operators (in C++ code) – the calculator was an optional component for bonus points, and the operators used in the user input are just characters in string – not the programmatic operators we’re talking about overloading (i.e. (re)defining the behavior of).
We worked with objects of a self-made class Rational that had numerators and denominators. We wrote code that allowed us to perform programmatic and mathematical operations on them and get sensible results – e.g. the overloaded “+” operator would add two Rationals together according to the rules for adding fractions.
The calculator was fiendishly difficult because there were all kinds of permutations of the 4 basic operations that had to be parsed correctly, made complicated by the fact that the symbol (/) indicated both division and two parts of a rational. Worse, the symbol (-) is for subtraction as well as indicating a negative integer, necessitating 16 different cases to handle: I had regular expressions with nicknames like “nominus-dualminus” ((n or n/n) - -n/-n) and “trailingminusonly-leadingminusonly” (n/-n - -n/n). Certain expressions like 3/2/3 (is that 3/2 divided by 3 (1/2), or 3 divided by 2/3 (9/2)?) would always be ambiguous and required prompting the user. I learned how to use regular expressions to identify the different kinds of fraction/operation combinations and build up the appropriate Rationals on which to perform the appropriate calculations.
In the end I gained a greater proficiency with regular expressions and using them in C++, and they’re a critical (and, if this program is any indication, oft-neglected) part of a problem-solving toolkit.