Tag Archives: CS50x

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.