Photo Source I've made it to Day 3 of learning the programming language, Swift.  So far, I have to say that I have been enjoying the syntax.  I still type random ";" out of habit, even though I have experience with scripting languages like Lua and Python, I still tend to click the good old ";" out of habit.  There are some features that I found interesting such as the way strings and variables are concatenated using the \() formatting.  At first I found it obnoxious, but when I had to do stuff with the variables, I found this syntax much easier to read and less confusing when manipulating the variables. Another feature that I'm enjoying is the function syntax.  In this particular example, you're able to pass through a series of numbers just by simply using  Int...  I found this a pretty cool and useful feature. [code language="python"] func sum(numbers: Int...) -> Int { var sum = 0 for number in numbers { sum += number } return sum } sum() sum(100, 200, 300) [/code] I am also enjoying that some of the things that I loved about Python are similar in Swift, like the "for" loop syntax.  However, in Swift it's even better, in my opinion, because the loops have brackets as opposed to colons.  The familiarity of brackets always makes me feel welcome in any new language that I'm learning.  Overall, I'm having more fun than I should discovering and learning Swift so far.  Soon, I'll get to the point where I'll begin to experiment with Swift in creating an iOS app.  Stay tuned!
Learning Swift – Day 3

Take a Look
As a part of my Summer's Goal List, I have decided to learn Swift for iOS.  Swift is Apple's relatively new programming language, optimized for iOS and OS X development.  Through figuring out ways to accomplish learning Swift, I found that learning Swift's library was my best bet at learning the new language in a way that would not leave me frustrated.  Every tutorial that I have come across seems to assume that Swift is their target audience's first programming language.  Sitting through the painstakingly frustrating explanations of what a loop is has lead me to realize that reading Swift's API is probably my only way of learning Swift for the time being. Xcode's playground mode makes learning Swift's library a breeze Before I get into Xcode's playground mode, I want to talk a bit about my experience with using Xcode in general.  When I first started to learn C++, my professor wanted us to use Visual Studio so that his students were all using the same IDE.  This made troubleshooting issues a bit easier because we were all using the same environment to code in.  I quickly fell in love with Visual Studio's robust features and used it for all of my C++ projects.  However, recently Microsoft's student developer system fails to validate that I'm a student, so I recently switched to Xcode  for C++.  I found Xcode to be really helpful in learning OpenGL + GLUT and Xcode began to grow on me.  Whenever I used Xcode and created a new project, I would always see "playground" as a file type option and never really understood the difference between a playground file and a project file.  I'd even did a web search and just as I suspected, the playground mode was a way to practice one of the Xcode's supported languages in a rapid manner. In playground mode, you can type your code, Xcode validates the syntax and puts the output immediately to the right of where you're typing.  This allows you to practice code without having to build and run as you go.  I have been able to go through the Swift tutorial book rapidly while practicing and executing the tutorial's "experiments" in order to gain additional understanding of the syntax.  This has been greatly beneficial and what's cooler is that I am able to use comments to organize my code with key words so that I can use my own playground as my own personal API for when I start to develop using Swift.  I've done this while practicing other programming languages, but using the playground functionality makes what happening within the code, abundantly clear.  As simple as this functionality is, I can't imagine that Xcode is the only tool out there with this functionality, but this is my first experience with technology like it and I've been extremely pleased with the results thus far. Here's a screenshot of a snippet of the playground that I've been using for learning Swift: playgroundSwift Overall, I'm really happy that tools such as these exist.  Having the ability to rapidly see the output of my code as I practice and type out the tutorials, have really made learning faster and more rewarding than waiting to rebuild and run code in chunks in order to text functionality.
Xcode’s Playground

Take a Look
If you follow my personal blog, then you already know that I started tutoring about a month ago.  Tutoring has been a rewarding endeavor and I can see me continuing to do it as long as I breathe.  But with tutoring comes a lot of confusion in the techniques used to teach newcomers to programming, such as pseudocode. Pseudocode has its place in technology...  The only time in my studies have I found pseudocode to be useful has been in my software engineering course.  In this course, pseudocode was used to explain snippets of code to executives and customers so that they can get a feel for what the  program would do and to get a bit more technical without using actual code.  In these situations, syntax is not as much of a concern as getting the functionality across to the client. Where pseudocode doesn't belong is teaching people how to code... I understand the desire to take baby steps to teach newcomers how to code.  We do not want to overwhelm them and have them running for the hills before they have even gotten their feet wet.  But I wholeheartedly believe that using pseudocode fosters more confusion than necessary.  I tutor students from 4 different Intro to Algorithm and Design classes.  Some professors have their students translate their code from pseudocode to C code and have them practice it in an IDE.  I find that these students often mix the syntax between the two and it leaves them more confused. Where is the breakdown? In one class, it's like learning two different languages.  If pseudocode is to be used, I personally believe that professors should chuck syntax out of the window.  Let them type whatever they want, as long as they understand the concept, who cares if the student types "Set count to zero", as opposed to "count equals zero".  Let them get the concept that they have to assign a value to a variable without the added issue of worrying about syntax.  Pseudocode should not be it's own language, in my opinion.  Why? because it varies across text books, and even in the same class, it's taught in different ways.  Also, a student can not run pseudocode to check to see if what they did was correct.  For the first week or two, let them logically write out what steps they are taking in the program without fake syntax.  I have found that since they are so caught up on syntax, they skip over the logic generating portions of coding because they are so worried that their professors will take off points from fake code. I suppose I believe that pseudocode is helpful, but only when used as a logic-generating tool in order to get the student thinking about their program without focusing on syntax and actual code.  The other part of learning needs to be using a language that is easy to use.  There are many languages that I think would accomplish this.  I like Python, personally, but I don't care what the language is really, as long as they are learning syntax with an actual language.  An actual programming language should be used to teach the syntax portion of learning to code, not pseudocode.  By using an actual language, the student has access to a developer's API to use as a learning resource.  They should be allowed to learn while using a language that can be compiled in order to get immediate feedback on their errors.  An actual language should be used so that students can do web searches and watch tutorials in order for them to solidify concepts in the way that they learn best. Bottomline Using an actual language to teach syntax is best because the student is then able to play around in an IDE, make changes, and get a feel for how programming works.  Pseudocode, more times than not, leaves students more confused and frustrated.  It was no surprise to me that students were able to pick up on using C much quicker than using pseudocode, and it's not because they learned pseudocode first.  They were more successful with using C, because they were able to get feedback from the compiler, research online, and use developer documentation to correct their errors.  
Using Pseudocode to Teach?

Take a Look
It's been a month since school let out and I have had a chance to recuperate from a vigorous semester full of... Math... Now that I'm not longer seeing integrals in my sleep, I've had the change to devise some set goals to accomplish this summer.  The realization that this will be the last summer where I will have a considerable amount of free time, I decided that it would be best to spend my time wisely.  Although there are no plans of forgoing sleeping in and reading Word of Radiance for hours, I do have a plan to add a substantial amount of productivity to my summer vacation. So, what are my goals, you ask? Well, before I get into my goals, another epiphany was that although I have learned quite a bit in the past couple of months,  I don't really have any way of showing what I've learned.  Apart from cheesy homework assignments, I haven't really had the time to work on any resemblance of a portfolio.  To add insult to injury, my website, at the time, looked like a drunken toddler made it in the midst of a temper tantrum.  In other words, I really have no way to showing what I've learned, nor do I have concrete representations of what I would like to do with my programming knowledge upon graduation. What a nasty web I have woven for myself...  But, this summer I aim to change the status quo.  The first step was to update my drunken toddler website, which I'm in the process of doing now.  But, there are some other major tasks that I really want to get to which are: Unity 5 Training & C# Learning Swift for iOS Learning Android Studio Blender Maya UX Design Foundation Sass I know... a lofty list.  I will probably get to possibly 1-2 things off of this list, but I believe that it's good to have aggressive goals, even if I only get to a quarter of this list, it would be greatly beneficial to me.  Either way,  I plan to blog throughout the summer, sharing my experiences with what I learn.  It should be an interesting ride. :)
My Summer Goal List

Take a Look
  The Euphoric, and over-dramatized story of my PS4 purchase... The day is Black Friday 2014.  There are a zillion deals online for gaming systems, with many deals specifically targeting PS4 systems and games.  My heart skips a beat when I see several games bundled with the PS4 system, for FREE.  But wait!  I can't buy a PS4 now!  I have finals, and lots of school work, and and and... My logical mind reminds me that the deals that were out probably would not be topped until the following Black Friday season (maybe this wasn't THAT logical).  As my fingers clicks away, adding my shipping and payment information, I can't help but become giddy at the prospect of playing a brand new system with amazing graphics.  My mind wanders to happier times of staying up late and killing things in the privacy of my own home.  Finally, I click that bright orange "Confirm Purchase" button and I receive an email confirmation informing me that I would receive my new system in 2 days.
My PS4 Journey…

Take a Look
Ah but first, a brief history of games I've played :) One method that I have always used in the past to relax is playing games.  I love everything about them.  Even though I began years ago as a console gamer, playing systems like atari (yes, I'm old), nintendo, playstation one, game cube, and gameboy.  I was the one that was completely excited when Nintendo created a color version of their Gameboy system (insane)!  I eventually migrated to playing PC games, my first being Diablo II for the PC. Years ago, I started playing World of Warcraft with my ex boyfriend and I had a ton of fun in cooperative gameplay in PVE.  As with any MMO, it is really difficult to be a casual player, usually the game content and social aspects pulls you in making you want to play more and more.  Well, I didn't have much free time so I decided to quit playing. Then enter League of Legends.  League is  a MOBA and is still one of my favorite games and I still play on a regular basis.  What I liked about League is the gameplay but also the ability to play a game or two without a ton of time commitment (for us casual players).  This fit lovely in my schedule because with school and work, I needed something to play that I didn't feel like I needed to put a ton of time into.
My New Addiction: Diablo 3 Reaper of Souls

Take a Look
My epic quest to encounter more math... Math, really?  Yes! I have come to the point in my studies that I feel the need to brush up on my math skills.  I have been reading many resources and on multiple occasions I have discovered that a pitfall some may succumb to is not taking enough math when pursuing a degree in Computer Science.  Apart from this research, many of the books I've been reading mention that although an extensive background in math is not necessarily a requirement, it helps.  Some of these resources even add that the better programmers have backgrounds in Mathematics as well.
Math and Game Design

Take a Look
  What is a MOOC?  Simple, it's a massive open online course, where major universities make lectures and learning materials available to the public.  Ivy league universities such as Harvard and Yale have offered their courses to the public.  There are programs such as Coursera and Udacity that facilitate courses, allowing the general public to take college level courses, for free in most cases.
MOOCs – What’s the hype all about?!?

Take a Look