Category Archives: Learning

Ten Months On

An Update

I am nearly ten months on from starting my journey into the land of computecalendarr science and the very first tentative introduction of myself here on Digital-Doll.

Although I have been quiet here on the site I have been busily beavering away, learning and experimenting and working.  I have met with huge brick walls of frustration and then experienced massive moments of elation during this time.  You know on reality tv shows where they say they’ve been on a “journey”?  I hate it and think it sounds really naff but here I am really and truly feeling the sentiment right now!

Most of my time has been devoted to the CS50x course I started in January, I have now completed (and passed!) nine problem set assignments.

CS50x Grade Book
Very Proudly Presenting my CS50x Grade Book

  These assignments have taken me from getting a computer terminal to print the words “hello, world!” to the screen, right through to to playing around with Google Earth programming a virtual shuttle to pick up and drop off passengers on a map.  I have been learning C language and JavaScript, learned more about HTML and CSS and even dabbled a little with SQL and PHP.  On top of the actual languages I have learned some massively important fundamentals about how to approach problems, create algorithms and functions to make my computer do very magical things.

I feel I am about a million miles from where I started, I remember thinking back then “I don’t know anything, how will I know where to start, what if I don’t get it”.  I felt I was lost in an eternal cycle (akin to the “which came first the chicken or the egg” conundrum) of not knowing what to learn first as everything seemed linked together, not understanding the other terminology / languages / geekery that was referenced making everything seem like a big jumble. 

Well bring on the trumpets…

…I now get it, well a fair bit of what I need to know to progress further.  I can read code snippets and understand what they do.  I know how JavaScript, CSS and HTML work together to make a web page.  I know how to do all manner of strange things (like implement a sort or store data) by writing code.  I feel as I am gaining understanding my fear of failure is diminishing,  I mean if I can get this far surely I can continue to grow, learn and understand.

As a real test the IT Rex wanted us to try out an episode of the Silicon Valley tv series, and sure enough I knew what they were on about, I got the jokes, and in his Yoda-like capacity to my young padawan self my IT Rex husband was pleased.

So what next?

I am about to embark on my final project for CS50x, a tad scary as all the assignment briefs and the video walkthroughs are no more, basically all the wonderful handholding from the CS50 team are gone.  You are on your own (eeeeek!) left to build something, anything you want really, as per the CS50x site:

“The final project is your opportunity to take your newfound savvy with programming out for a spin and develop your very own piece of software. So long as your project draws upon this course’s lessons, the nature of your project is entirely up to you. You may implement your project in any language(s).  All that we ask is that you build something of interest to you, that you solve an actual problem, that you impact your community, or that you change the world. Strive to create something that outlives this course.”

Easy then eh, changing the world…

See you on the flip side (with news of a splendid final project I hope)

Digital Doll

(off to lie down in a darkened room praying the gods of inspiration and innovation bestow enlightenment upon her)…

Coding – it isn’t how you speak it’s what you say

For a bit of a change of scenery I have been tinkering about with Code Academy, codeacademy a site that provides interactive courses that teach you how to code in different languages…… FOR FREE!  So far I have had a play with JavaScript and a bit of php.

I am also about half way through my computer science course (edX’s CS50 Introduction to Computer Science), we are still working in C language but I have got to a point where we are making programs that create windows with graphics in.  My last assignment was to make the game Breakout, you know the one with the bat and a ball and a wall of bricks to destroy?

Break Out
My version of Breakout created in C

I really am enjoying learning to code but there is something more important happening underneath all of this.  I have had a bit of a epiphany / light bulb / trumpety “herald the age of enlightenment” moment.  Coding isn’t about learning a whole language, so much as forming a set of ideas about how to make the computer do what you want it to.  Once you have this idea, you can set about pulling it apart to understand and then input the components that form the idea.  Whether in C or JavaScript or php the inputting seems all rather similar and familiar even though some of the terminology / semantics are different.  It is kind of like introducing yourself in different countries, the words of the language may be unfamiliar, the structure may be different but the basic idea is the same, you refer to yourself (I or my),  include a word for name (or am called), and give your name.

I can’t praise the course CS50x enough, I feel it is really giving me a base of how to think and problem solve.  This is such a positive feeling for me, going back a few months I was really intimidated by the enormity of what there is to learn in this field.   A combination of the confidence the course has given me, a realisation (yet again!) that I don’t have to know or learn every minute detailed thing, just the important bits – the concepts, the ideas, the frameworks rather than masses and masses of information and terminology.   It also helps that the IT-Rex keeps reminding me about this invention called the internet, apparently there are numerous resources on there or something….. Ahem!

I realise this post might be stating the obvious a wee bit but I am just so pleased I have started to get the point and am quite excited about what happens next.

I made it…

…my first week and first assignment -done!

CS50x – Week 0

I rather enjoyed my first week of CS50x.  It was a rather fabulous and novel feeling to be using my brain again, well other than for answering endless “why?” questions from a four and a two year old or using it to decide what to put on the grocery shopping list.  There were new concepts to get my head around; explanations of binary, ASCII and Hexadecimal code, and algorithms.  I found the video lectures and accompanying walkthroughs interesting and didn’t find myself wandering off to la la doodle land too often. kittydoodle The presenters were personable, they spoke in “real” language and used everyday examples to explain the fearsome technical bits – pairs of desk lamps, being switched on or off were used to illustrate binary code.  Warm fluffy feelings of “I might actually be able to do this” ensued.

Problem Set 0 – Scratch

The first assignment was to create my own project using a programming tool called Scratch.  It looked quite frivolous and fun, for a start there is no scary typing of code in to a black terminal type screen.  It is a visual way of coding, using cartoon sprites along with puzzle pieces of code that slot together to form your program.  The Scratch tool was created with children in mind, as a way of teaching them to code.  In a rather sweet twist of fate I had previously watched a TED talk by Mitch Resnick talking about this very tool and how we should be teaching our kids to code. TEDtalk  The basic premise of the talk is that we all learn to read and write without the presumption that we will grow up to be a writer.  It is considered an essential life skill, it enables you to interact with many different pieces of information in many different mediums every single day.  With technology today, and with what our children have access to, doesn’t it make sense that they are able to question, pull apart and analyse, and create themselves?  Learning to code is not just reserved for those who want to grow up to be computer programmers or scientists, it could be just as life enriching as reading and writing.

The assignment informed me that my mission was to have fun with Scratch and create whatever took my fancy (an animation, game, interactive art, anything at all) with some specific criteria (about variables, loops, conditions, using sprites and sounds) in place to demonstrate my understanding of what I had been taught in the weeks lectures.  I made a game:

Monkey Rock Paper Scissors – go and have a play!

Monkey Rock Scissors Paper Game

I passed the first assignment with a perfect score!

Yay!

I would encourage anyone, that might enjoy a tinker, to go and have a look.  Anyone can make an account and play around, it is a really cute tool and is very easy to use (if you want any help feel free to give me a shout).  It is definitely something that the IT-Rex and I will be introducing our little girls to one day (teeny digital dolls in the making!).

Where to start?

It was last September that I started my first tentative steps down the path on this adventure.  I had my few bits of background knowledge; like the basic understanding that computers speak in noughts and ones, I kind of knew how the internet magically beams in to my computer, I could perform the basic moves to be an IT help desk (the famed off and on trick, pulling out wires, plugging in things, installing, removing and so on) and I knew what it meant when the IT-Rex made the joke there’s no place like 127.0.0.1.

So where to start in rounding out and building up my knowledge, how to commence the transformation from mild mannered part-time geek to full on computer nerd?

Lesson 1 – a false start

With all the best intentions I opened my huge book on web design and began the task of learning stuff.  After a few weeks battling bookthrough the chapters on html and css I was able to understand how to mark up a document to be a web page and the (very) basics of how to format it, it wasn’t very exciting or fulfilling, the subject matter quickly became very dry and the novelty of the simple tricks I was able to reproduce wore off very quickly. Not quite the exciting change in direction I had been anticipating.

 

Lesson 2 – if you are trying something different, try something different

The book was a mistake, it is a good book with some valuable information and I’m sure that in the future it will be useful to reference.  I think the very first hurdle of getting started had seemed so huge and I felt very lost in the ever so big wide world of computing so the book had been a familiar safe thing to jump in to, something tangible and structured.  It had not occurred to me for one second that this might be a negative thing that could hold me back.

Luckily I have the IT-Rex.  He spotted my frustration and set me a challenge, he told me to chuck the book to one side and get on and try and do something.  Even better he gave me something to do, he set me a task (I will elaborate on this later) and told me to report back to him on completion.  This was the push I needed to switch my mentality from having to learn something thoroughly, in a fixed way, before diving in to just getting on with it (belly flop style!).  I completed the task, it was fun, it was testing, I found it interesting and there I was done, I had started something (whoop!).

So what next?

I started searching for some online tutorials or courses, something to give me enough direction and provide me with a good base to go from, to then enable me to go off exploring and experimenting.  I needed something that would be a good compromise between the structured book and an interactive challenge.  I also wanted something that I would be able to check my progress and practical tinkerings against, to help me get things right, to explain why they are right and to build experience and understanding to fix things when they do not go right.

I found a computer science course online.  It was through a non-profit group called edX who offer online classes from some quite renowned universities (Harvard, MIT, Berkley).  I signed up for CS50x “Introduction to Computer Science”, which was not only free it promised to cover a whole plethora of topics including; images_course_imageabstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development. Languages including C, PHP, and JavaScript plus SQL, CSS, and HTML.  It was a self paced course, starting January 2014 due to end in December 2014.  There were twelve ‘weeks’ of topics with ten problem sets (assignments) and on satisfactory completion the course promised me my very own certificate from HarvardX.
And so it begins…..exciting!